{
  "release": "0.12.7",
  "binary_sha256": "45a7ae62c66c15693790de1905b72502b75e7889682e4e58cbb4e88756ba6879",
  "source_commit": "192e590345c6a4bf1ef8f72b043b318084ea84d6",
  "scope": "Recursively advertised public command help; no operational commands executed; hidden commands/flags need separate source inspection",
  "commands": [
    {
      "command": "sonny",
      "path": [],
      "summary": null,
      "usage": "  sonny [flags]\n  sonny [command]",
      "aliases": [],
      "children": [
        {
          "name": "a2a",
          "summary": "Agent-to-Agent (A2A) protocol commands"
        },
        {
          "name": "arch",
          "summary": "Architecture DSL evaluation"
        },
        {
          "name": "bench",
          "summary": "Benchmark harnesses for `sonny recipe eval` / `sonny recipe optimize`"
        },
        {
          "name": "canary",
          "summary": "Embedded Canary: requirement migration and test evidence"
        },
        {
          "name": "capabilities",
          "summary": "Report which toolchain capabilities this project needs and which are usable"
        },
        {
          "name": "catalog",
          "summary": "Manage the installable model-catalog registry"
        },
        {
          "name": "commitmsg",
          "summary": "Validate commit messages against the Conventional Commit + work-item policy (ENG-4428)"
        },
        {
          "name": "completion",
          "summary": "Generate the autocompletion script for the specified shell"
        },
        {
          "name": "config",
          "summary": "Manage configuration"
        },
        {
          "name": "conformance",
          "summary": "Run the conformance harness, qualification matrix, and release dossier"
        },
        {
          "name": "context",
          "summary": "Inspect, validate, and assemble context-efficiency data"
        },
        {
          "name": "context-stats",
          "summary": "Summarize context-efficiency metrics for a session or time range"
        },
        {
          "name": "context-validate",
          "summary": "Verify context-efficiency invariants for a session"
        },
        {
          "name": "control",
          "summary": "Inspect Sonny's authority control plane"
        },
        {
          "name": "credentials",
          "summary": "Inspect credential resolution and manage the OAuth credential migration to the credential broker"
        },
        {
          "name": "cue",
          "summary": "Plan, import, run, analyze, and report context-use evaluations"
        },
        {
          "name": "editor-rpc",
          "summary": "Serve a JSON-RPC editor client of the supervisor over stdin/stdout"
        },
        {
          "name": "freeze",
          "summary": "Contain a tenant with a signed freeze epoch"
        },
        {
          "name": "help",
          "summary": "Help about any command"
        },
        {
          "name": "hooks",
          "summary": "Inspect and validate the session hooks configuration"
        },
        {
          "name": "init",
          "summary": "Initialize sonny's directories and example config"
        },
        {
          "name": "isolation",
          "summary": "Inspect and verify session isolation"
        },
        {
          "name": "lsp",
          "summary": "Inspect and validate Language Server Protocol configuration"
        },
        {
          "name": "mcp",
          "summary": "Inspect resolved MCP server and tool configuration"
        },
        {
          "name": "mcp-server",
          "summary": "Run Sonny tools or a traced external MCP proxy over stdio"
        },
        {
          "name": "mesh",
          "summary": "Distributed mesh session management"
        },
        {
          "name": "models",
          "summary": "Inspect and manage model categories, fitness, and pricing"
        },
        {
          "name": "policy",
          "summary": "Validate, inspect and control DPolicy decision policies"
        },
        {
          "name": "precommitci",
          "summary": "Run the authoritative CI pre-commit/commit-range gates (ENG-4429)"
        },
        {
          "name": "prompt",
          "summary": "Display the rendered system prompt for a recipe"
        },
        {
          "name": "recipe",
          "summary": "Manage recipes and git-backed recipe sources"
        },
        {
          "name": "routing",
          "summary": "Inspect routing decisions and evaluation evidence"
        },
        {
          "name": "run",
          "summary": "Run interactive chat with a prompt recipe"
        },
        {
          "name": "session",
          "summary": "Run deterministic full-session evaluation and optimization"
        },
        {
          "name": "supervisor",
          "summary": "Manage the supervisor daemon: ensure, serve, status, stop"
        },
        {
          "name": "tools",
          "summary": "List and manage available tools"
        },
        {
          "name": "trace",
          "summary": "Inspect conversation traces without opening the JSONL files by hand"
        },
        {
          "name": "training",
          "summary": "Aggregate and export conversation traces as training data"
        },
        {
          "name": "update",
          "summary": "Manage signed Sonny application updates"
        },
        {
          "name": "variant",
          "summary": "Sync and inspect upstream model-variant bundles"
        },
        {
          "name": "version",
          "summary": "Print version information, the license, the changelog, or SCA build info"
        },
        {
          "name": "workspace",
          "summary": "Grant, revoke, or inspect workspace trust"
        },
        {
          "name": "worktrees",
          "summary": "Manage the Git worktrees Sonny creates for delegated child agents"
        }
      ],
      "flags": [
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for sonny",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--version",
          "shorthand": "-v",
          "type_as_displayed": null,
          "description": "version for sonny",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Flags"
        }
      ],
      "help": "sonny is an interactive CLI tool for testing and running prompt recipes\nwith various LLM providers. It supports Language Server Protocol (LSP) integration,\nagent management, and comprehensive tool execution.\n\nUsage:\n  sonny [flags]\n  sonny [command]\n\nAvailable Commands:\n  a2a              Agent-to-Agent (A2A) protocol commands\n  arch             Architecture DSL evaluation\n  bench            Benchmark harnesses for `sonny recipe eval` / `sonny recipe optimize`\n  canary           Embedded Canary: requirement migration and test evidence\n  capabilities     Report which toolchain capabilities this project needs and which are usable\n  catalog          Manage the installable model-catalog registry\n  commitmsg        Validate commit messages against the Conventional Commit + work-item policy (ENG-4428)\n  completion       Generate the autocompletion script for the specified shell\n  config           Manage configuration\n  conformance      Run the conformance harness, qualification matrix, and release dossier\n  context          Inspect, validate, and assemble context-efficiency data\n  context-stats    Summarize context-efficiency metrics for a session or time range\n  context-validate Verify context-efficiency invariants for a session\n  control          Inspect Sonny's authority control plane\n  credentials      Inspect credential resolution and manage the OAuth credential migration to the credential broker\n  cue              Plan, import, run, analyze, and report context-use evaluations\n  editor-rpc       Serve a JSON-RPC editor client of the supervisor over stdin/stdout\n  freeze           Contain a tenant with a signed freeze epoch\n  help             Help about any command\n  hooks            Inspect and validate the session hooks configuration\n  init             Initialize sonny's directories and example config\n  isolation        Inspect and verify session isolation\n  lsp              Inspect and validate Language Server Protocol configuration\n  mcp              Inspect resolved MCP server and tool configuration\n  mcp-server       Run Sonny tools or a traced external MCP proxy over stdio\n  mesh             Distributed mesh session management\n  models           Inspect and manage model categories, fitness, and pricing\n  policy           Validate, inspect and control DPolicy decision policies\n  precommitci      Run the authoritative CI pre-commit/commit-range gates (ENG-4429)\n  prompt           Display the rendered system prompt for a recipe\n  recipe           Manage recipes and git-backed recipe sources\n  routing          Inspect routing decisions and evaluation evidence\n  run              Run interactive chat with a prompt recipe\n  session          Run deterministic full-session evaluation and optimization\n  supervisor       Manage the supervisor daemon: ensure, serve, status, stop\n  tools            List and manage available tools\n  trace            Inspect conversation traces without opening the JSONL files by hand\n  training         Aggregate and export conversation traces as training data\n  update           Manage signed Sonny application updates\n  variant          Sync and inspect upstream model-variant bundles\n  version          Print version information, the license, the changelog, or SCA build info\n  workspace        Grant, revoke, or inspect workspace trust\n  worktrees        Manage the Git worktrees Sonny creates for delegated child agents\n\nFlags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n  -h, --help                   help for sonny\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -v, --version                version for sonny\n  -C, --workdir string         working directory (default \".\")\n\nUse \"sonny [command] --help\" for more information about a command.\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny a2a",
      "path": [
        "a2a"
      ],
      "summary": "Agent-to-Agent (A2A) protocol commands",
      "usage": "  sonny a2a [command]",
      "aliases": [],
      "children": [
        {
          "name": "call",
          "summary": "Send a single SendMessage RPC to a remote A2A agent"
        },
        {
          "name": "card",
          "summary": "Print the A2A AgentCard sonny would advertise"
        },
        {
          "name": "serve",
          "summary": "Serve sonny as an A2A endpoint (jsonrpc + rest + sse + discovery)"
        }
      ],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for a2a",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Serve sonny as an A2A agent, render its AgentCard, or call a remote A2A agent.\n\nUsage:\n  sonny a2a [command]\n\nAvailable Commands:\n  call        Send a single SendMessage RPC to a remote A2A agent\n  card        Print the A2A AgentCard sonny would advertise\n  serve       Serve sonny as an A2A endpoint (jsonrpc + rest + sse + discovery)\n\nFlags:\n  -h, --help   help for a2a\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n\nUse \"sonny a2a [command] --help\" for more information about a command.\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny a2a call",
      "path": [
        "a2a",
        "call"
      ],
      "summary": "Send a single SendMessage RPC to a remote A2A agent",
      "usage": "  sonny a2a call [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--allow-insecure-token",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "allow sending the --token-file token over plain http:// to a non-loopback host (isolated networks only)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--card",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "fetch the remote AgentCard instead of sending a message",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--discovery-base",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "remote base URL for --card",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--endpoint",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "remote A2A JSON-RPC URL (e.g. http://host:port/a2a/jsonrpc)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for call",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--text",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "message text (default \"hello\")",
          "default_as_displayed": "\"hello\"",
          "group": "Flags"
        },
        {
          "name": "--token-file",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "file holding the bearer token the remote a2a serve --auth-token-file requires",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Send a single SendMessage RPC to a remote A2A agent\n\nUsage:\n  sonny a2a call [flags]\n\nFlags:\n      --allow-insecure-token    allow sending the --token-file token over plain http:// to a non-loopback host (isolated networks only)\n      --card                    fetch the remote AgentCard instead of sending a message\n      --discovery-base string   remote base URL for --card\n      --endpoint string         remote A2A JSON-RPC URL (e.g. http://host:port/a2a/jsonrpc)\n  -h, --help                    help for call\n      --text string             message text (default \"hello\")\n      --token-file string       file holding the bearer token the remote a2a serve --auth-token-file requires\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny a2a card",
      "path": [
        "a2a",
        "card"
      ],
      "summary": "Print the A2A AgentCard sonny would advertise",
      "usage": "  sonny a2a card [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--base-url",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "externally reachable base URL (default \"http://localhost:8080\")",
          "default_as_displayed": "\"http://localhost:8080\"",
          "group": "Flags"
        },
        {
          "name": "--description",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "agent description (default \"sonny pack-driven coding agent\")",
          "default_as_displayed": "\"sonny pack-driven coding agent\"",
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for card",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--name",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "agent name (default \"sonny\")",
          "default_as_displayed": "\"sonny\"",
          "group": "Flags"
        },
        {
          "name": "--push",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "advertise push-notification capability",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--streaming",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "advertise streaming capability (default true)",
          "default_as_displayed": "true",
          "group": "Flags"
        },
        {
          "name": "--version",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "agent version (default \"dev\")",
          "default_as_displayed": "\"dev\"",
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Print the A2A AgentCard sonny would advertise\n\nUsage:\n  sonny a2a card [flags]\n\nFlags:\n      --base-url string      externally reachable base URL (default \"http://localhost:8080\")\n      --description string   agent description (default \"sonny pack-driven coding agent\")\n  -h, --help                 help for card\n      --name string          agent name (default \"sonny\")\n      --push                 advertise push-notification capability\n      --streaming            advertise streaming capability (default true)\n      --version string       agent version (default \"dev\")\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny a2a serve",
      "path": [
        "a2a",
        "serve"
      ],
      "summary": "Serve sonny as an A2A endpoint (jsonrpc + rest + sse + discovery)",
      "usage": "  sonny a2a serve [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--auth-token-file",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "file holding the bearer token every request but the agent card must send (Authorization: Bearer <token>); required with --shell-mode",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--base-url",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "externally reachable base URL for the AgentCard (default \"http://localhost:8080\")",
          "default_as_displayed": "\"http://localhost:8080\"",
          "group": "Flags"
        },
        {
          "name": "--bind",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "address to listen on (default \":8080\")",
          "default_as_displayed": "\":8080\"",
          "group": "Flags"
        },
        {
          "name": "--deny-tool",
          "shorthand": null,
          "type_as_displayed": "stringArray",
          "description": "with --shell-mode: tool handle the shell-mode permission gate must refuse even though --shell-mode grants it (repeatable; deny wins)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for serve",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--isolation-assurance",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "minimum shell-mode isolation assurance",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--isolation-backend",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "required shell-mode isolation backend",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--isolation-machine",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "absolute trusted isolation machine configuration for shell mode",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--isolation-policy",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "absolute trusted isolation policy file for shell mode",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--llm-api-key",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "LLM provider API key",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--llm-base-url",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "LLM provider base URL",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--model",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "LLM model id (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--name",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "advertised agent name (default \"sonny\")",
          "default_as_displayed": "\"sonny\"",
          "group": "Flags"
        },
        {
          "name": "--no-auth",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "permit unauthenticated requests (dev only; refused with --shell-mode)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--no-auth-unsafe-remote",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "acknowledge and allow unauthenticated A2A requests on a non-loopback address",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--provider",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "LLM provider id (openai | openai-compatible) (default \"openai-compatible\")",
          "default_as_displayed": "\"openai-compatible\"",
          "group": "Flags"
        },
        {
          "name": "--shell-mode",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "interpret every SendMessage prompt as a shell command (mesh-exec orchestration)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--shell-mode-unsafe-remote",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "acknowledge and allow --shell-mode to bind a non-loopback address; shell-mode executes incoming A2A prompts as shell commands and must only be exposed off-loopback in an isolated, authenticated deployment",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--system-prompt",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "system prompt applied to every turn",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Serve sonny as an A2A endpoint (jsonrpc + rest + sse + discovery)\n\nUsage:\n  sonny a2a serve [flags]\n\nFlags:\n      --auth-token-file string       file holding the bearer token every request but the agent card must send (Authorization: Bearer <token>); required with --shell-mode\n      --base-url string              externally reachable base URL for the AgentCard (default \"http://localhost:8080\")\n      --bind string                  address to listen on (default \":8080\")\n      --deny-tool stringArray        with --shell-mode: tool handle the shell-mode permission gate must refuse even though --shell-mode grants it (repeatable; deny wins)\n  -h, --help                         help for serve\n      --isolation-assurance string   minimum shell-mode isolation assurance\n      --isolation-backend string     required shell-mode isolation backend\n      --isolation-machine string     absolute trusted isolation machine configuration for shell mode\n      --isolation-policy string      absolute trusted isolation policy file for shell mode\n      --llm-api-key string           LLM provider API key\n      --llm-base-url string          LLM provider base URL\n      --model string                 LLM model id (required)\n      --name string                  advertised agent name (default \"sonny\")\n      --no-auth                      permit unauthenticated requests (dev only; refused with --shell-mode)\n      --no-auth-unsafe-remote        acknowledge and allow unauthenticated A2A requests on a non-loopback address\n      --provider string              LLM provider id (openai | openai-compatible) (default \"openai-compatible\")\n      --shell-mode                   interpret every SendMessage prompt as a shell command (mesh-exec orchestration)\n      --shell-mode-unsafe-remote     acknowledge and allow --shell-mode to bind a non-loopback address; shell-mode executes incoming A2A prompts as shell commands and must only be exposed off-loopback in an isolated, authenticated deployment\n      --system-prompt string         system prompt applied to every turn\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny arch",
      "path": [
        "arch"
      ],
      "summary": "Architecture DSL evaluation",
      "usage": "  sonny arch [command]",
      "aliases": [],
      "children": [
        {
          "name": "advise",
          "summary": "Report architecture style, coupling and complexity as advice"
        },
        {
          "name": "eval",
          "summary": "Run the bootstrap-only architecture-DSL promotion gate"
        },
        {
          "name": "requirements",
          "summary": "Check that every requirement token has implementation and test evidence"
        }
      ],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for arch",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Architecture DSL evaluation\n\nUsage:\n  sonny arch [command]\n\nAvailable Commands:\n  advise       Report architecture style, coupling and complexity as advice\n  eval         Run the bootstrap-only architecture-DSL promotion gate\n  requirements Check that every requirement token has implementation and test evidence\n\nFlags:\n  -h, --help   help for arch\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n\nUse \"sonny arch [command] --help\" for more information about a command.\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny arch advise",
      "path": [
        "arch",
        "advise"
      ],
      "summary": "Report architecture style, coupling and complexity as advice",
      "usage": "  sonny arch advise [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--arch",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "optional .arch document to classify",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--complexity-threshold",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "report functions at or above this cyclomatic count (default 20)",
          "default_as_displayed": "20",
          "group": "Flags"
        },
        {
          "name": "--fan-out-threshold",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "report packages at or above this external import count (default 12)",
          "default_as_displayed": "12",
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for advise",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "emit the report as JSON",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--max-edges",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "maximum edges to report (default 40000)",
          "default_as_displayed": "40000",
          "group": "Flags"
        },
        {
          "name": "--max-files",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "maximum source files to walk (default 8000)",
          "default_as_displayed": "8000",
          "group": "Flags"
        },
        {
          "name": "--root",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "source tree to analyze (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Report architecture style, per-package external fan-out and per-function cyclomatic complexity over a source tree, plus every edge the analysis could not resolve. Every finding is advice: the command exits 0 whenever it ran, however much it reported. It exits 3 when a root or document cannot be read and 2 on a malformed invocation.\n\nUsage:\n  sonny arch advise [flags]\n\nFlags:\n      --arch string                optional .arch document to classify\n      --complexity-threshold int   report functions at or above this cyclomatic count (default 20)\n      --fan-out-threshold int      report packages at or above this external import count (default 12)\n  -h, --help                       help for advise\n      --json                       emit the report as JSON\n      --max-edges int              maximum edges to report (default 40000)\n      --max-files int              maximum source files to walk (default 8000)\n      --root string                source tree to analyze (default \".\")\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny arch eval",
      "path": [
        "arch",
        "eval"
      ],
      "summary": "Run the bootstrap-only architecture-DSL promotion gate",
      "usage": "  sonny arch eval [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--corpus",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "corpus JSON path",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for eval",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--runs",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "number of isolated bootstrap-only runs (minimum 2) (default 2)",
          "default_as_displayed": "2",
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Run the bootstrap-only architecture-DSL promotion gate\n\nUsage:\n  sonny arch eval [flags]\n\nFlags:\n      --corpus string   corpus JSON path\n  -h, --help            help for eval\n      --runs int        number of isolated bootstrap-only runs (minimum 2) (default 2)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny arch requirements",
      "path": [
        "arch",
        "requirements"
      ],
      "summary": "Check that every requirement token has implementation and test evidence",
      "usage": "  sonny arch requirements [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for requirements",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "emit the result as JSON",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--manifest",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "requirement manifest path (default \"docs/assurance/requirements/manifest.yaml\")",
          "default_as_displayed": "\"docs/assurance/requirements/manifest.yaml\"",
          "group": "Flags"
        },
        {
          "name": "--root",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "repository root the bindings resolve against (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Flags"
        },
        {
          "name": "--test-events",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "optional go test -json stream proving the declared tests passed",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Resolve every requirement token in the manifest against the source tree. A token whose implementation or test binding is missing or does not resolve is unproven and fails the command with exit 9; the output names the token and which half is missing. With --test-events a token is verified only when its declared tests passed in the supplied go test -json run. Exit 3 when the manifest or the root cannot be read or parsed, 2 on a malformed invocation.\n\nUsage:\n  sonny arch requirements [flags]\n\nFlags:\n  -h, --help                 help for requirements\n      --json                 emit the result as JSON\n      --manifest string      requirement manifest path (default \"docs/assurance/requirements/manifest.yaml\")\n      --root string          repository root the bindings resolve against (default \".\")\n      --test-events string   optional go test -json stream proving the declared tests passed\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny bench",
      "path": [
        "bench"
      ],
      "summary": "Benchmark harnesses for `sonny recipe eval` / `sonny recipe optimize`",
      "usage": "  sonny bench [command]",
      "aliases": [],
      "children": [
        {
          "name": "campaign",
          "summary": "Verify and print a frozen benchmark-campaign document (mpr/v1/benchmark-campaign)"
        },
        {
          "name": "catalog",
          "summary": "The embedded benchmark catalog and its adapter wiring"
        },
        {
          "name": "conformance",
          "summary": "Sonny-specific conformance contracts and the tests that cover them"
        },
        {
          "name": "exec",
          "summary": "Run one benchmark task through the headless agent and write a result document"
        },
        {
          "name": "scorecard",
          "summary": "Score a sonny-bench-result/v1 ledger: both denominators, pass@k, pass^k, cost, latency and budget"
        },
        {
          "name": "security",
          "summary": "Inspect security benchmark decisions, verify manifests and score independent grades"
        },
        {
          "name": "skillopt",
          "summary": "SkillOpt-Lite benchmark splits as pack-eval suites (see packs/skillopt/README.md)"
        }
      ],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for bench",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Benchmark harnesses for `sonny recipe eval` / `sonny recipe optimize`\n\nUsage:\n  sonny bench [command]\n\nAvailable Commands:\n  campaign    Verify and print a frozen benchmark-campaign document (mpr/v1/benchmark-campaign)\n  catalog     The embedded benchmark catalog and its adapter wiring\n  conformance Sonny-specific conformance contracts and the tests that cover them\n  exec        Run one benchmark task through the headless agent and write a result document\n  scorecard   Score a sonny-bench-result/v1 ledger: both denominators, pass@k, pass^k, cost, latency and budget\n  security    Inspect security benchmark decisions, verify manifests and score independent grades\n  skillopt    SkillOpt-Lite benchmark splits as pack-eval suites (see packs/skillopt/README.md)\n\nFlags:\n  -h, --help   help for bench\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n\nUse \"sonny bench [command] --help\" for more information about a command.\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny bench campaign",
      "path": [
        "bench",
        "campaign"
      ],
      "summary": "Verify and print a frozen benchmark-campaign document (mpr/v1/benchmark-campaign)",
      "usage": "  sonny bench campaign [command]",
      "aliases": [],
      "children": [
        {
          "name": "show",
          "summary": "Print the frozen arms, benchmarks, split policy and promotion rule of a campaign"
        },
        {
          "name": "verify",
          "summary": "Recompute a campaign document's digest, and optionally bind it to its frozen preregistration"
        }
      ],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for campaign",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Verify and print a frozen benchmark-campaign document (mpr/v1/benchmark-campaign)\n\nUsage:\n  sonny bench campaign [command]\n\nAvailable Commands:\n  show        Print the frozen arms, benchmarks, split policy and promotion rule of a campaign\n  verify      Recompute a campaign document's digest, and optionally bind it to its frozen preregistration\n\nFlags:\n  -h, --help   help for campaign\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n\nUse \"sonny bench campaign [command] --help\" for more information about a command.\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny bench campaign show",
      "path": [
        "bench",
        "campaign",
        "show"
      ],
      "summary": "Print the frozen arms, benchmarks, split policy and promotion rule of a campaign",
      "usage": "  sonny bench campaign show <campaign.json> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "text or json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for show",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Print the frozen arms, benchmarks, split policy and promotion rule of a campaign\n\nUsage:\n  sonny bench campaign show <campaign.json> [flags]\n\nFlags:\n      --format string   text or json (default \"text\")\n  -h, --help            help for show\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny bench campaign verify",
      "path": [
        "bench",
        "campaign",
        "verify"
      ],
      "summary": "Recompute a campaign document's digest, and optionally bind it to its frozen preregistration",
      "usage": "  sonny bench campaign verify <campaign.json> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "text or json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for verify",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--preregistration",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "frozen Phase 0 document the campaign must pin",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "verify revalidates every rule the frozen benchmark-campaign document carries - the A-F arm contract, the split discipline, the predeclared exclusion set and the promotion rule's declared thresholds - and recomputes the self-excluding campaign digest. With --preregistration it also checks that the campaign pins that frozen Phase 0 document. A campaign is verified before it is read; it never authorizes a run because its schema_version parsed.\n\nUsage:\n  sonny bench campaign verify <campaign.json> [flags]\n\nFlags:\n      --format string            text or json (default \"text\")\n  -h, --help                     help for verify\n      --preregistration string   frozen Phase 0 document the campaign must pin\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny bench catalog",
      "path": [
        "bench",
        "catalog"
      ],
      "summary": "The embedded benchmark catalog and its adapter wiring",
      "usage": "  sonny bench catalog [command]",
      "aliases": [],
      "children": [
        {
          "name": "list",
          "summary": "List catalog entries with their adapter class and status"
        },
        {
          "name": "show",
          "summary": "Print every field of one benchmark, e.g. `sonny bench catalog show B20`"
        },
        {
          "name": "verify",
          "summary": "Validate the embedded catalog and print its digest (nonzero exit on failure)"
        }
      ],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for catalog",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "The embedded benchmark catalog and its adapter wiring\n\nUsage:\n  sonny bench catalog [command]\n\nAvailable Commands:\n  list        List catalog entries with their adapter class and status\n  show        Print every field of one benchmark, e.g. `sonny bench catalog show B20`\n  verify      Validate the embedded catalog and print its digest (nonzero exit on failure)\n\nFlags:\n  -h, --help   help for catalog\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n\nUse \"sonny bench catalog [command] --help\" for more information about a command.\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny bench catalog list",
      "path": [
        "bench",
        "catalog",
        "list"
      ],
      "summary": "List catalog entries with their adapter class and status",
      "usage": "  sonny bench catalog list [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--category",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "keep only one category, e.g. \"Context/memory\"",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "text or json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for list",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--priority",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "keep only P0, P1 or P2",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--status",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "keep only runnable, smoke_only, feasibility_recorded or blocked",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "List catalog entries with their adapter class and status\n\nUsage:\n  sonny bench catalog list [flags]\n\nFlags:\n      --category string   keep only one category, e.g. \"Context/memory\"\n      --format string     text or json (default \"text\")\n  -h, --help              help for list\n      --priority string   keep only P0, P1 or P2\n      --status string     keep only runnable, smoke_only, feasibility_recorded or blocked\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny bench catalog show",
      "path": [
        "bench",
        "catalog",
        "show"
      ],
      "summary": "Print every field of one benchmark, e.g. `sonny bench catalog show B20`",
      "usage": "  sonny bench catalog show <id> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "text or json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for show",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Print every field of one benchmark, e.g. `sonny bench catalog show B20`\n\nUsage:\n  sonny bench catalog show <id> [flags]\n\nFlags:\n      --format string   text or json (default \"text\")\n  -h, --help            help for show\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny bench catalog verify",
      "path": [
        "bench",
        "catalog",
        "verify"
      ],
      "summary": "Validate the embedded catalog and print its digest (nonzero exit on failure)",
      "usage": "  sonny bench catalog verify [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "text or json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for verify",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Validate the embedded catalog and print its digest (nonzero exit on failure)\n\nUsage:\n  sonny bench catalog verify [flags]\n\nFlags:\n      --format string   text or json (default \"text\")\n  -h, --help            help for verify\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny bench conformance",
      "path": [
        "bench",
        "conformance"
      ],
      "summary": "Sonny-specific conformance contracts and the tests that cover them",
      "usage": "  sonny bench conformance [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--contract",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "print only this contract id (e.g. pack_resolution)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "text or json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for conformance",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Print the conformance matrix from internal/benchconformance: the nine contracts public benchmarks cannot establish, their necessary cases, and for each case either the Go tests that assert it or the recorded reason it does not run.\n\nThese are Sonny regression requirements, not benchmark scores. A not_run row is a first-class outcome; it is never a pass.\n\nUsage:\n  sonny bench conformance [flags]\n\nFlags:\n      --contract string   print only this contract id (e.g. pack_resolution)\n      --format string     text or json (default \"text\")\n  -h, --help              help for conformance\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny bench exec",
      "path": [
        "bench",
        "exec"
      ],
      "summary": "Run one benchmark task through the headless agent and write a result document",
      "usage": "  sonny bench exec [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--binary",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "sonny binary to run the attempt with (default: this executable)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for exec",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--out",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "path to write the sonny-bench-result/v1 document to (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--task",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "path to the sonny-bench-task/v1 document to run (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--trace-dir",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "conversation trace directory for the attempt (default: a \"trace\" directory beside --out)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Run one benchmark task through the headless agent and write a result document.\n\nReads a sonny-bench-task/v1 document, runs it as a single headless turn\nin a child `sonny run` process, and writes a sonny-bench-result/v1\ndocument echoing every task field plus what the attempt did: the final\nreply, token usage, tool-call counts, latencies, trace location and the\ndigests that pin which recipe and system prompt actually executed.\n\nThis is the boundary the Python suites in benchmarks/sonny_bridge use.\nIt never decides whether a task was solved -- error_category reports\nonly whether a scoreable transcript exists. The suite's own scorer\ngrades.\n\nThe result document is written even when the attempt fails, because an\nabsent file is indistinguishable from a crashed harness.\n\nWhen the attempt is killed on its wall budget, or dies before writing\nits own result document, the tool-call counts, tool latency and trace\nidentity are rebuilt from the conversation trace -- which is written\nincrementally and survives the kill. Such a row reports\naccounting_source \"trace\" and carries NO usage field: provider token\ncounts are only known once the turn completes, so an absent usage says\n\"not measured\" where a zeroed one would claim the attempt spent nothing.\n\nA recipe is selected either by pack.file (one document, no parents) or by\npack.id plus pack.dir -- a list of recipe directories passed to the child\nas repeatable --dir entries, so the id resolves with its parents,\nincludes and sub-packs. The LAST directory to declare an id wins it. A\ntask that also asks for a system prompt override or a tool allowlist on\nan id-selected recipe gets an overlay directory: the library directory\nmirrored, the one recipe document rewritten, appended to the search path.\nThe library is never written to.\n\nWhen the task carries a models_file it is exported to the child as\nSONNY_MODELS_FILE and its sha256 is recorded on the result, so a recipe\nwhose llm_profiles name model CATEGORIES resolves them through a\nregistry the row can name.\n\nWhen the task carries a non-empty mcp_config, or sets headless_mcp, the\nchild is run with --headless-mcp so the allowlisted MCP servers are\nconnected for the attempt's single turn. Without it the headless loop\nconnects no external MCP server and neither the benchmark's own tools\nnor the pack's declared servers ever reach the model. mcp_config implies\nthe flag and headless_mcp cannot turn that off. The servers still pass\nthe operator-managed allowlist first: one that is not listed is refused\nbefore it is launched, exactly as in an interactive session.\n\nExamples:\n  sonny bench exec --task task.json --out result.json\n  sonny bench exec --task task.json --out result.json --binary ./bin/sonny\n\nUsage:\n  sonny bench exec [flags]\n\nFlags:\n      --binary string      sonny binary to run the attempt with (default: this executable)\n  -h, --help               help for exec\n      --out string         path to write the sonny-bench-result/v1 document to (required)\n      --task string        path to the sonny-bench-task/v1 document to run (required)\n      --trace-dir string   conversation trace directory for the attempt (default: a \"trace\" directory beside --out)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny bench scorecard",
      "path": [
        "bench",
        "scorecard"
      ],
      "summary": "Score a sonny-bench-result/v1 ledger: both denominators, pass@k, pass^k, cost, latency and budget",
      "usage": "  sonny bench scorecard [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--baseline",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "second ledger to compute a paired delta against",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--cluster-key",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "bootstrap cluster: group_id, task_id or benchmark_id (default \"group_id\")",
          "default_as_displayed": "\"group_id\"",
          "group": "Flags"
        },
        {
          "name": "--confidence",
          "shorthand": null,
          "type_as_displayed": "float",
          "description": "two-sided interval level (default 0.95)",
          "default_as_displayed": "0.95",
          "group": "Flags"
        },
        {
          "name": "--format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "text or json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for scorecard",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--k",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "k of pass@k and pass^k (1 reports neither) (default 1)",
          "default_as_displayed": "1",
          "group": "Flags"
        },
        {
          "name": "--metric",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "paired metric: success or native_score (default \"success\")",
          "default_as_displayed": "\"success\"",
          "group": "Flags"
        },
        {
          "name": "--records",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "JSONL ledger of scored sonny-bench-result/v1 rows",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--resamples",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "bootstrap resamples (default 40000)",
          "default_as_displayed": "40000",
          "group": "Flags"
        },
        {
          "name": "--seed",
          "shorthand": null,
          "type_as_displayed": "uint",
          "description": "bootstrap seed (the interval is reproducible from it) (default 1)",
          "default_as_displayed": "1",
          "group": "Flags"
        },
        {
          "name": "--stratum",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "second grouping level: split, group_id, arm, track or model",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Score a sonny-bench-result/v1 ledger: both denominators, pass@k, pass^k, cost, latency and budget\n\nUsage:\n  sonny bench scorecard [flags]\n\nFlags:\n      --baseline string      second ledger to compute a paired delta against\n      --cluster-key string   bootstrap cluster: group_id, task_id or benchmark_id (default \"group_id\")\n      --confidence float     two-sided interval level (default 0.95)\n      --format string        text or json (default \"text\")\n  -h, --help                 help for scorecard\n      --k int                k of pass@k and pass^k (1 reports neither) (default 1)\n      --metric string        paired metric: success or native_score (default \"success\")\n      --records string       JSONL ledger of scored sonny-bench-result/v1 rows\n      --resamples int        bootstrap resamples (default 40000)\n      --seed uint            bootstrap seed (the interval is reproducible from it) (default 1)\n      --stratum string       second grouping level: split, group_id, arm, track or model\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny bench security",
      "path": [
        "bench",
        "security"
      ],
      "summary": "Inspect security benchmark decisions, verify manifests and score independent grades",
      "usage": "  sonny bench security [command]",
      "aliases": [],
      "children": [
        {
          "name": "baxbench",
          "summary": "Run native BaxBench tests in fresh candidate/verifier realm pairs; retain private evidence"
        },
        {
          "name": "execute",
          "summary": "Run a candidate or verifier in a fresh authenticated realm; retain execution evidence"
        },
        {
          "name": "registry",
          "summary": "Print the versioned 43-entry security decision register"
        },
        {
          "name": "replay",
          "summary": "Collect native CWEval calls, invoke candidates and independently replay observations"
        },
        {
          "name": "review",
          "summary": "Score a saved review report using a private evaluator plan"
        },
        {
          "name": "scorecard",
          "summary": "Score security grades separately from native metrics"
        },
        {
          "name": "seccodebench",
          "summary": "Run SecCodeBench native observations in isolated candidate realms; retain private evidence"
        },
        {
          "name": "secrepobench-observe",
          "summary": "Import saved SecRepoBench observations as unqualified native diagnostics"
        },
        {
          "name": "verify",
          "summary": "Validate a security manifest and report its digest and corpus overlap"
        },
        {
          "name": "verify-preset",
          "summary": "Check declared paired task setup without executing or qualifying it"
        }
      ],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for security",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Inspect security benchmark decisions, verify manifests and score independent grades\n\nUsage:\n  sonny bench security [command]\n\nAvailable Commands:\n  baxbench             Run native BaxBench tests in fresh candidate/verifier realm pairs; retain private evidence\n  execute              Run a candidate or verifier in a fresh authenticated realm; retain execution evidence\n  registry             Print the versioned 43-entry security decision register\n  replay               Collect native CWEval calls, invoke candidates and independently replay observations\n  review               Score a saved review report using a private evaluator plan\n  scorecard            Score security grades separately from native metrics\n  seccodebench         Run SecCodeBench native observations in isolated candidate realms; retain private evidence\n  secrepobench-observe Import saved SecRepoBench observations as unqualified native diagnostics\n  verify               Validate a security manifest and report its digest and corpus overlap\n  verify-preset        Check declared paired task setup without executing or qualifying it\n\nFlags:\n  -h, --help   help for security\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n\nUse \"sonny bench security [command] --help\" for more information about a command.\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny bench security baxbench",
      "path": [
        "bench",
        "security",
        "baxbench"
      ],
      "summary": "Run native BaxBench tests in fresh candidate/verifier realm pairs; retain private evidence",
      "usage": "  sonny bench security baxbench [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for baxbench",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--machine",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "host-trusted signed-image Docker configuration for the candidate image",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--out",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "new private execution evidence JSON file",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--plan",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "host-built private BaxBench service plan",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--policy",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "host-trusted isolation policy file",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--scored-out",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "new private scored JSONL file",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--solver-result",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "existing one-row solver result JSONL bound to this completion",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--staging",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "host directory for private temporary input snapshots (default: the system temporary directory, $TMPDIR or /tmp)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--verifier-machine",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "host-trusted verifier image configuration; defaults to --machine",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--verifier-policy",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "host-trusted verifier policy; defaults to --policy",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Run native BaxBench tests in fresh candidate/verifier realm pairs; retain private evidence\n\nUsage:\n  sonny bench security baxbench [flags]\n\nFlags:\n  -h, --help                      help for baxbench\n      --machine string            host-trusted signed-image Docker configuration for the candidate image\n      --out string                new private execution evidence JSON file\n      --plan string               host-built private BaxBench service plan\n      --policy string             host-trusted isolation policy file\n      --scored-out string         new private scored JSONL file\n      --solver-result string      existing one-row solver result JSONL bound to this completion\n      --staging string            host directory for private temporary input snapshots (default: the system temporary directory, $TMPDIR or /tmp)\n      --verifier-machine string   host-trusted verifier image configuration; defaults to --machine\n      --verifier-policy string    host-trusted verifier policy; defaults to --policy\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny bench security execute",
      "path": [
        "bench",
        "security",
        "execute"
      ],
      "summary": "Run a candidate or verifier in a fresh authenticated realm; retain execution evidence",
      "usage": "  sonny bench security execute [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for execute",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--machine",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "host-trusted signed-image Docker configuration",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--out",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "new private execution-evidence JSON file",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--policy",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "host-trusted isolation policy file",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--request",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned byte-manifest execution request",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--staging",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "host directory for private temporary input snapshots (default: the system temporary directory, $TMPDIR or /tmp)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Run a candidate or verifier in a fresh authenticated realm; retain execution evidence\n\nUsage:\n  sonny bench security execute [flags]\n\nFlags:\n  -h, --help             help for execute\n      --machine string   host-trusted signed-image Docker configuration\n      --out string       new private execution-evidence JSON file\n      --policy string    host-trusted isolation policy file\n      --request string   versioned byte-manifest execution request\n      --staging string   host directory for private temporary input snapshots (default: the system temporary directory, $TMPDIR or /tmp)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny bench security registry",
      "path": [
        "bench",
        "security",
        "registry"
      ],
      "summary": "Print the versioned 43-entry security decision register",
      "usage": "  sonny bench security registry [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for registry",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Print the versioned 43-entry security decision register\n\nUsage:\n  sonny bench security registry [flags]\n\nFlags:\n  -h, --help   help for registry\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny bench security replay",
      "path": [
        "bench",
        "security",
        "replay"
      ],
      "summary": "Collect native CWEval calls, invoke candidates and independently replay observations",
      "usage": "  sonny bench security replay [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for replay",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--machine",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "host-trusted signed-image Docker configuration",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--out",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "new private replay evidence JSON file",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--plan",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "host-built pinned native replay plan",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--policy",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "host-trusted isolation policy file",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--scored-out",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "new private scored JSONL file for security scorecards",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--solver-result",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "existing one-row solver result JSONL to bind to this replay",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--staging",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "host directory for private temporary input snapshots (default: the system temporary directory, $TMPDIR or /tmp)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Collect native CWEval calls, invoke candidates and independently replay observations\n\nUsage:\n  sonny bench security replay [flags]\n\nFlags:\n  -h, --help                   help for replay\n      --machine string         host-trusted signed-image Docker configuration\n      --out string             new private replay evidence JSON file\n      --plan string            host-built pinned native replay plan\n      --policy string          host-trusted isolation policy file\n      --scored-out string      new private scored JSONL file for security scorecards\n      --solver-result string   existing one-row solver result JSONL to bind to this replay\n      --staging string         host directory for private temporary input snapshots (default: the system temporary directory, $TMPDIR or /tmp)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny bench security review",
      "path": [
        "bench",
        "security",
        "review"
      ],
      "summary": "Score a saved review report using a private evaluator plan",
      "usage": "  sonny bench security review [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for review",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--plan",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "trusted private review evaluator plan JSON; never pass to solver",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--scored-out",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "new private scored JSONL file",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--solver-result",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "existing one-row solver result JSONL",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Score a saved review report using a private evaluator plan\n\nUsage:\n  sonny bench security review [flags]\n\nFlags:\n  -h, --help                   help for review\n      --plan string            trusted private review evaluator plan JSON; never pass to solver\n      --scored-out string      new private scored JSONL file\n      --solver-result string   existing one-row solver result JSONL\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny bench security scorecard",
      "path": [
        "bench",
        "security",
        "scorecard"
      ],
      "summary": "Score security grades separately from native metrics",
      "usage": "  sonny bench security scorecard [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--baseline",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "matched baseline ledger for one benchmark and mode",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--confidence",
          "shorthand": null,
          "type_as_displayed": "float",
          "description": "confidence interval level (default 0.95)",
          "default_as_displayed": "0.95",
          "group": "Flags"
        },
        {
          "name": "--format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "text or json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for scorecard",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--records",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "scored JSONL ledger carrying security grades",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--resamples",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "cluster bootstrap resamples (default 40000)",
          "default_as_displayed": "40000",
          "group": "Flags"
        },
        {
          "name": "--seed",
          "shorthand": null,
          "type_as_displayed": "uint",
          "description": "preregistered bootstrap seed (default 1)",
          "default_as_displayed": "1",
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Score security grades separately from native metrics\n\nUsage:\n  sonny bench security scorecard [flags]\n\nFlags:\n      --baseline string    matched baseline ledger for one benchmark and mode\n      --confidence float   confidence interval level (default 0.95)\n      --format string      text or json (default \"text\")\n  -h, --help               help for scorecard\n      --records string     scored JSONL ledger carrying security grades\n      --resamples int      cluster bootstrap resamples (default 40000)\n      --seed uint          preregistered bootstrap seed (default 1)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny bench security seccodebench",
      "path": [
        "bench",
        "security",
        "seccodebench"
      ],
      "summary": "Run SecCodeBench native observations in isolated candidate realms; retain private evidence",
      "usage": "  sonny bench security seccodebench [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for seccodebench",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--machine",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "host-trusted signed-image Docker configuration",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--out",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "new private execution evidence JSON file",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--plan",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "host-built private SecCodeBench native-test plan",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--policy",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "host-trusted isolation policy file",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--scored-out",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "new private scored JSONL file",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--solver-result",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "existing solver result JSONL bound to this completion",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--staging",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "host directory for private input snapshots (default: the system temporary directory, $TMPDIR or /tmp)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Run SecCodeBench native observations in isolated candidate realms; retain private evidence\n\nUsage:\n  sonny bench security seccodebench [flags]\n\nFlags:\n  -h, --help                   help for seccodebench\n      --machine string         host-trusted signed-image Docker configuration\n      --out string             new private execution evidence JSON file\n      --plan string            host-built private SecCodeBench native-test plan\n      --policy string          host-trusted isolation policy file\n      --scored-out string      new private scored JSONL file\n      --solver-result string   existing solver result JSONL bound to this completion\n      --staging string         host directory for private input snapshots (default: the system temporary directory, $TMPDIR or /tmp)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny bench security secrepobench-observe",
      "path": [
        "bench",
        "security",
        "secrepobench-observe"
      ],
      "summary": "Import saved SecRepoBench observations as unqualified native diagnostics",
      "usage": "  sonny bench security secrepobench-observe [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--assessment",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "saved unqualified SecRepoBench assessment JSON",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for secrepobench-observe",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--plan",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "private evaluator task/completion binding JSON; never pass to solver",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--scored-out",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "new private scored JSONL file",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--solver-result",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "existing one-row solver result JSONL",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Import saved SecRepoBench observations as unqualified native diagnostics\n\nUsage:\n  sonny bench security secrepobench-observe [flags]\n\nFlags:\n      --assessment string      saved unqualified SecRepoBench assessment JSON\n  -h, --help                   help for secrepobench-observe\n      --plan string            private evaluator task/completion binding JSON; never pass to solver\n      --scored-out string      new private scored JSONL file\n      --solver-result string   existing one-row solver result JSONL\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny bench security verify",
      "path": [
        "bench",
        "security",
        "verify"
      ],
      "summary": "Validate a security manifest and report its digest and corpus overlap",
      "usage": "  sonny bench security verify [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for verify",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--manifest",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned security manifest JSON",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Validate a security manifest and report its digest and corpus overlap\n\nUsage:\n  sonny bench security verify [flags]\n\nFlags:\n  -h, --help              help for verify\n      --manifest string   versioned security manifest JSON\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny bench security verify-preset",
      "path": [
        "bench",
        "security",
        "verify-preset"
      ],
      "summary": "Check declared paired task setup without executing or qualifying it",
      "usage": "  sonny bench security verify-preset <path> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for verify-preset",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Check declared paired task setup without executing or qualifying it\n\nUsage:\n  sonny bench security verify-preset <path> [flags]\n\nFlags:\n  -h, --help   help for verify-preset\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny bench skillopt",
      "path": [
        "bench",
        "skillopt"
      ],
      "summary": "SkillOpt-Lite benchmark splits as pack-eval suites (see packs/skillopt/README.md)",
      "usage": "  sonny bench skillopt [command]",
      "aliases": [],
      "children": [
        {
          "name": "score",
          "summary": "Rescore a sonny eval ledger (recipe eval --format jsonl, or steps/step_N/eval.jsonl) with the SkillOpt metric"
        },
        {
          "name": "suite",
          "summary": "Render a materialized split as a --suite-file / --holdout-suite-file document"
        },
        {
          "name": "verify",
          "summary": "Check materialized data against manifest.json (rows + sha256)"
        }
      ],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for skillopt",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "SkillOpt-Lite benchmark splits as pack-eval suites (see packs/skillopt/README.md)\n\nUsage:\n  sonny bench skillopt [command]\n\nAvailable Commands:\n  score       Rescore a sonny eval ledger (recipe eval --format jsonl, or steps/step_N/eval.jsonl) with the SkillOpt metric\n  suite       Render a materialized split as a --suite-file / --holdout-suite-file document\n  verify      Check materialized data against manifest.json (rows + sha256)\n\nFlags:\n  -h, --help   help for skillopt\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n\nUse \"sonny bench skillopt [command] --help\" for more information about a command.\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny bench skillopt score",
      "path": [
        "bench",
        "skillopt",
        "score"
      ],
      "summary": "Rescore a sonny eval ledger (recipe eval --format jsonl, or steps/step_N/eval.jsonl) with the SkillOpt metric",
      "usage": "  sonny bench skillopt score [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--bench",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "livemath, searchqa or docvqa",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--data",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "materialized data dir (default \"packs/skillopt/data\")",
          "default_as_displayed": "\"packs/skillopt/data\"",
          "group": "Flags"
        },
        {
          "name": "--format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "text or json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for score",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--ledger",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "JSONL ledger with case_id/status/reply rows",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--split",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "the split spec the suite was rendered from",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Rescore a sonny eval ledger (recipe eval --format jsonl, or steps/step_N/eval.jsonl) with the SkillOpt metric\n\nUsage:\n  sonny bench skillopt score [flags]\n\nFlags:\n      --bench string    livemath, searchqa or docvqa\n      --data string     materialized data dir (default \"packs/skillopt/data\")\n      --format string   text or json (default \"text\")\n  -h, --help            help for score\n      --ledger string   JSONL ledger with case_id/status/reply rows\n      --split string    the split spec the suite was rendered from\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny bench skillopt suite",
      "path": [
        "bench",
        "skillopt",
        "suite"
      ],
      "summary": "Render a materialized split as a --suite-file / --holdout-suite-file document",
      "usage": "  sonny bench skillopt suite [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--bench",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "livemath, searchqa or docvqa",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--data",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "materialized data dir (make skillopt-materialize) (default \"packs/skillopt/data\")",
          "default_as_displayed": "\"packs/skillopt/data\"",
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for suite",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--limit",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "keep a seeded subsample of N cases (0 = all)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--out",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "output suite YAML path",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--seed",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "subsample seed (default 42)",
          "default_as_displayed": "42",
          "group": "Flags"
        },
        {
          "name": "--split",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "train, val, test, or e.g. train+val",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Render a materialized split as a --suite-file / --holdout-suite-file document\n\nUsage:\n  sonny bench skillopt suite [flags]\n\nFlags:\n      --bench string   livemath, searchqa or docvqa\n      --data string    materialized data dir (make skillopt-materialize) (default \"packs/skillopt/data\")\n  -h, --help           help for suite\n      --limit int      keep a seeded subsample of N cases (0 = all)\n      --out string     output suite YAML path\n      --seed int       subsample seed (default 42)\n      --split string   train, val, test, or e.g. train+val\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny bench skillopt verify",
      "path": [
        "bench",
        "skillopt",
        "verify"
      ],
      "summary": "Check materialized data against manifest.json (rows + sha256)",
      "usage": "  sonny bench skillopt verify [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--data",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "materialized data dir (default \"packs/skillopt/data\")",
          "default_as_displayed": "\"packs/skillopt/data\"",
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for verify",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--manifest",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "manifest path (default \"packs/skillopt/manifest.json\")",
          "default_as_displayed": "\"packs/skillopt/manifest.json\"",
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Check materialized data against manifest.json (rows + sha256)\n\nUsage:\n  sonny bench skillopt verify [flags]\n\nFlags:\n      --data string       materialized data dir (default \"packs/skillopt/data\")\n  -h, --help              help for verify\n      --manifest string   manifest path (default \"packs/skillopt/manifest.json\")\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny canary",
      "path": [
        "canary"
      ],
      "summary": "Embedded Canary: requirement migration and test evidence",
      "usage": "  sonny canary [command]",
      "aliases": [],
      "children": [
        {
          "name": "anchor",
          "summary": "Manage Canary trace records"
        },
        {
          "name": "create",
          "summary": "Manage Canary trace records"
        },
        {
          "name": "export",
          "summary": "Manage Canary trace records"
        },
        {
          "name": "init",
          "summary": "Manage Canary trace records"
        },
        {
          "name": "list",
          "summary": "Manage Canary trace records"
        },
        {
          "name": "migrate",
          "summary": "Apply a reviewed legacy migration plan id"
        },
        {
          "name": "migrate-inline-tokens",
          "summary": "Manage Canary trace records"
        },
        {
          "name": "notes",
          "summary": "Manage Canary trace records"
        },
        {
          "name": "preview",
          "summary": "Preview the legacy inline-token migration (read-only)"
        },
        {
          "name": "privacy-audit",
          "summary": "Manage Canary trace records"
        },
        {
          "name": "reanchor",
          "summary": "Manage Canary trace records"
        },
        {
          "name": "show",
          "summary": "Manage Canary trace records"
        },
        {
          "name": "sync",
          "summary": "Manage Canary trace records"
        },
        {
          "name": "trace",
          "summary": "Manage Canary trace records"
        },
        {
          "name": "trust-toolchain",
          "summary": "Propose, or record with --path, the trusted go binary for verify"
        },
        {
          "name": "verify",
          "summary": "Run the project's tests under Canary's trusted producer"
        }
      ],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for canary",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Canary runs inside Sonny. No separate canary executable is needed.\n\n  preview         inspect legacy requirement tokens without writing\n  migrate         apply a reviewed migration plan\n  trust-toolchain inspect or select the Go compiler used to run project tests\n  verify          run project tests and record trusted evidence\n  trace           manage code-external requirement and gap records\n\nSet up a project with 'sonny init project plan --canary', then apply the\nprinted plan. 'sonny init project canary' remains an equivalent command path.\nToolchain trust refers to the Go compiler, not to a Canary binary.\n\nUsage:\n  sonny canary [command]\n\nAvailable Commands:\n  anchor                Manage Canary trace records\n  create                Manage Canary trace records\n  export                Manage Canary trace records\n  init                  Manage Canary trace records\n  list                  Manage Canary trace records\n  migrate               Apply a reviewed legacy migration plan id\n  migrate-inline-tokens Manage Canary trace records\n  notes                 Manage Canary trace records\n  preview               Preview the legacy inline-token migration (read-only)\n  privacy-audit         Manage Canary trace records\n  reanchor              Manage Canary trace records\n  show                  Manage Canary trace records\n  sync                  Manage Canary trace records\n  trace                 Manage Canary trace records\n  trust-toolchain       Propose, or record with --path, the trusted go binary for verify\n  verify                Run the project's tests under Canary's trusted producer\n\nFlags:\n  -h, --help   help for canary\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n\nUse \"sonny canary [command] --help\" for more information about a command.\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny canary anchor",
      "path": [
        "canary",
        "anchor"
      ],
      "summary": "Manage Canary trace records",
      "usage": "",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "-end",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "1-based end line (inclusive)",
          "default_as_displayed": null,
          "group": "Native flags"
        },
        {
          "name": "-path",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "repo-relative file path",
          "default_as_displayed": null,
          "group": "Native flags"
        },
        {
          "name": "-root",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "project root (default: cwd)",
          "default_as_displayed": null,
          "group": "Native flags"
        },
        {
          "name": "-start",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "1-based start line",
          "default_as_displayed": null,
          "group": "Native flags"
        },
        {
          "name": "-subject",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "configured requirement or native subject ID",
          "default_as_displayed": null,
          "group": "Native flags"
        },
        {
          "name": "-subject-kind",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "explicit requirement, gap, evidence or decision kind",
          "default_as_displayed": null,
          "group": "Native flags"
        },
        {
          "name": "-symbol",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "optional symbol FQN",
          "default_as_displayed": null,
          "group": "Native flags"
        }
      ],
      "help": "{\n  \"ok\": false,\n  \"command\": \"trace anchor\",\n  \"error\": {\n    \"code\": \"BAD_FLAGS\",\n    \"message\": \"flag: help requested\"\n  }\n}\n",
      "stderr": "Usage of trace anchor:\n  -end int\n    \t1-based end line (inclusive)\n  -path string\n    \trepo-relative file path\n  -root string\n    \tproject root (default: cwd)\n  -start int\n    \t1-based start line\n  -subject string\n    \tconfigured requirement or native subject ID\n  -subject-kind string\n    \texplicit requirement, gap, evidence or decision kind\n  -symbol string\n    \toptional symbol FQN\nError: command failed with exit status 1\n",
      "exit": 1,
      "parser": "native_canary_dispatch"
    },
    {
      "command": "sonny canary create",
      "path": [
        "canary",
        "create"
      ],
      "summary": "Manage Canary trace records",
      "usage": "",
      "aliases": [],
      "children": [
        {
          "name": "requirement",
          "summary": "Native Canary trace dispatcher; inspect help/exit caveats"
        },
        {
          "name": "gap",
          "summary": "Native Canary trace dispatcher; inspect help/exit caveats"
        }
      ],
      "flags": [],
      "help": "{\n  \"ok\": false,\n  \"command\": \"trace create\",\n  \"error\": {\n    \"code\": \"BAD_ARGS\",\n    \"message\": \"unknown subcommand: --help\"\n  }\n}\n",
      "stderr": "Error: command failed with exit status 1\n",
      "exit": 1,
      "parser": "native_canary_dispatch"
    },
    {
      "command": "sonny canary create gap",
      "path": [
        "canary",
        "create",
        "gap"
      ],
      "summary": "Native Canary trace dispatcher; inspect help/exit caveats",
      "usage": "",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "-id",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "gap ID (e.g. GAP-0016)",
          "default_as_displayed": null,
          "group": "Native flags"
        },
        {
          "name": "-requirement",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "requirement ID this gap is against",
          "default_as_displayed": null,
          "group": "Native flags"
        },
        {
          "name": "-root",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "project root (default: cwd)",
          "default_as_displayed": null,
          "group": "Native flags"
        },
        {
          "name": "-severity",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "critical|high|medium|low (default \"medium\")",
          "default_as_displayed": "\"medium\"",
          "group": "Native flags"
        },
        {
          "name": "-status",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "initial status (default \"PROPOSED\")",
          "default_as_displayed": "\"PROPOSED\"",
          "group": "Native flags"
        },
        {
          "name": "-summary",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "one-line summary",
          "default_as_displayed": null,
          "group": "Native flags"
        },
        {
          "name": "-title",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "title",
          "default_as_displayed": null,
          "group": "Native flags"
        }
      ],
      "help": "{\n  \"ok\": false,\n  \"command\": \"trace create gap\",\n  \"error\": {\n    \"code\": \"BAD_FLAGS\",\n    \"message\": \"flag: help requested\"\n  }\n}\n",
      "stderr": "Usage of trace create gap:\n  -id string\n    \tgap ID (e.g. GAP-0016)\n  -requirement string\n    \trequirement ID this gap is against\n  -root string\n    \tproject root (default: cwd)\n  -severity string\n    \tcritical|high|medium|low (default \"medium\")\n  -status string\n    \tinitial status (default \"PROPOSED\")\n  -summary string\n    \tone-line summary\n  -title string\n    \ttitle\nError: command failed with exit status 1\n",
      "exit": 1,
      "parser": "native_canary_dispatch"
    },
    {
      "command": "sonny canary create requirement",
      "path": [
        "canary",
        "create",
        "requirement"
      ],
      "summary": "Native Canary trace dispatcher; inspect help/exit caveats",
      "usage": "",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "-id",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "requirement ID (e.g. CBIN-211)",
          "default_as_displayed": null,
          "group": "Native flags"
        },
        {
          "name": "-root",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "project root (default: cwd)",
          "default_as_displayed": null,
          "group": "Native flags"
        },
        {
          "name": "-status",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "initial status (default \"PROPOSED\")",
          "default_as_displayed": "\"PROPOSED\"",
          "group": "Native flags"
        },
        {
          "name": "-summary",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "one-line summary",
          "default_as_displayed": null,
          "group": "Native flags"
        },
        {
          "name": "-title",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "title",
          "default_as_displayed": null,
          "group": "Native flags"
        }
      ],
      "help": "{\n  \"ok\": false,\n  \"command\": \"trace create requirement\",\n  \"error\": {\n    \"code\": \"BAD_FLAGS\",\n    \"message\": \"flag: help requested\"\n  }\n}\n",
      "stderr": "Usage of trace create requirement:\n  -id string\n    \trequirement ID (e.g. CBIN-211)\n  -root string\n    \tproject root (default: cwd)\n  -status string\n    \tinitial status (default \"PROPOSED\")\n  -summary string\n    \tone-line summary\n  -title string\n    \ttitle\nError: command failed with exit status 1\n",
      "exit": 1,
      "parser": "native_canary_dispatch"
    },
    {
      "command": "sonny canary export",
      "path": [
        "canary",
        "export"
      ],
      "summary": "Manage Canary trace records",
      "usage": "",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "-redacted",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "apply privacy redaction (default true) (default true)",
          "default_as_displayed": "true) (default true",
          "group": "Native flags"
        },
        {
          "name": "-root",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "project root (default: cwd)",
          "default_as_displayed": null,
          "group": "Native flags"
        }
      ],
      "help": "{\n  \"ok\": false,\n  \"command\": \"trace export\",\n  \"error\": {\n    \"code\": \"BAD_FLAGS\",\n    \"message\": \"flag: help requested\"\n  }\n}\n",
      "stderr": "Usage of trace export:\n  -redacted\n    \tapply privacy redaction (default true) (default true)\n  -root string\n    \tproject root (default: cwd)\nError: command failed with exit status 1\n",
      "exit": 1,
      "parser": "native_canary_dispatch"
    },
    {
      "command": "sonny canary init",
      "path": [
        "canary",
        "init"
      ],
      "summary": "Manage Canary trace records",
      "usage": "",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "-root",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "project root (default: cwd)",
          "default_as_displayed": null,
          "group": "Native flags"
        }
      ],
      "help": "{\n  \"ok\": false,\n  \"command\": \"trace init\",\n  \"error\": {\n    \"code\": \"BAD_FLAGS\",\n    \"message\": \"flag: help requested\"\n  }\n}\n",
      "stderr": "Usage of trace init:\n  -root string\n    \tproject root (default: cwd)\nError: command failed with exit status 1\n",
      "exit": 1,
      "parser": "native_canary_dispatch"
    },
    {
      "command": "sonny canary list",
      "path": [
        "canary",
        "list"
      ],
      "summary": "Manage Canary trace records",
      "usage": "",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "-kind",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "requirement|gap (default \"gap\")",
          "default_as_displayed": "\"gap\"",
          "group": "Native flags"
        },
        {
          "name": "-limit",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "max items (capped at 50) (default 10)",
          "default_as_displayed": "10",
          "group": "Native flags"
        },
        {
          "name": "-root",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "project root (default: cwd)",
          "default_as_displayed": null,
          "group": "Native flags"
        },
        {
          "name": "-status",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "filter by status",
          "default_as_displayed": null,
          "group": "Native flags"
        }
      ],
      "help": "{\n  \"ok\": false,\n  \"command\": \"trace list\",\n  \"error\": {\n    \"code\": \"BAD_FLAGS\",\n    \"message\": \"flag: help requested\"\n  }\n}\n",
      "stderr": "Usage of trace list:\n  -kind string\n    \trequirement|gap (default \"gap\")\n  -limit int\n    \tmax items (capped at 50) (default 10)\n  -root string\n    \tproject root (default: cwd)\n  -status string\n    \tfilter by status\nError: command failed with exit status 1\n",
      "exit": 1,
      "parser": "native_canary_dispatch"
    },
    {
      "command": "sonny canary migrate",
      "path": [
        "canary",
        "migrate"
      ],
      "summary": "Apply a reviewed legacy migration plan id",
      "usage": "  sonny canary migrate [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for migrate",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "print the report as one JSON document",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--plan-id",
          "shorthand": null,
          "type_as_displayed": "ID",
          "description": "the reviewed migration plan ID (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Import this project's inline CANARY tokens into the trace store,\nbound to the plan id 'sonny init project canary preview' printed. A\nplan that changed since the preview writes nothing and exits 4. A\nreviewed legacy token conversion first rewrites exactly the token lines\nthe preview listed (legacy ASPECT/STATUS values onto the current\nvocabulary) and declares the listed prefixes in .canary/project.yaml;\notherwise the source tokens stay in place. The tracking mode is not\nchanged. The report lists missing, changed and unsupported entities;\nit exits 3 when parity fails. A migration never claims that tests ran.\n\nUsage:\n  sonny canary migrate [flags]\n\nFlags:\n  -h, --help         help for migrate\n      --json         print the report as one JSON document\n      --plan-id ID   the reviewed migration plan ID (required)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny canary migrate-inline-tokens",
      "path": [
        "canary",
        "migrate-inline-tokens"
      ],
      "summary": "Manage Canary trace records",
      "usage": "",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "-evidence",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "also import .canary/evidence.json records (default true)",
          "default_as_displayed": "true",
          "group": "Native flags"
        },
        {
          "name": "-expect-plan",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "apply only if the current plan matches this preview plan ID",
          "default_as_displayed": null,
          "group": "Native flags"
        },
        {
          "name": "-plan",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "preview migration without initializing or changing tracking data",
          "default_as_displayed": null,
          "group": "Native flags"
        },
        {
          "name": "-plan-details",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "include before/after documents in the preview",
          "default_as_displayed": null,
          "group": "Native flags"
        },
        {
          "name": "-plan-limit",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "preview page size (1-100) (default 20)",
          "default_as_displayed": "20",
          "group": "Native flags"
        },
        {
          "name": "-plan-offset",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "preview page offset",
          "default_as_displayed": null,
          "group": "Native flags"
        },
        {
          "name": "-recover",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "recover an interrupted publication without starting another migration",
          "default_as_displayed": null,
          "group": "Native flags"
        },
        {
          "name": "-root",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "project root (default: cwd)",
          "default_as_displayed": null,
          "group": "Native flags"
        },
        {
          "name": "-tracking-mode",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "explicit native_canary, coexist, or trace routing; default preserves existing mode",
          "default_as_displayed": null,
          "group": "Native flags"
        }
      ],
      "help": "{\n  \"ok\": false,\n  \"command\": \"trace migrate-inline-tokens\",\n  \"error\": {\n    \"code\": \"BAD_FLAGS\",\n    \"message\": \"flag: help requested\"\n  }\n}\n",
      "stderr": "Usage of trace migrate-inline-tokens:\n  -evidence\n    \talso import .canary/evidence.json records (default true)\n  -expect-plan string\n    \tapply only if the current plan matches this preview plan ID\n  -plan\n    \tpreview migration without initializing or changing tracking data\n  -plan-details\n    \tinclude before/after documents in the preview\n  -plan-limit int\n    \tpreview page size (1-100) (default 20)\n  -plan-offset int\n    \tpreview page offset\n  -recover\n    \trecover an interrupted publication without starting another migration\n  -root string\n    \tproject root (default: cwd)\n  -tracking-mode string\n    \texplicit native_canary, coexist, or trace routing; default preserves existing mode\nError: command failed with exit status 1\n",
      "exit": 1,
      "parser": "native_canary_dispatch"
    },
    {
      "command": "sonny canary notes",
      "path": [
        "canary",
        "notes"
      ],
      "summary": "Manage Canary trace records",
      "usage": "",
      "aliases": [],
      "children": [
        {
          "name": "fetch",
          "summary": "Native Canary trace dispatcher; inspect help/exit caveats"
        },
        {
          "name": "push",
          "summary": "Native Canary trace dispatcher; inspect help/exit caveats"
        },
        {
          "name": "config",
          "summary": "Native Canary trace dispatcher; inspect help/exit caveats"
        }
      ],
      "flags": [],
      "help": "{\n  \"ok\": false,\n  \"command\": \"trace notes\",\n  \"error\": {\n    \"code\": \"BAD_ARGS\",\n    \"message\": \"unknown sub-target: --help\"\n  }\n}\n",
      "stderr": "Error: command failed with exit status 1\n",
      "exit": 1,
      "parser": "native_canary_dispatch"
    },
    {
      "command": "sonny canary notes config",
      "path": [
        "canary",
        "notes",
        "config"
      ],
      "summary": "Native Canary trace dispatcher; inspect help/exit caveats",
      "usage": "",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "-root",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "project root (default: cwd)",
          "default_as_displayed": null,
          "group": "Native flags"
        }
      ],
      "help": "{\n  \"ok\": false,\n  \"command\": \"trace notes config\",\n  \"error\": {\n    \"code\": \"BAD_FLAGS\",\n    \"message\": \"flag: help requested\"\n  }\n}\n",
      "stderr": "Usage of trace notes config:\n  -root string\n    \tproject root (default: cwd)\nError: command failed with exit status 1\n",
      "exit": 1,
      "parser": "native_canary_dispatch"
    },
    {
      "command": "sonny canary notes fetch",
      "path": [
        "canary",
        "notes",
        "fetch"
      ],
      "summary": "Native Canary trace dispatcher; inspect help/exit caveats",
      "usage": "",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "-remote",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "git remote (default \"origin\")",
          "default_as_displayed": "\"origin\"",
          "group": "Native flags"
        },
        {
          "name": "-root",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "project root (default: cwd)",
          "default_as_displayed": null,
          "group": "Native flags"
        }
      ],
      "help": "{\n  \"ok\": false,\n  \"command\": \"trace notes fetch\",\n  \"error\": {\n    \"code\": \"BAD_FLAGS\",\n    \"message\": \"flag: help requested\"\n  }\n}\n",
      "stderr": "Usage of trace notes fetch:\n  -remote string\n    \tgit remote (default \"origin\")\n  -root string\n    \tproject root (default: cwd)\nError: command failed with exit status 1\n",
      "exit": 1,
      "parser": "native_canary_dispatch"
    },
    {
      "command": "sonny canary notes push",
      "path": [
        "canary",
        "notes",
        "push"
      ],
      "summary": "Native Canary trace dispatcher; inspect help/exit caveats",
      "usage": "",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "-remote",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "git remote (default \"origin\")",
          "default_as_displayed": "\"origin\"",
          "group": "Native flags"
        },
        {
          "name": "-root",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "project root (default: cwd)",
          "default_as_displayed": null,
          "group": "Native flags"
        },
        {
          "name": "-skip-audit",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "skip the privacy audit (DANGEROUS)",
          "default_as_displayed": null,
          "group": "Native flags"
        }
      ],
      "help": "{\n  \"ok\": false,\n  \"command\": \"trace notes push\",\n  \"error\": {\n    \"code\": \"BAD_FLAGS\",\n    \"message\": \"flag: help requested\"\n  }\n}\n",
      "stderr": "Usage of trace notes push:\n  -remote string\n    \tgit remote (default \"origin\")\n  -root string\n    \tproject root (default: cwd)\n  -skip-audit\n    \tskip the privacy audit (DANGEROUS)\nError: command failed with exit status 1\n",
      "exit": 1,
      "parser": "native_canary_dispatch"
    },
    {
      "command": "sonny canary preview",
      "path": [
        "canary",
        "preview"
      ],
      "summary": "Preview the legacy inline-token migration (read-only)",
      "usage": "  sonny canary preview [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for preview",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "print the preview as one JSON document",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Preview, read-only, the import of this project's inline CANARY\ntokens into the trace store: the plan id, the entities it would create\nor change, and the tokens and files it cannot import. Legacy tokens\n(free-form ASPECT values, EXEMPT or COMPLETE statuses, prefixes no\nsource declares) preview their conversion instead. Nothing is written.\nThe migration needs a git repository with a commit (exit 3 otherwise).\nApprove it with 'sonny init project canary migrate --plan-id ID'.\n\nUsage:\n  sonny canary preview [flags]\n\nFlags:\n  -h, --help   help for preview\n      --json   print the preview as one JSON document\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny canary privacy-audit",
      "path": [
        "canary",
        "privacy-audit"
      ],
      "summary": "Manage Canary trace records",
      "usage": "",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "-root",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "project root (default: cwd)",
          "default_as_displayed": null,
          "group": "Native flags"
        }
      ],
      "help": "{\n  \"ok\": false,\n  \"command\": \"trace privacy-audit\",\n  \"error\": {\n    \"code\": \"BAD_FLAGS\",\n    \"message\": \"flag: help requested\"\n  }\n}\n",
      "stderr": "Usage of trace privacy-audit:\n  -root string\n    \tproject root (default: cwd)\nError: command failed with exit status 1\n",
      "exit": 1,
      "parser": "native_canary_dispatch"
    },
    {
      "command": "sonny canary reanchor",
      "path": [
        "canary",
        "reanchor"
      ],
      "summary": "Manage Canary trace records",
      "usage": "",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "-dry-run",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "compute outcomes without persisting",
          "default_as_displayed": null,
          "group": "Native flags"
        },
        {
          "name": "-root",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "project root (default: cwd)",
          "default_as_displayed": null,
          "group": "Native flags"
        }
      ],
      "help": "{\n  \"ok\": false,\n  \"command\": \"trace reanchor\",\n  \"error\": {\n    \"code\": \"BAD_FLAGS\",\n    \"message\": \"flag: help requested\"\n  }\n}\n",
      "stderr": "Usage of trace reanchor:\n  -dry-run\n    \tcompute outcomes without persisting\n  -root string\n    \tproject root (default: cwd)\nError: command failed with exit status 1\n",
      "exit": 1,
      "parser": "native_canary_dispatch"
    },
    {
      "command": "sonny canary show",
      "path": [
        "canary",
        "show"
      ],
      "summary": "Manage Canary trace records",
      "usage": "",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "-declaration-limit",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "retained declarations per page (1-100) (default 20)",
          "default_as_displayed": "20",
          "group": "Native flags"
        },
        {
          "name": "-declaration-offset",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "retained declaration offset",
          "default_as_displayed": null,
          "group": "Native flags"
        },
        {
          "name": "-expected-declaration-revision",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "require the prior page's projection revision",
          "default_as_displayed": null,
          "group": "Native flags"
        },
        {
          "name": "-id",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "subject ID",
          "default_as_displayed": null,
          "group": "Native flags"
        },
        {
          "name": "-root",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "project root (default: cwd)",
          "default_as_displayed": null,
          "group": "Native flags"
        }
      ],
      "help": "{\n  \"ok\": false,\n  \"command\": \"trace show\",\n  \"error\": {\n    \"code\": \"BAD_FLAGS\",\n    \"message\": \"flag: help requested\"\n  }\n}\n",
      "stderr": "Usage of trace show:\n  -declaration-limit int\n    \tretained declarations per page (1-100) (default 20)\n  -declaration-offset int\n    \tretained declaration offset\n  -expected-declaration-revision string\n    \trequire the prior page's projection revision\n  -id string\n    \tsubject ID\n  -root string\n    \tproject root (default: cwd)\nError: command failed with exit status 1\n",
      "exit": 1,
      "parser": "native_canary_dispatch"
    },
    {
      "command": "sonny canary sync",
      "path": [
        "canary",
        "sync"
      ],
      "summary": "Manage Canary trace records",
      "usage": "",
      "aliases": [],
      "children": [
        {
          "name": "gitlab",
          "summary": "Native Canary trace dispatcher; inspect help/exit caveats"
        }
      ],
      "flags": [],
      "help": "{\n  \"ok\": false,\n  \"command\": \"trace sync\",\n  \"error\": {\n    \"code\": \"BAD_ARGS\",\n    \"message\": \"unknown sub-target: --help\"\n  }\n}\n",
      "stderr": "Error: command failed with exit status 1\n",
      "exit": 1,
      "parser": "native_canary_dispatch"
    },
    {
      "command": "sonny canary sync gitlab",
      "path": [
        "canary",
        "sync",
        "gitlab"
      ],
      "summary": "Native Canary trace dispatcher; inspect help/exit caveats",
      "usage": "",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "-limit",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "max records to check (default 100)",
          "default_as_displayed": "100",
          "group": "Native flags"
        },
        {
          "name": "-project",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "GitLab project ID or path",
          "default_as_displayed": null,
          "group": "Native flags"
        },
        {
          "name": "-root",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "project root (default: cwd)",
          "default_as_displayed": null,
          "group": "Native flags"
        }
      ],
      "help": "{\n  \"ok\": false,\n  \"command\": \"trace sync gitlab\",\n  \"error\": {\n    \"code\": \"BAD_FLAGS\",\n    \"message\": \"flag: help requested\"\n  }\n}\n",
      "stderr": "Usage of trace sync gitlab:\n  -limit int\n    \tmax records to check (default 100)\n  -project string\n    \tGitLab project ID or path\n  -root string\n    \tproject root (default: cwd)\nError: command failed with exit status 1\n",
      "exit": 1,
      "parser": "native_canary_dispatch"
    },
    {
      "command": "sonny canary trace",
      "path": [
        "canary",
        "trace"
      ],
      "summary": "Manage Canary trace records",
      "usage": "",
      "aliases": [],
      "children": [
        {
          "name": "init",
          "summary": "Native Canary trace dispatcher; inspect help/exit caveats"
        },
        {
          "name": "create",
          "summary": "Native Canary trace dispatcher; inspect help/exit caveats"
        },
        {
          "name": "anchor",
          "summary": "Native Canary trace dispatcher; inspect help/exit caveats"
        },
        {
          "name": "show",
          "summary": "Native Canary trace dispatcher; inspect help/exit caveats"
        },
        {
          "name": "list",
          "summary": "Native Canary trace dispatcher; inspect help/exit caveats"
        },
        {
          "name": "reanchor",
          "summary": "Native Canary trace dispatcher; inspect help/exit caveats"
        },
        {
          "name": "verify",
          "summary": "Native Canary trace dispatcher; inspect help/exit caveats"
        },
        {
          "name": "notes",
          "summary": "Native Canary trace dispatcher; inspect help/exit caveats"
        },
        {
          "name": "sync",
          "summary": "Native Canary trace dispatcher; inspect help/exit caveats"
        },
        {
          "name": "privacy-audit",
          "summary": "Native Canary trace dispatcher; inspect help/exit caveats"
        },
        {
          "name": "export",
          "summary": "Native Canary trace dispatcher; inspect help/exit caveats"
        },
        {
          "name": "migrate-inline-tokens",
          "summary": "Native Canary trace dispatcher; inspect help/exit caveats"
        }
      ],
      "flags": [],
      "help": "",
      "stderr": "sonny canary trace \u2014 code-external requirement and gap traceability\n\nUSAGE\n  sonny canary trace <subcommand> [flags]\n\nSUBCOMMANDS\n  init                                 bootstrap .canary/trace/ + cache.db\n  create requirement -id ID -title T   create a requirement manifest\n  create gap -id GAP-N -requirement R  create a gap manifest\n  anchor -subject ID -path P -start S  capture a blob_range anchor\n         -end E [-symbol FQN]\n  show -id ID                          compact JSON for one record\n  list -kind requirement|gap [-status] compact JSON list\n  reanchor [-dry-run]                  re-resolve every anchor\n  verify [-scope repo|subject]         run coherence gates\n  notes fetch|push|config              shared refs/notes/canary/* helpers\n  sync gitlab -project ID              read-only drift report\n  privacy-audit                        scan manifests for secrets/prompts\n  export [-redacted]                   build redacted JSON bundle\n  migrate-inline-tokens                import legacy CANARY comments\n\nNATIVE CANARY WORKFLOW (embedded in Sonny)\n  sonny init project plan --canary -> apply the printed plan\n  sonny canary trust-toolchain --path /absolute/path/to/go\n  sonny canary verify\n\nAGENT TOOLS\n  canary_onboard -> canary_index -> canary_view / canary_next / canary_search\n  canary_evidence -> canary_verify\n\nOnboard inspects readiness without initializing an index. Indexing and test\nexecution require separate admission. Existing inline CANARY workspaces can\nstay native. Migration is optional; a trace cache alone is not adoption.\nUse tool_search, then tool_exec, if the session's provider tool budget hides tools.\n\nEvidence needs git and go in the admitted realm and an operator-authorized\ntoolchain/signing profile. Availability preflight does not grant tool admission or producer trust.\nThe minimal Sonny-only isolation image cannot run this evidence workflow.\nAsk the operator for a qualified runtime/profile; do not disable isolation or\ntrust an arbitrary workspace executable to bypass unavailable tools.\n\nTRACE EXAMPLE (creates local tracking data in the current repository)\n  sonny canary create requirement -id SONNY-2110 -title \"Requirement tracking\"\n  sonny canary show -id SONNY-2110\n\nIMPORTANT\n  sonny canary trace verify checks trace coherence, not canonical test-evidence verification.\n  sonny canary verify runs project tests through the embedded evidence producer.\n  No separate Canary executable is needed. A declaration\n  such as STATUS=TESTED, a successful command, or a trace record is not proof\n  that a requirement is verified.\n\nData commands write a JSON envelope on stdout; help is written to stderr.\n",
      "exit": 0,
      "parser": "native_canary_dispatch"
    },
    {
      "command": "sonny canary trace anchor",
      "path": [
        "canary",
        "trace",
        "anchor"
      ],
      "summary": "Native Canary trace dispatcher; inspect help/exit caveats",
      "usage": "",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "-end",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "1-based end line (inclusive)",
          "default_as_displayed": null,
          "group": "Native flags"
        },
        {
          "name": "-path",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "repo-relative file path",
          "default_as_displayed": null,
          "group": "Native flags"
        },
        {
          "name": "-root",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "project root (default: cwd)",
          "default_as_displayed": null,
          "group": "Native flags"
        },
        {
          "name": "-start",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "1-based start line",
          "default_as_displayed": null,
          "group": "Native flags"
        },
        {
          "name": "-subject",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "configured requirement or native subject ID",
          "default_as_displayed": null,
          "group": "Native flags"
        },
        {
          "name": "-subject-kind",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "explicit requirement, gap, evidence or decision kind",
          "default_as_displayed": null,
          "group": "Native flags"
        },
        {
          "name": "-symbol",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "optional symbol FQN",
          "default_as_displayed": null,
          "group": "Native flags"
        }
      ],
      "help": "{\n  \"ok\": false,\n  \"command\": \"trace anchor\",\n  \"error\": {\n    \"code\": \"BAD_FLAGS\",\n    \"message\": \"flag: help requested\"\n  }\n}\n",
      "stderr": "Usage of trace anchor:\n  -end int\n    \t1-based end line (inclusive)\n  -path string\n    \trepo-relative file path\n  -root string\n    \tproject root (default: cwd)\n  -start int\n    \t1-based start line\n  -subject string\n    \tconfigured requirement or native subject ID\n  -subject-kind string\n    \texplicit requirement, gap, evidence or decision kind\n  -symbol string\n    \toptional symbol FQN\nError: command failed with exit status 1\n",
      "exit": 1,
      "parser": "native_canary_dispatch"
    },
    {
      "command": "sonny canary trace create",
      "path": [
        "canary",
        "trace",
        "create"
      ],
      "summary": "Native Canary trace dispatcher; inspect help/exit caveats",
      "usage": "",
      "aliases": [],
      "children": [
        {
          "name": "requirement",
          "summary": "Native Canary trace dispatcher; inspect help/exit caveats"
        },
        {
          "name": "gap",
          "summary": "Native Canary trace dispatcher; inspect help/exit caveats"
        }
      ],
      "flags": [],
      "help": "{\n  \"ok\": false,\n  \"command\": \"trace create\",\n  \"error\": {\n    \"code\": \"BAD_ARGS\",\n    \"message\": \"unknown subcommand: --help\"\n  }\n}\n",
      "stderr": "Error: command failed with exit status 1\n",
      "exit": 1,
      "parser": "native_canary_dispatch"
    },
    {
      "command": "sonny canary trace create gap",
      "path": [
        "canary",
        "trace",
        "create",
        "gap"
      ],
      "summary": "Native Canary trace dispatcher; inspect help/exit caveats",
      "usage": "",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "-id",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "gap ID (e.g. GAP-0016)",
          "default_as_displayed": null,
          "group": "Native flags"
        },
        {
          "name": "-requirement",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "requirement ID this gap is against",
          "default_as_displayed": null,
          "group": "Native flags"
        },
        {
          "name": "-root",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "project root (default: cwd)",
          "default_as_displayed": null,
          "group": "Native flags"
        },
        {
          "name": "-severity",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "critical|high|medium|low (default \"medium\")",
          "default_as_displayed": "\"medium\"",
          "group": "Native flags"
        },
        {
          "name": "-status",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "initial status (default \"PROPOSED\")",
          "default_as_displayed": "\"PROPOSED\"",
          "group": "Native flags"
        },
        {
          "name": "-summary",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "one-line summary",
          "default_as_displayed": null,
          "group": "Native flags"
        },
        {
          "name": "-title",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "title",
          "default_as_displayed": null,
          "group": "Native flags"
        }
      ],
      "help": "{\n  \"ok\": false,\n  \"command\": \"trace create gap\",\n  \"error\": {\n    \"code\": \"BAD_FLAGS\",\n    \"message\": \"flag: help requested\"\n  }\n}\n",
      "stderr": "Usage of trace create gap:\n  -id string\n    \tgap ID (e.g. GAP-0016)\n  -requirement string\n    \trequirement ID this gap is against\n  -root string\n    \tproject root (default: cwd)\n  -severity string\n    \tcritical|high|medium|low (default \"medium\")\n  -status string\n    \tinitial status (default \"PROPOSED\")\n  -summary string\n    \tone-line summary\n  -title string\n    \ttitle\nError: command failed with exit status 1\n",
      "exit": 1,
      "parser": "native_canary_dispatch"
    },
    {
      "command": "sonny canary trace create requirement",
      "path": [
        "canary",
        "trace",
        "create",
        "requirement"
      ],
      "summary": "Native Canary trace dispatcher; inspect help/exit caveats",
      "usage": "",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "-id",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "requirement ID (e.g. CBIN-211)",
          "default_as_displayed": null,
          "group": "Native flags"
        },
        {
          "name": "-root",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "project root (default: cwd)",
          "default_as_displayed": null,
          "group": "Native flags"
        },
        {
          "name": "-status",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "initial status (default \"PROPOSED\")",
          "default_as_displayed": "\"PROPOSED\"",
          "group": "Native flags"
        },
        {
          "name": "-summary",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "one-line summary",
          "default_as_displayed": null,
          "group": "Native flags"
        },
        {
          "name": "-title",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "title",
          "default_as_displayed": null,
          "group": "Native flags"
        }
      ],
      "help": "{\n  \"ok\": false,\n  \"command\": \"trace create requirement\",\n  \"error\": {\n    \"code\": \"BAD_FLAGS\",\n    \"message\": \"flag: help requested\"\n  }\n}\n",
      "stderr": "Usage of trace create requirement:\n  -id string\n    \trequirement ID (e.g. CBIN-211)\n  -root string\n    \tproject root (default: cwd)\n  -status string\n    \tinitial status (default \"PROPOSED\")\n  -summary string\n    \tone-line summary\n  -title string\n    \ttitle\nError: command failed with exit status 1\n",
      "exit": 1,
      "parser": "native_canary_dispatch"
    },
    {
      "command": "sonny canary trace export",
      "path": [
        "canary",
        "trace",
        "export"
      ],
      "summary": "Native Canary trace dispatcher; inspect help/exit caveats",
      "usage": "",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "-redacted",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "apply privacy redaction (default true) (default true)",
          "default_as_displayed": "true) (default true",
          "group": "Native flags"
        },
        {
          "name": "-root",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "project root (default: cwd)",
          "default_as_displayed": null,
          "group": "Native flags"
        }
      ],
      "help": "{\n  \"ok\": false,\n  \"command\": \"trace export\",\n  \"error\": {\n    \"code\": \"BAD_FLAGS\",\n    \"message\": \"flag: help requested\"\n  }\n}\n",
      "stderr": "Usage of trace export:\n  -redacted\n    \tapply privacy redaction (default true) (default true)\n  -root string\n    \tproject root (default: cwd)\nError: command failed with exit status 1\n",
      "exit": 1,
      "parser": "native_canary_dispatch"
    },
    {
      "command": "sonny canary trace init",
      "path": [
        "canary",
        "trace",
        "init"
      ],
      "summary": "Native Canary trace dispatcher; inspect help/exit caveats",
      "usage": "",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "-root",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "project root (default: cwd)",
          "default_as_displayed": null,
          "group": "Native flags"
        }
      ],
      "help": "{\n  \"ok\": false,\n  \"command\": \"trace init\",\n  \"error\": {\n    \"code\": \"BAD_FLAGS\",\n    \"message\": \"flag: help requested\"\n  }\n}\n",
      "stderr": "Usage of trace init:\n  -root string\n    \tproject root (default: cwd)\nError: command failed with exit status 1\n",
      "exit": 1,
      "parser": "native_canary_dispatch"
    },
    {
      "command": "sonny canary trace list",
      "path": [
        "canary",
        "trace",
        "list"
      ],
      "summary": "Native Canary trace dispatcher; inspect help/exit caveats",
      "usage": "",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "-kind",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "requirement|gap (default \"gap\")",
          "default_as_displayed": "\"gap\"",
          "group": "Native flags"
        },
        {
          "name": "-limit",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "max items (capped at 50) (default 10)",
          "default_as_displayed": "10",
          "group": "Native flags"
        },
        {
          "name": "-root",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "project root (default: cwd)",
          "default_as_displayed": null,
          "group": "Native flags"
        },
        {
          "name": "-status",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "filter by status",
          "default_as_displayed": null,
          "group": "Native flags"
        }
      ],
      "help": "{\n  \"ok\": false,\n  \"command\": \"trace list\",\n  \"error\": {\n    \"code\": \"BAD_FLAGS\",\n    \"message\": \"flag: help requested\"\n  }\n}\n",
      "stderr": "Usage of trace list:\n  -kind string\n    \trequirement|gap (default \"gap\")\n  -limit int\n    \tmax items (capped at 50) (default 10)\n  -root string\n    \tproject root (default: cwd)\n  -status string\n    \tfilter by status\nError: command failed with exit status 1\n",
      "exit": 1,
      "parser": "native_canary_dispatch"
    },
    {
      "command": "sonny canary trace migrate-inline-tokens",
      "path": [
        "canary",
        "trace",
        "migrate-inline-tokens"
      ],
      "summary": "Native Canary trace dispatcher; inspect help/exit caveats",
      "usage": "",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "-evidence",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "also import .canary/evidence.json records (default true)",
          "default_as_displayed": "true",
          "group": "Native flags"
        },
        {
          "name": "-expect-plan",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "apply only if the current plan matches this preview plan ID",
          "default_as_displayed": null,
          "group": "Native flags"
        },
        {
          "name": "-plan",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "preview migration without initializing or changing tracking data",
          "default_as_displayed": null,
          "group": "Native flags"
        },
        {
          "name": "-plan-details",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "include before/after documents in the preview",
          "default_as_displayed": null,
          "group": "Native flags"
        },
        {
          "name": "-plan-limit",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "preview page size (1-100) (default 20)",
          "default_as_displayed": "20",
          "group": "Native flags"
        },
        {
          "name": "-plan-offset",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "preview page offset",
          "default_as_displayed": null,
          "group": "Native flags"
        },
        {
          "name": "-recover",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "recover an interrupted publication without starting another migration",
          "default_as_displayed": null,
          "group": "Native flags"
        },
        {
          "name": "-root",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "project root (default: cwd)",
          "default_as_displayed": null,
          "group": "Native flags"
        },
        {
          "name": "-tracking-mode",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "explicit native_canary, coexist, or trace routing; default preserves existing mode",
          "default_as_displayed": null,
          "group": "Native flags"
        }
      ],
      "help": "{\n  \"ok\": false,\n  \"command\": \"trace migrate-inline-tokens\",\n  \"error\": {\n    \"code\": \"BAD_FLAGS\",\n    \"message\": \"flag: help requested\"\n  }\n}\n",
      "stderr": "Usage of trace migrate-inline-tokens:\n  -evidence\n    \talso import .canary/evidence.json records (default true)\n  -expect-plan string\n    \tapply only if the current plan matches this preview plan ID\n  -plan\n    \tpreview migration without initializing or changing tracking data\n  -plan-details\n    \tinclude before/after documents in the preview\n  -plan-limit int\n    \tpreview page size (1-100) (default 20)\n  -plan-offset int\n    \tpreview page offset\n  -recover\n    \trecover an interrupted publication without starting another migration\n  -root string\n    \tproject root (default: cwd)\n  -tracking-mode string\n    \texplicit native_canary, coexist, or trace routing; default preserves existing mode\nError: command failed with exit status 1\n",
      "exit": 1,
      "parser": "native_canary_dispatch"
    },
    {
      "command": "sonny canary trace notes",
      "path": [
        "canary",
        "trace",
        "notes"
      ],
      "summary": "Native Canary trace dispatcher; inspect help/exit caveats",
      "usage": "",
      "aliases": [],
      "children": [
        {
          "name": "fetch",
          "summary": "Native Canary trace dispatcher; inspect help/exit caveats"
        },
        {
          "name": "push",
          "summary": "Native Canary trace dispatcher; inspect help/exit caveats"
        },
        {
          "name": "config",
          "summary": "Native Canary trace dispatcher; inspect help/exit caveats"
        }
      ],
      "flags": [],
      "help": "{\n  \"ok\": false,\n  \"command\": \"trace notes\",\n  \"error\": {\n    \"code\": \"BAD_ARGS\",\n    \"message\": \"unknown sub-target: --help\"\n  }\n}\n",
      "stderr": "Error: command failed with exit status 1\n",
      "exit": 1,
      "parser": "native_canary_dispatch"
    },
    {
      "command": "sonny canary trace notes config",
      "path": [
        "canary",
        "trace",
        "notes",
        "config"
      ],
      "summary": "Native Canary trace dispatcher; inspect help/exit caveats",
      "usage": "",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "-root",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "project root (default: cwd)",
          "default_as_displayed": null,
          "group": "Native flags"
        }
      ],
      "help": "{\n  \"ok\": false,\n  \"command\": \"trace notes config\",\n  \"error\": {\n    \"code\": \"BAD_FLAGS\",\n    \"message\": \"flag: help requested\"\n  }\n}\n",
      "stderr": "Usage of trace notes config:\n  -root string\n    \tproject root (default: cwd)\nError: command failed with exit status 1\n",
      "exit": 1,
      "parser": "native_canary_dispatch"
    },
    {
      "command": "sonny canary trace notes fetch",
      "path": [
        "canary",
        "trace",
        "notes",
        "fetch"
      ],
      "summary": "Native Canary trace dispatcher; inspect help/exit caveats",
      "usage": "",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "-remote",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "git remote (default \"origin\")",
          "default_as_displayed": "\"origin\"",
          "group": "Native flags"
        },
        {
          "name": "-root",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "project root (default: cwd)",
          "default_as_displayed": null,
          "group": "Native flags"
        }
      ],
      "help": "{\n  \"ok\": false,\n  \"command\": \"trace notes fetch\",\n  \"error\": {\n    \"code\": \"BAD_FLAGS\",\n    \"message\": \"flag: help requested\"\n  }\n}\n",
      "stderr": "Usage of trace notes fetch:\n  -remote string\n    \tgit remote (default \"origin\")\n  -root string\n    \tproject root (default: cwd)\nError: command failed with exit status 1\n",
      "exit": 1,
      "parser": "native_canary_dispatch"
    },
    {
      "command": "sonny canary trace notes push",
      "path": [
        "canary",
        "trace",
        "notes",
        "push"
      ],
      "summary": "Native Canary trace dispatcher; inspect help/exit caveats",
      "usage": "",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "-remote",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "git remote (default \"origin\")",
          "default_as_displayed": "\"origin\"",
          "group": "Native flags"
        },
        {
          "name": "-root",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "project root (default: cwd)",
          "default_as_displayed": null,
          "group": "Native flags"
        },
        {
          "name": "-skip-audit",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "skip the privacy audit (DANGEROUS)",
          "default_as_displayed": null,
          "group": "Native flags"
        }
      ],
      "help": "{\n  \"ok\": false,\n  \"command\": \"trace notes push\",\n  \"error\": {\n    \"code\": \"BAD_FLAGS\",\n    \"message\": \"flag: help requested\"\n  }\n}\n",
      "stderr": "Usage of trace notes push:\n  -remote string\n    \tgit remote (default \"origin\")\n  -root string\n    \tproject root (default: cwd)\n  -skip-audit\n    \tskip the privacy audit (DANGEROUS)\nError: command failed with exit status 1\n",
      "exit": 1,
      "parser": "native_canary_dispatch"
    },
    {
      "command": "sonny canary trace privacy-audit",
      "path": [
        "canary",
        "trace",
        "privacy-audit"
      ],
      "summary": "Native Canary trace dispatcher; inspect help/exit caveats",
      "usage": "",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "-root",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "project root (default: cwd)",
          "default_as_displayed": null,
          "group": "Native flags"
        }
      ],
      "help": "{\n  \"ok\": false,\n  \"command\": \"trace privacy-audit\",\n  \"error\": {\n    \"code\": \"BAD_FLAGS\",\n    \"message\": \"flag: help requested\"\n  }\n}\n",
      "stderr": "Usage of trace privacy-audit:\n  -root string\n    \tproject root (default: cwd)\nError: command failed with exit status 1\n",
      "exit": 1,
      "parser": "native_canary_dispatch"
    },
    {
      "command": "sonny canary trace reanchor",
      "path": [
        "canary",
        "trace",
        "reanchor"
      ],
      "summary": "Native Canary trace dispatcher; inspect help/exit caveats",
      "usage": "",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "-dry-run",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "compute outcomes without persisting",
          "default_as_displayed": null,
          "group": "Native flags"
        },
        {
          "name": "-root",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "project root (default: cwd)",
          "default_as_displayed": null,
          "group": "Native flags"
        }
      ],
      "help": "{\n  \"ok\": false,\n  \"command\": \"trace reanchor\",\n  \"error\": {\n    \"code\": \"BAD_FLAGS\",\n    \"message\": \"flag: help requested\"\n  }\n}\n",
      "stderr": "Usage of trace reanchor:\n  -dry-run\n    \tcompute outcomes without persisting\n  -root string\n    \tproject root (default: cwd)\nError: command failed with exit status 1\n",
      "exit": 1,
      "parser": "native_canary_dispatch"
    },
    {
      "command": "sonny canary trace show",
      "path": [
        "canary",
        "trace",
        "show"
      ],
      "summary": "Native Canary trace dispatcher; inspect help/exit caveats",
      "usage": "",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "-declaration-limit",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "retained declarations per page (1-100) (default 20)",
          "default_as_displayed": "20",
          "group": "Native flags"
        },
        {
          "name": "-declaration-offset",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "retained declaration offset",
          "default_as_displayed": null,
          "group": "Native flags"
        },
        {
          "name": "-expected-declaration-revision",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "require the prior page's projection revision",
          "default_as_displayed": null,
          "group": "Native flags"
        },
        {
          "name": "-id",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "subject ID",
          "default_as_displayed": null,
          "group": "Native flags"
        },
        {
          "name": "-root",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "project root (default: cwd)",
          "default_as_displayed": null,
          "group": "Native flags"
        }
      ],
      "help": "{\n  \"ok\": false,\n  \"command\": \"trace show\",\n  \"error\": {\n    \"code\": \"BAD_FLAGS\",\n    \"message\": \"flag: help requested\"\n  }\n}\n",
      "stderr": "Usage of trace show:\n  -declaration-limit int\n    \tretained declarations per page (1-100) (default 20)\n  -declaration-offset int\n    \tretained declaration offset\n  -expected-declaration-revision string\n    \trequire the prior page's projection revision\n  -id string\n    \tsubject ID\n  -root string\n    \tproject root (default: cwd)\nError: command failed with exit status 1\n",
      "exit": 1,
      "parser": "native_canary_dispatch"
    },
    {
      "command": "sonny canary trace sync",
      "path": [
        "canary",
        "trace",
        "sync"
      ],
      "summary": "Native Canary trace dispatcher; inspect help/exit caveats",
      "usage": "",
      "aliases": [],
      "children": [
        {
          "name": "gitlab",
          "summary": "Native Canary trace dispatcher; inspect help/exit caveats"
        }
      ],
      "flags": [],
      "help": "{\n  \"ok\": false,\n  \"command\": \"trace sync\",\n  \"error\": {\n    \"code\": \"BAD_ARGS\",\n    \"message\": \"unknown sub-target: --help\"\n  }\n}\n",
      "stderr": "Error: command failed with exit status 1\n",
      "exit": 1,
      "parser": "native_canary_dispatch"
    },
    {
      "command": "sonny canary trace sync gitlab",
      "path": [
        "canary",
        "trace",
        "sync",
        "gitlab"
      ],
      "summary": "Native Canary trace dispatcher; inspect help/exit caveats",
      "usage": "",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "-limit",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "max records to check (default 100)",
          "default_as_displayed": "100",
          "group": "Native flags"
        },
        {
          "name": "-project",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "GitLab project ID or path",
          "default_as_displayed": null,
          "group": "Native flags"
        },
        {
          "name": "-root",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "project root (default: cwd)",
          "default_as_displayed": null,
          "group": "Native flags"
        }
      ],
      "help": "{\n  \"ok\": false,\n  \"command\": \"trace sync gitlab\",\n  \"error\": {\n    \"code\": \"BAD_FLAGS\",\n    \"message\": \"flag: help requested\"\n  }\n}\n",
      "stderr": "Usage of trace sync gitlab:\n  -limit int\n    \tmax records to check (default 100)\n  -project string\n    \tGitLab project ID or path\n  -root string\n    \tproject root (default: cwd)\nError: command failed with exit status 1\n",
      "exit": 1,
      "parser": "native_canary_dispatch"
    },
    {
      "command": "sonny canary trace verify",
      "path": [
        "canary",
        "trace",
        "verify"
      ],
      "summary": "Native Canary trace dispatcher; inspect help/exit caveats",
      "usage": "",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "-root",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "project root (default: cwd)",
          "default_as_displayed": null,
          "group": "Native flags"
        },
        {
          "name": "-scope",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "repo|changed_paths|subject (default \"repo\")",
          "default_as_displayed": "\"repo\"",
          "group": "Native flags"
        },
        {
          "name": "-strict",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "exit non-zero on any fail finding (default true)",
          "default_as_displayed": "true",
          "group": "Native flags"
        },
        {
          "name": "-subject",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "subject ID (only for -scope=subject)",
          "default_as_displayed": null,
          "group": "Native flags"
        }
      ],
      "help": "{\n  \"ok\": false,\n  \"command\": \"trace verify\",\n  \"error\": {\n    \"code\": \"BAD_FLAGS\",\n    \"message\": \"flag: help requested\"\n  }\n}\n",
      "stderr": "Usage of trace verify:\n  -root string\n    \tproject root (default: cwd)\n  -scope string\n    \trepo|changed_paths|subject (default \"repo\")\n  -strict\n    \texit non-zero on any fail finding (default true)\n  -subject string\n    \tsubject ID (only for -scope=subject)\nError: command failed with exit status 1\n",
      "exit": 1,
      "parser": "native_canary_dispatch"
    },
    {
      "command": "sonny canary trust-toolchain",
      "path": [
        "canary",
        "trust-toolchain"
      ],
      "summary": "Propose, or record with --path, the trusted go binary for verify",
      "usage": "  sonny canary trust-toolchain [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for trust-toolchain",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "print the result as one JSON document",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--path",
          "shorthand": null,
          "type_as_displayed": "binary",
          "description": "record this go binary as evidence.toolchain_path (absolute)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Canary mints trusted (executed) evidence only with a go binary the\noperator names in .canary/project.yaml (evidence.toolchain_path); it is\nnever trusted automatically. Without --path this resolves the project's\ngo binary (GOROOT/bin/go as 'go env GOROOT' reports it here, symlinks\nresolved, so a version-manager shim is not proposed) and writes\nnothing. With --path it records that binary, symlinks resolved, as\nevidence.toolchain_path. The binary must be the go command itself: a\nshim or wrapper script is refused. Plan, apply and status never run\nthis. A refusal (no scaffold, a project without go.mod, a binary that\nis not the go command) exits 3 and writes nothing.\n\nUsage:\n  sonny canary trust-toolchain [flags]\n\nFlags:\n  -h, --help          help for trust-toolchain\n      --json          print the result as one JSON document\n      --path binary   record this go binary as evidence.toolchain_path (absolute)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny canary verify",
      "path": [
        "canary",
        "verify"
      ],
      "summary": "Run the project's tests under Canary's trusted producer",
      "usage": "  sonny canary verify [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for verify",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "print the receipt as one JSON document",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--test-parallelism",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "go test -p: test binaries run at once (default: go's, the number of CPUs)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--test-timeout",
          "shorthand": null,
          "type_as_displayed": "duration",
          "description": "go test -timeout per test duration (default 60m)",
          "default_as_displayed": "60m",
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Run the first evidence session: index the project, run its Go tests\nunder Canary's trusted producer (evidence.toolchain_path in\n.canary/project.yaml) and record a receipt in .sonny/init/canary/.\nIt exits 0 only when the run passed with trusted, eligible evidence;\n1 when a test failed; 3 when a prerequisite is missing or the\nevidence is not eligible (the receipt says why). Interrupting it stops\nthe test processes and records a cancelled receipt.\n\nThe tests run as 'go test -json -timeout=1h0m0s ./...': the timeout\napplies to each test binary and defaults to 60m (go test's own 10m\ndefault is too short for a large package on a loaded machine);\n--test-timeout sets it and --test-parallelism sets go test -p (test\nbinaries at once). The receipt records the exact command.\n\nUsage:\n  sonny canary verify [flags]\n\nFlags:\n  -h, --help                    help for verify\n      --json                    print the receipt as one JSON document\n      --test-parallelism int    go test -p: test binaries run at once (default: go's, the number of CPUs)\n      --test-timeout duration   go test -timeout per test duration (default 60m)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny capabilities",
      "path": [
        "capabilities"
      ],
      "summary": "Report which toolchain capabilities this project needs and which are usable",
      "usage": "  sonny capabilities [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--fail-on-missing",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "exit nonzero when a required capability is missing or failed",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for capabilities",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "emit the versioned JSON report instead of a table",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--timestamps",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "include first/last observation times (off by default so the report is byte-stable)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Report toolchain readiness for the current project.\n\nDetection is by root marker: a language server is REQUIRED only when the\nproject actually contains its marker file (go.mod, package.json,\npyproject.toml, ...). Each required capability is then probed and\nreported as required (its binary resolves on PATH), missing, or denied.\n\nNothing is started and nothing is installed, so nothing is reported\n\"ready\": a binary that resolves is a NOT RUN prerequisite, never proof\nthat the server initializes or is compatible. --fail-on-missing makes the\ncommand exit nonzero when a required capability is absent, so a headless\ncaller can gate on readiness before dispatching work.\n\nUnder --json, stdout carries the report and nothing else. Wall-clock\nmembers are omitted unless --timestamps is given, so the default output\nis byte-stable and diffable across runs.\n\nExit status (closed set; anything else is an unclassified defect):\n  0   ok            the report was produced; with --fail-on-missing, nothing required is missing or failed\n  3   config        the workspace is not a readable directory, or its directory config cannot be read\n  12  unavailable   --fail-on-missing was given and a required capability is missing or failed\n  15  indeterminate --fail-on-missing was given, nothing is missing, but detection was truncated\n  70  internal      the report could not be encoded -- a defect in Sonny\n\nUsage:\n  sonny capabilities [flags]\n\nFlags:\n      --fail-on-missing   exit nonzero when a required capability is missing or failed\n  -h, --help              help for capabilities\n      --json              emit the versioned JSON report instead of a table\n      --timestamps        include first/last observation times (off by default so the report is byte-stable)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny catalog",
      "path": [
        "catalog"
      ],
      "summary": "Manage the installable model-catalog registry",
      "usage": "  sonny catalog [command]",
      "aliases": [],
      "children": [
        {
          "name": "add",
          "summary": "Install a new catalog artifact into the registry"
        },
        {
          "name": "import-from-recipes",
          "summary": "Copy recipe-contributed model catalogs (import-from-packs is deprecated; removal in v0.13.0)"
        },
        {
          "name": "inspect",
          "summary": "Show the active version's manifest for an installed catalog"
        },
        {
          "name": "list",
          "summary": "List installed catalogs"
        },
        {
          "name": "remove",
          "summary": "Remove an installed catalog and every retained version"
        },
        {
          "name": "rollback",
          "summary": "Swap an installed catalog back to its last-known-good version"
        },
        {
          "name": "sync",
          "summary": "Re-fetch every installed catalog that has a recorded source"
        },
        {
          "name": "update",
          "summary": "Re-fetch and install the latest version of an installed catalog"
        }
      ],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for catalog",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Sonny installs model catalogs as signed artifacts into a registry under $XDG_DATA_HOME/sonny/catalogs, independent of recipe sources (D5). Use these subcommands to add, update, remove, inspect, roll back, or sync registry catalogs; see `sonny catalog import-from-recipes` to migrate a recipe source's old-style models: catalog into the registry.\n\nUsage:\n  sonny catalog [command]\n\nAvailable Commands:\n  add                 Install a new catalog artifact into the registry\n  import-from-recipes Copy recipe-contributed model catalogs (import-from-packs is deprecated; removal in v0.13.0)\n  inspect             Show the active version's manifest for an installed catalog\n  list                List installed catalogs\n  remove              Remove an installed catalog and every retained version\n  rollback            Swap an installed catalog back to its last-known-good version\n  sync                Re-fetch every installed catalog that has a recorded source\n  update              Re-fetch and install the latest version of an installed catalog\n\nFlags:\n  -h, --help   help for catalog\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n\nUse \"sonny catalog [command] --help\" for more information about a command.\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny catalog add",
      "path": [
        "catalog",
        "add"
      ],
      "summary": "Install a new catalog artifact into the registry",
      "usage": "  sonny catalog add <git-url|path|sonny://...> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--git-path",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "path to artifact.yaml within the repository (git sources only; default artifact.yaml)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for add",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--key",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "pin the expected Ed25519 signing key fingerprint",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--ref",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "git branch or tag to track (git sources only; default main)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--unsigned",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "accept an artifact with no signature (file sources only)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Install a new catalog artifact into the registry\n\nUsage:\n  sonny catalog add <git-url|path|sonny://...> [flags]\n\nFlags:\n      --git-path string   path to artifact.yaml within the repository (git sources only; default artifact.yaml)\n  -h, --help              help for add\n      --key string        pin the expected Ed25519 signing key fingerprint\n      --ref string        git branch or tag to track (git sources only; default main)\n      --unsigned          accept an artifact with no signature (file sources only)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny catalog import-from-recipes",
      "path": [
        "catalog",
        "import-from-recipes"
      ],
      "summary": "Copy recipe-contributed model catalogs (import-from-packs is deprecated; removal in v0.13.0)",
      "usage": "  sonny catalog import-from-recipes [flags]",
      "aliases": [
        "import-from-recipes",
        "import-from-packs"
      ],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for import-from-recipes",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--name",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "import only the named pack source",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Reads every recipe source's model catalogs (its models: files, or the default model-registry/models.yaml), wraps each source's merged catalog body in the registry's manifest envelope with provenance pack:<name>, and installs it under catalogs/pack-<name>/versions/<commit-sha>/ as an unsigned, locally-sourced catalog. Re-running against an unchanged recipe source is a no-op; a changed source installs a new version and the prior import stays as last-known-good (D19 Migration \u00a72).\n\nUsage:\n  sonny catalog import-from-recipes [flags]\n\nAliases:\n  import-from-recipes, import-from-packs\n\nFlags:\n  -h, --help          help for import-from-recipes\n      --name string   import only the named pack source\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny catalog inspect",
      "path": [
        "catalog",
        "inspect"
      ],
      "summary": "Show the active version's manifest for an installed catalog",
      "usage": "  sonny catalog inspect <id> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for inspect",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Show the active version's manifest for an installed catalog\n\nUsage:\n  sonny catalog inspect <id> [flags]\n\nFlags:\n  -h, --help   help for inspect\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny catalog list",
      "path": [
        "catalog",
        "list"
      ],
      "summary": "List installed catalogs",
      "usage": "  sonny catalog list [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for list",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "List installed catalogs\n\nUsage:\n  sonny catalog list [flags]\n\nFlags:\n  -h, --help   help for list\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny catalog remove",
      "path": [
        "catalog",
        "remove"
      ],
      "summary": "Remove an installed catalog and every retained version",
      "usage": "  sonny catalog remove <id> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for remove",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Remove an installed catalog and every retained version\n\nUsage:\n  sonny catalog remove <id> [flags]\n\nFlags:\n  -h, --help   help for remove\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny catalog rollback",
      "path": [
        "catalog",
        "rollback"
      ],
      "summary": "Swap an installed catalog back to its last-known-good version",
      "usage": "  sonny catalog rollback <id> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for rollback",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Swap an installed catalog back to its last-known-good version\n\nUsage:\n  sonny catalog rollback <id> [flags]\n\nFlags:\n  -h, --help   help for rollback\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny catalog sync",
      "path": [
        "catalog",
        "sync"
      ],
      "summary": "Re-fetch every installed catalog that has a recorded source",
      "usage": "  sonny catalog sync [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for sync",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Re-fetch every installed catalog that has a recorded source\n\nUsage:\n  sonny catalog sync [flags]\n\nFlags:\n  -h, --help   help for sync\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny catalog update",
      "path": [
        "catalog",
        "update"
      ],
      "summary": "Re-fetch and install the latest version of an installed catalog",
      "usage": "  sonny catalog update <id> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for update",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Re-fetch and install the latest version of an installed catalog\n\nUsage:\n  sonny catalog update <id> [flags]\n\nFlags:\n  -h, --help   help for update\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny commitmsg",
      "path": [
        "commitmsg"
      ],
      "summary": "Validate commit messages against the Conventional Commit + work-item policy (ENG-4428)",
      "usage": "  sonny commitmsg [command]",
      "aliases": [],
      "children": [
        {
          "name": "check",
          "summary": "Validate one commit message file (the local commit-msg hook path)"
        },
        {
          "name": "range",
          "summary": "Validate every commit message in a git commit range (the CI path)"
        }
      ],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for commitmsg",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Validate commit messages against the Conventional Commit + work-item policy (ENG-4428)\n\nUsage:\n  sonny commitmsg [command]\n\nAvailable Commands:\n  check       Validate one commit message file (the local commit-msg hook path)\n  range       Validate every commit message in a git commit range (the CI path)\n\nFlags:\n  -h, --help   help for commitmsg\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n\nUse \"sonny commitmsg [command] --help\" for more information about a command.\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny commitmsg check",
      "path": [
        "commitmsg",
        "check"
      ],
      "summary": "Validate one commit message file (the local commit-msg hook path)",
      "usage": "  sonny commitmsg check <message-file> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for check",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "emit the machine-readable Result as JSON",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "check reads the commit message git is about to record from <message-file>\n(git invokes the commit-msg hook with this path, conventionally\n.git/COMMIT_EDITMSG) and validates it against the ENG-4428 policy: a\nConventional Commit header and a required work-item reference (e.g.\n\"ENG-4428\" or a \"Refs: ENG-4428\" footer).\n\nExit status is non-zero when the message fails policy; the failure is\nnever silent and never bypassable from this command alone.\n\nUsage:\n  sonny commitmsg check <message-file> [flags]\n\nFlags:\n  -h, --help   help for check\n      --json   emit the machine-readable Result as JSON\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny commitmsg range",
      "path": [
        "commitmsg",
        "range"
      ],
      "summary": "Validate every commit message in a git commit range (the CI path)",
      "usage": "  sonny commitmsg range <base> <head> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for range",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "emit the machine-readable Results as JSON",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "range validates every commit reachable from <head> but not from <base> \u2014\nthe same commits \"git log base..head\" would list \u2014 against the ENG-4428\npolicy. It shares the exact same validation call the local commit-msg\nhook (\"sonny commitmsg check\") uses, so a CI job and a contributor's\nlocal hook agree on every commit.\n\nExit status is non-zero when any commit in the range fails policy.\n\nUsage:\n  sonny commitmsg range <base> <head> [flags]\n\nFlags:\n  -h, --help   help for range\n      --json   emit the machine-readable Results as JSON\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny completion",
      "path": [
        "completion"
      ],
      "summary": "Generate the autocompletion script for the specified shell",
      "usage": "  sonny completion [command]",
      "aliases": [],
      "children": [
        {
          "name": "bash",
          "summary": "Generate the autocompletion script for bash"
        },
        {
          "name": "fish",
          "summary": "Generate the autocompletion script for fish"
        },
        {
          "name": "powershell",
          "summary": "Generate the autocompletion script for powershell"
        },
        {
          "name": "zsh",
          "summary": "Generate the autocompletion script for zsh"
        }
      ],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for completion",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Generate the autocompletion script for sonny for the specified shell.\nSee each sub-command's help for details on how to use the generated script.\n\nUsage:\n  sonny completion [command]\n\nAvailable Commands:\n  bash        Generate the autocompletion script for bash\n  fish        Generate the autocompletion script for fish\n  powershell  Generate the autocompletion script for powershell\n  zsh         Generate the autocompletion script for zsh\n\nFlags:\n  -h, --help   help for completion\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n\nUse \"sonny completion [command] --help\" for more information about a command.\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny completion bash",
      "path": [
        "completion",
        "bash"
      ],
      "summary": "Generate the autocompletion script for bash",
      "usage": "  sonny completion bash",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for bash",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--no-descriptions",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "disable completion descriptions",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Generate the autocompletion script for the bash shell.\n\nThis script depends on the 'bash-completion' package.\nIf it is not installed already, you can install it via your OS's package manager.\n\nTo load completions in your current shell session:\n\n\tsource <(sonny completion bash)\n\nTo load completions for every new session, execute once:\n\n#### Linux:\n\n\tsonny completion bash > /etc/bash_completion.d/sonny\n\n#### macOS:\n\n\tsonny completion bash > $(brew --prefix)/etc/bash_completion.d/sonny\n\nYou will need to start a new shell for this setup to take effect.\n\nUsage:\n  sonny completion bash\n\nFlags:\n  -h, --help              help for bash\n      --no-descriptions   disable completion descriptions\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny completion fish",
      "path": [
        "completion",
        "fish"
      ],
      "summary": "Generate the autocompletion script for fish",
      "usage": "  sonny completion fish [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for fish",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--no-descriptions",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "disable completion descriptions",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Generate the autocompletion script for the fish shell.\n\nTo load completions in your current shell session:\n\n\tsonny completion fish | source\n\nTo load completions for every new session, execute once:\n\n\tsonny completion fish > ~/.config/fish/completions/sonny.fish\n\nYou will need to start a new shell for this setup to take effect.\n\nUsage:\n  sonny completion fish [flags]\n\nFlags:\n  -h, --help              help for fish\n      --no-descriptions   disable completion descriptions\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny completion powershell",
      "path": [
        "completion",
        "powershell"
      ],
      "summary": "Generate the autocompletion script for powershell",
      "usage": "  sonny completion powershell [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for powershell",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--no-descriptions",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "disable completion descriptions",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Generate the autocompletion script for powershell.\n\nTo load completions in your current shell session:\n\n\tsonny completion powershell | Out-String | Invoke-Expression\n\nTo load completions for every new session, add the output of the above command\nto your powershell profile.\n\nUsage:\n  sonny completion powershell [flags]\n\nFlags:\n  -h, --help              help for powershell\n      --no-descriptions   disable completion descriptions\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny completion zsh",
      "path": [
        "completion",
        "zsh"
      ],
      "summary": "Generate the autocompletion script for zsh",
      "usage": "  sonny completion zsh [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for zsh",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--no-descriptions",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "disable completion descriptions",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Generate the autocompletion script for the zsh shell.\n\nIf shell completion is not already enabled in your environment you will need\nto enable it.  You can execute the following once:\n\n\techo \"autoload -U compinit; compinit\" >> ~/.zshrc\n\nTo load completions in your current shell session:\n\n\tsource <(sonny completion zsh)\n\nTo load completions for every new session, execute once:\n\n#### Linux:\n\n\tsonny completion zsh > \"${fpath[1]}/_sonny\"\n\n#### macOS:\n\n\tsonny completion zsh > $(brew --prefix)/share/zsh/site-functions/_sonny\n\nYou will need to start a new shell for this setup to take effect.\n\nUsage:\n  sonny completion zsh [flags]\n\nFlags:\n  -h, --help              help for zsh\n      --no-descriptions   disable completion descriptions\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny config",
      "path": [
        "config"
      ],
      "summary": "Manage configuration",
      "usage": "  sonny config [command]",
      "aliases": [],
      "children": [
        {
          "name": "explain",
          "summary": "Show which source supplies each configuration value, and which candidates lost"
        },
        {
          "name": "init",
          "summary": "Add a starter directory: block to .sonny.yaml"
        },
        {
          "name": "path",
          "summary": "Show every standard configuration / data / cache path"
        },
        {
          "name": "resource-reuse",
          "summary": "Show the effective resource_reuse configuration and its digest"
        },
        {
          "name": "show",
          "summary": "Show current configuration"
        },
        {
          "name": "validate",
          "summary": "Validate resolved analysis configuration and inherited restrictions"
        }
      ],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for config",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Manage sonny configuration.\n\nConfiguration can be specified via:\n- Command line flags\n- Environment variables (SONNY_* prefix)\n- Configuration file (.sonny.yaml in the working directory, then $HOME)\n- Directory configuration (the directory: block of every .sonny.yaml\n  from the filesystem root down to the working directory; created by\n  `sonny config init`)\n\nUsage:\n  sonny config [command]\n\nAvailable Commands:\n  explain        Show which source supplies each configuration value, and which candidates lost\n  init           Add a starter directory: block to .sonny.yaml\n  path           Show every standard configuration / data / cache path\n  resource-reuse Show the effective resource_reuse configuration and its digest\n  show           Show current configuration\n  validate       Validate resolved analysis configuration and inherited restrictions\n\nFlags:\n  -h, --help   help for config\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n\nUse \"sonny config [command] --help\" for more information about a command.\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny config explain",
      "path": [
        "config",
        "explain"
      ],
      "summary": "Show which source supplies each configuration value, and which candidates lost",
      "usage": "  sonny config explain [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for explain",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "emit the versioned JSON envelope on stdout",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--supervisor-deployment",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "inspect this protected deployment without activation (default: SONNY_SUPERVISOR_DEPLOYMENT)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "explain resolves every configuration key through the one precedence\nrule \u2014 flag, then environment, then the project .sonny config chain\n(deepest directory first), then the per-user config, then the built-in\ndefault \u2014 and prints the winner together with every candidate that lost\nand where it lives.\n\nSecret-bearing keys report presence and location only; their values are\nnever printed.\n\nUsage:\n  sonny config explain [flags]\n\nFlags:\n  -h, --help                           help for explain\n      --json                           emit the versioned JSON envelope on stdout\n      --supervisor-deployment string   inspect this protected deployment without activation (default: SONNY_SUPERVISOR_DEPLOYMENT)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny config init",
      "path": [
        "config",
        "init"
      ],
      "summary": "Add a starter directory: block to .sonny.yaml",
      "usage": "  sonny config init [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--force",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "replace an existing directory: block, create ./.sonny.yaml even when it hides $HOME/.sonny.yaml, or write through a symlink that dangles or leaves the working directory",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for init",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Add a starter directory: block to .sonny.yaml in the current directory.\n\nThe block configures language servers. sonny lsp, sonny capabilities\nand sonny-api read it from the working directory only;\nsonny config show also merges the blocks of every .sonny.yaml from the\nfilesystem root down to the working directory.\n\nWhen ./.sonny.yaml (or ./.sonny.yml) exists, the block is appended to\nit and every existing byte is kept. When it does not exist and $HOME\nhas a .sonny.yaml, init refuses: sonny reads top-level settings from\nthe first .sonny.yaml it finds (. then $HOME), so a new ./.sonny.yaml\nwould hide the home file in this directory. A symlinked file is\nfollowed only when its target exists inside the working directory.\n\n--force replaces an existing directory: block (re-encoding the file,\nso its comments stay but its layout may change), creates ./.sonny.yaml\neven when it hides the home file, and writes through a symlink that\ndangles or leaves the working directory.\n\nUsage:\n  sonny config init [flags]\n\nFlags:\n      --force   replace an existing directory: block, create ./.sonny.yaml even when it hides $HOME/.sonny.yaml, or write through a symlink that dangles or leaves the working directory\n  -h, --help    help for init\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny config path",
      "path": [
        "config",
        "path"
      ],
      "summary": "Show every standard configuration / data / cache path",
      "usage": "  sonny config path [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for path",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Print the standard sonny path layout for this host.\n\nIncludes config (models.yaml, pack-sources.yaml, agents.yaml), data\n(sessions.db, packs/), cache (cloned recipe repos), state (including\nagent-availability.yaml), and the loaded cobra config file.\n\nThese paths follow the XDG basedir spec on Linux, macOS Library layout\non Darwin, and AppData on Windows. Override any of them by setting\n$XDG_CONFIG_HOME, $XDG_DATA_HOME, or $XDG_CACHE_HOME.\n\nUsage:\n  sonny config path [flags]\n\nFlags:\n  -h, --help   help for path\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny config resource-reuse",
      "path": [
        "config",
        "resource-reuse"
      ],
      "summary": "Show the effective resource_reuse configuration and its digest",
      "usage": "  sonny config resource-reuse [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for resource-reuse",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "emit the versioned JSON envelope on stdout",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Show the effective resource_reuse block: package defaults, overlaid with the\n.sonny.yaml resource_reuse section, overlaid with the five SONNY_RESOURCE_REUSE_*\nenvironment variables. There are no flags for this section.\n\nThe digest is the value resource-reuse telemetry stamps on its events, so a\nrecorded event can be matched back to the settings that produced it.\n\nThis reports configuration only. It does not read any file, start a session, or\nattest that a reuse or a write precondition would be applied to a given call.\n\nUsage:\n  sonny config resource-reuse [flags]\n\nFlags:\n  -h, --help   help for resource-reuse\n      --json   emit the versioned JSON envelope on stdout\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny config show",
      "path": [
        "config",
        "show"
      ],
      "summary": "Show current configuration",
      "usage": "  sonny config show [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for show",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--supervisor-deployment",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "inspect this protected deployment without activation (default: SONNY_SUPERVISOR_DEPLOYMENT)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Show the current effective configuration.\n\nThis displays all configuration values from all sources\n(files, environment, flags) merged together.\n\nUsage:\n  sonny config show [flags]\n\nFlags:\n  -h, --help                           help for show\n      --supervisor-deployment string   inspect this protected deployment without activation (default: SONNY_SUPERVISOR_DEPLOYMENT)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny config validate",
      "path": [
        "config",
        "validate"
      ],
      "summary": "Validate resolved analysis configuration and inherited restrictions",
      "usage": "  sonny config validate [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for validate",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "emit the versioned JSON envelope on stdout",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--supervisor-deployment",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "inspect this protected deployment without activation (default: SONNY_SUPERVISOR_DEPLOYMENT)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Validate analysis.version=1 against the selected protected operator base, then user, global, project, environment and invocation layers. Report known startup blockers without activating analysis. Graph and policy validation does not attest provider capabilities or authorize model calls.\n\nUsage:\n  sonny config validate [flags]\n\nFlags:\n  -h, --help                           help for validate\n      --json                           emit the versioned JSON envelope on stdout\n      --supervisor-deployment string   inspect this protected deployment without activation (default: SONNY_SUPERVISOR_DEPLOYMENT)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny conformance",
      "path": [
        "conformance"
      ],
      "summary": "Run the conformance harness, qualification matrix, and release dossier",
      "usage": "  sonny conformance [command]",
      "aliases": [],
      "children": [
        {
          "name": "cert",
          "summary": "Inspect and verify signed conformance certificates"
        },
        {
          "name": "dossier",
          "summary": "Assemble the immutable release evidence bundle"
        },
        {
          "name": "drill",
          "summary": "Execute one or every ENG-4539 recovery drill and record its sealed result"
        },
        {
          "name": "gates",
          "summary": "Print the effective runtime migration and removal controls"
        },
        {
          "name": "matrix",
          "summary": "Execute the qualification matrix, recording NOT RUN for what this host cannot run"
        },
        {
          "name": "run",
          "summary": "Execute the invariant corpus against the synthetic organization"
        }
      ],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for conformance",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "sonny conformance groups the assurance plane:\n\n  run       execute the invariant corpus against the synthetic organization\n  matrix    execute the platform/adapter/provider qualification matrix,\n            recording NOT RUN plus the exact operator command for every\n            combination this host cannot execute\n  gates     print the machine-readable deployment-control contract,\n            including effective mode, owner, evidence, and removal release\n  drill     execute one or every ENG-4539 recovery drill and record its\n            sealed result\n  cert      inspect and verify signed conformance certificates\n  dossier   assemble the immutable release evidence bundle\n\nNOT RUN is a first-class outcome. A combination this host cannot execute is\nnever reported as passing.\n\nUsage:\n  sonny conformance [command]\n\nAvailable Commands:\n  cert        Inspect and verify signed conformance certificates\n  dossier     Assemble the immutable release evidence bundle\n  drill       Execute one or every ENG-4539 recovery drill and record its sealed result\n  gates       Print the effective runtime migration and removal controls\n  matrix      Execute the qualification matrix, recording NOT RUN for what this host cannot run\n  run         Execute the invariant corpus against the synthetic organization\n\nFlags:\n  -h, --help   help for conformance\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n\nUse \"sonny conformance [command] --help\" for more information about a command.\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny conformance cert",
      "path": [
        "conformance",
        "cert"
      ],
      "summary": "Inspect and verify signed conformance certificates",
      "usage": "  sonny conformance cert [command]",
      "aliases": [],
      "children": [
        {
          "name": "verify",
          "summary": "Verify a certificate's signature and expiry against a trusted issuer key"
        }
      ],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for cert",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Inspect and verify signed conformance certificates\n\nUsage:\n  sonny conformance cert [command]\n\nAvailable Commands:\n  verify      Verify a certificate's signature and expiry against a trusted issuer key\n\nFlags:\n  -h, --help   help for cert\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n\nUse \"sonny conformance cert [command] --help\" for more information about a command.\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny conformance cert verify",
      "path": [
        "conformance",
        "cert",
        "verify"
      ],
      "summary": "Verify a certificate's signature and expiry against a trusted issuer key",
      "usage": "  sonny conformance cert verify [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--cert",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "path to the certificate JSON file (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for verify",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "emit the verification result as JSON",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--trusted-key",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "path to the trusted issuer's ed25519 public key, base64 or hex encoded (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "conformance cert verify checks a signed conformance certificate two ways:\nthe certificate's own embedded public key must match the operator-supplied\ntrusted key (--trusted-key), and the certificate's signature, contract and\nexpiry must verify against that key. A certificate that merely verifies\nagainst its own embedded key -- without a trusted key pinning who issued it\n-- proves nothing: anyone can self-sign. Neither check alone is sufficient;\nboth must pass for VERIFIED.\n\nUsage:\n  sonny conformance cert verify [flags]\n\nFlags:\n      --cert string          path to the certificate JSON file (required)\n  -h, --help                 help for verify\n      --json                 emit the verification result as JSON\n      --trusted-key string   path to the trusted issuer's ed25519 public key, base64 or hex encoded (required)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny conformance dossier",
      "path": [
        "conformance",
        "dossier"
      ],
      "summary": "Assemble the immutable release evidence bundle",
      "usage": "  sonny conformance dossier [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for dossier",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--out",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "directory to write the immutable bundle into (must not exist) (default \"release-dossier\")",
          "default_as_displayed": "\"release-dossier\"",
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Assemble the immutable release evidence bundle\n\nUsage:\n  sonny conformance dossier [flags]\n\nFlags:\n  -h, --help         help for dossier\n      --out string   directory to write the immutable bundle into (must not exist) (default \"release-dossier\")\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny conformance drill",
      "path": [
        "conformance",
        "drill"
      ],
      "summary": "Execute one or every ENG-4539 recovery drill and record its sealed result",
      "usage": "  sonny conformance drill [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--allow-unstamped-build",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "explicitly waive the ldflags build stamp requirement (a plain go build/go test binary; every drill is otherwise capped at NOT RUN)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--assessor",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "independent observer identity recorded on every result (required, ENG-4539)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for drill",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--id",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "run only this drill id (default: every drill in the catalog)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "emit the full report as JSON",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--log-dir",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "directory retaining each drill's raw log (default \"conformance-logs\")",
          "default_as_displayed": "\"conformance-logs\"",
          "group": "Flags"
        },
        {
          "name": "--script-dir",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "directory containing the drill scripts (default \"conformance/drill/scripts\")",
          "default_as_displayed": "\"conformance/drill/scripts\"",
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "conformance drill runs the mandatory ENG-4539 recovery drills: real\noperations against a disposable environment, never a tabletop exercise. A\ndrill whose subsystem does not exist at the pinned baseline is NOT RUN with\nthe owning issue, never skipped silently.\n\n--id runs a single drill (freeze, restore, rollback, dr-rebuild,\nkey-rotation, effect-reconciliation, clean-room); omitted, every drill in\nthe catalog runs in order.\n\nUsage:\n  sonny conformance drill [flags]\n\nFlags:\n      --allow-unstamped-build   explicitly waive the ldflags build stamp requirement (a plain go build/go test binary; every drill is otherwise capped at NOT RUN)\n      --assessor string         independent observer identity recorded on every result (required, ENG-4539)\n  -h, --help                    help for drill\n      --id string               run only this drill id (default: every drill in the catalog)\n      --json                    emit the full report as JSON\n      --log-dir string          directory retaining each drill's raw log (default \"conformance-logs\")\n      --script-dir string       directory containing the drill scripts (default \"conformance/drill/scripts\")\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny conformance gates",
      "path": [
        "conformance",
        "gates"
      ],
      "summary": "Print the effective runtime migration and removal controls",
      "usage": "  sonny conformance gates [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for gates",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "emit the full report as JSON",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Print the effective runtime migration and removal controls\n\nUsage:\n  sonny conformance gates [flags]\n\nFlags:\n  -h, --help   help for gates\n      --json   emit the full report as JSON\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny conformance matrix",
      "path": [
        "conformance",
        "matrix"
      ],
      "summary": "Execute the qualification matrix, recording NOT RUN for what this host cannot run",
      "usage": "  sonny conformance matrix [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--allow-unstamped-build",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "explicitly waive the ldflags build stamp requirement (a plain go build/go test binary; every cell is otherwise capped at NOT RUN)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--assessor",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "assessor identity recorded on every result (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for matrix",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "emit the full report as JSON",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--log-dir",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "directory retaining each cell's raw log (default \"conformance-logs\")",
          "default_as_displayed": "\"conformance-logs\"",
          "group": "Flags"
        },
        {
          "name": "--provider-tier",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "provider tier: emulated, sandbox, or live (default \"emulated\")",
          "default_as_displayed": "\"emulated\"",
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Execute the qualification matrix, recording NOT RUN for what this host cannot run\n\nUsage:\n  sonny conformance matrix [flags]\n\nFlags:\n      --allow-unstamped-build   explicitly waive the ldflags build stamp requirement (a plain go build/go test binary; every cell is otherwise capped at NOT RUN)\n      --assessor string         assessor identity recorded on every result (required)\n  -h, --help                    help for matrix\n      --json                    emit the full report as JSON\n      --log-dir string          directory retaining each cell's raw log (default \"conformance-logs\")\n      --provider-tier string    provider tier: emulated, sandbox, or live (default \"emulated\")\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny conformance run",
      "path": [
        "conformance",
        "run"
      ],
      "summary": "Execute the invariant corpus against the synthetic organization",
      "usage": "  sonny conformance run [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--allow-unstamped-build",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "explicitly waive the ldflags build stamp requirement (a plain go build/go test binary; every case is otherwise capped at NOT RUN)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--assessor",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "assessor identity recorded on every result (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for run",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "emit the full report as JSON",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--log-dir",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "directory retaining each case's raw log (default \"conformance-logs\")",
          "default_as_displayed": "\"conformance-logs\"",
          "group": "Flags"
        },
        {
          "name": "--provider-tier",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "provider tier: emulated, sandbox, or live (default \"emulated\")",
          "default_as_displayed": "\"emulated\"",
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Execute the invariant corpus against the synthetic organization\n\nUsage:\n  sonny conformance run [flags]\n\nFlags:\n      --allow-unstamped-build   explicitly waive the ldflags build stamp requirement (a plain go build/go test binary; every case is otherwise capped at NOT RUN)\n      --assessor string         assessor identity recorded on every result (required)\n  -h, --help                    help for run\n      --json                    emit the full report as JSON\n      --log-dir string          directory retaining each case's raw log (default \"conformance-logs\")\n      --provider-tier string    provider tier: emulated, sandbox, or live (default \"emulated\")\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny context",
      "path": [
        "context"
      ],
      "summary": "Inspect, validate, and assemble context-efficiency data",
      "usage": "  sonny context [command]",
      "aliases": [],
      "children": [
        {
          "name": "pack",
          "summary": "Assemble an offline ctxm.Packet from a transcript file, with honest drop accounting"
        },
        {
          "name": "stats",
          "summary": "Summarize context-efficiency metrics for a session or time range"
        },
        {
          "name": "validate",
          "summary": "Verify context-efficiency invariants for a session"
        }
      ],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for context",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "sonny context groups the context-efficiency tooling:\n\n  stats     summarize trace-store metrics for a session or time range\n            (equivalent to the standalone \"sonny context-stats\")\n  validate  assert cross-plan invariants for a session, exiting\n            non-zero on any violation\n            (equivalent to the standalone \"sonny context-validate\")\n  pack      offline: assemble a ctxm.Packet from a JSON transcript file\n            and a token budget, reporting honest drop accounting\n            (dropped_messages/dropped_bytes) -- no trace store involved\n\nUsage:\n  sonny context [command]\n\nAvailable Commands:\n  pack        Assemble an offline ctxm.Packet from a transcript file, with honest drop accounting\n  stats       Summarize context-efficiency metrics for a session or time range\n  validate    Verify context-efficiency invariants for a session\n\nFlags:\n  -h, --help   help for context\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n\nUse \"sonny context [command] --help\" for more information about a command.\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny context pack",
      "path": [
        "context",
        "pack"
      ],
      "summary": "Assemble an offline ctxm.Packet from a transcript file, with honest drop accounting",
      "usage": "  sonny context pack [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--budget",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "total token budget (overrides --window when set)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for pack",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--markers",
          "shorthand": null,
          "type_as_displayed": "strings",
          "description": "comma-separated markers to score continuation survival for",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--output-reserve",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "tokens reserved for output (default: window-or-budget/10)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--pretty",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "pretty-print JSON output (--format json); false emits one line (default true)",
          "default_as_displayed": "true",
          "group": "Flags"
        },
        {
          "name": "--strict",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "exit non-zero when dropped_messages > 0 or loss_categories is non-empty",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--transcript",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "transcript JSON file ([{\"role\",\"content\"}, ...]); \"-\" or omitted reads stdin",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--window",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "total token budget (default 8000)",
          "default_as_displayed": "8000",
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "pack reads a flat JSON transcript ([{\"role\":...,\"content\":...}, ...])\nfrom --transcript (a file path, \"-\", or omitted -- all three read\nstdin), maps it onto a ctxm.Packet (the first user-role message becomes\nthe immutable Objective; every other message becomes the recency\nwindow -- see ctxwire.PacketFromMessages), and fits it to a token\nbudget with ctxm.Assembler.\n\nReport fields:\n\n  dropped_messages / dropped_bytes\n      len(before.RecentRaw)-len(after.RecentRaw) and the raw content\n      bytes that went with them. This is the FIRST-CLASS honesty gate:\n      --strict fails the command when either dropped_messages > 0 OR\n      loss_categories is non-empty.\n\n  loss_categories\n      ctxm.CheckLossPolicy(before, after) output. For this mapping\n      (objective/constraints only -- no phase, frontier, decisions, or\n      evidence populated) this is EXPECTED TO BE EMPTY even when\n      messages were dropped: CheckLossPolicy cannot see RecentRaw\n      trimming at all. It is included for completeness and forward\n      compatibility, never as the drop signal -- use dropped_messages\n      for that.\n\n  continuation\n      ctxm.EvaluateContinuation(before.RecentRaw, after, markers),\n      included only when --markers is given; null otherwise.\n\nExit status: non-zero on a malformed transcript, an\nErrContractExceedsBudget (the objective+constraints alone do not fit\nthe budget), or --strict catching a drop.\n\nUsage:\n  sonny context pack [flags]\n\nFlags:\n      --budget int           total token budget (overrides --window when set)\n      --format string        text|json (default \"text\")\n  -h, --help                 help for pack\n      --markers strings      comma-separated markers to score continuation survival for\n      --output-reserve int   tokens reserved for output (default: window-or-budget/10)\n      --pretty               pretty-print JSON output (--format json); false emits one line (default true)\n      --strict               exit non-zero when dropped_messages > 0 or loss_categories is non-empty\n      --transcript string    transcript JSON file ([{\"role\",\"content\"}, ...]); \"-\" or omitted reads stdin\n      --window int           total token budget (default 8000)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny context stats",
      "path": [
        "context",
        "stats"
      ],
      "summary": "Summarize context-efficiency metrics for a session or time range",
      "usage": "  sonny context stats [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for stats",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--session",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "session id to summarize (default: all)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--since",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "time range (e.g. 24h, 7d) (default \"24h\")",
          "default_as_displayed": "\"24h\"",
          "group": "Flags"
        },
        {
          "name": "--store",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "path to trace store DB (default: ~/.sonny/trace/cache.db)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--tenant",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "tenant id filter (default: all)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Summarize the headline context-efficiency metrics from the trace store:\ncache hit rate, semantic-cache hit precision (per cluster), compression ratio\nand retention score, prefix churn, and provider cached-token percentage.\n\nPass --session to scope to a single session, --tenant to filter by tenant, or\n--since (e.g. 24h) to limit to recent activity.\n\nUsage:\n  sonny context stats [flags]\n\nFlags:\n  -h, --help             help for stats\n      --session string   session id to summarize (default: all)\n      --since string     time range (e.g. 24h, 7d) (default \"24h\")\n      --store string     path to trace store DB (default: ~/.sonny/trace/cache.db)\n      --tenant string    tenant id filter (default: all)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny context validate",
      "path": [
        "context",
        "validate"
      ],
      "summary": "Verify context-efficiency invariants for a session",
      "usage": "  sonny context validate <session-id> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for validate",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--store",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "path to trace store DB (default: ~/.sonny/trace/cache.db)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--tenant",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "tenant id this session must be scoped to (optional)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Assert that the cross-plan invariants held for a session:\n\n  - shell stability    : cache_layout.shell_digest never changed mid-session\n  - tenant isolation   : no record references a tenant other than the session's\n  - retention floor    : every compaction's retention_score stayed above floor\n  - return contracts   : every handoff_packet had a matching, well-formed reply\n\nExits non-zero on any failure so CI pipelines can gate on it.\n\nUsage:\n  sonny context validate <session-id> [flags]\n\nFlags:\n  -h, --help            help for validate\n      --store string    path to trace store DB (default: ~/.sonny/trace/cache.db)\n      --tenant string   tenant id this session must be scoped to (optional)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny context-stats",
      "path": [
        "context-stats"
      ],
      "summary": "Summarize context-efficiency metrics for a session or time range",
      "usage": "  sonny context-stats [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for context-stats",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--session",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "session id to summarize (default: all)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--since",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "time range (e.g. 24h, 7d) (default \"24h\")",
          "default_as_displayed": "\"24h\"",
          "group": "Flags"
        },
        {
          "name": "--store",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "path to trace store DB (default: ~/.sonny/trace/cache.db)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--tenant",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "tenant id filter (default: all)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Summarize the headline context-efficiency metrics from the trace store:\ncache hit rate, semantic-cache hit precision (per cluster), compression ratio\nand retention score, prefix churn, and provider cached-token percentage.\n\nPass --session to scope to a single session, --tenant to filter by tenant, or\n--since (e.g. 24h) to limit to recent activity.\n\nUsage:\n  sonny context-stats [flags]\n\nFlags:\n  -h, --help             help for context-stats\n      --session string   session id to summarize (default: all)\n      --since string     time range (e.g. 24h, 7d) (default \"24h\")\n      --store string     path to trace store DB (default: ~/.sonny/trace/cache.db)\n      --tenant string    tenant id filter (default: all)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny context-validate",
      "path": [
        "context-validate"
      ],
      "summary": "Verify context-efficiency invariants for a session",
      "usage": "  sonny context-validate <session-id> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for context-validate",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--store",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "path to trace store DB (default: ~/.sonny/trace/cache.db)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--tenant",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "tenant id this session must be scoped to (optional)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Assert that the cross-plan invariants held for a session:\n\n  - shell stability    : cache_layout.shell_digest never changed mid-session\n  - tenant isolation   : no record references a tenant other than the session's\n  - retention floor    : every compaction's retention_score stayed above floor\n  - return contracts   : every handoff_packet had a matching, well-formed reply\n\nExits non-zero on any failure so CI pipelines can gate on it.\n\nUsage:\n  sonny context-validate <session-id> [flags]\n\nFlags:\n  -h, --help            help for context-validate\n      --store string    path to trace store DB (default: ~/.sonny/trace/cache.db)\n      --tenant string   tenant id this session must be scoped to (optional)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny control",
      "path": [
        "control"
      ],
      "summary": "Inspect Sonny's authority control plane",
      "usage": "  sonny control [command]",
      "aliases": [],
      "children": [
        {
          "name": "budgets",
          "summary": "Show this month's routing budget spend per organization, project and principal"
        },
        {
          "name": "gc",
          "summary": "Compact and prune the control-plane database, optionally reclaiming file space"
        },
        {
          "name": "migration",
          "summary": "Diagnose or recover a verified SQLite migration boundary"
        },
        {
          "name": "status",
          "summary": "Report the effective authority mode, suppliers, and lease"
        }
      ],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for control",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Inspect Sonny's authority control plane\n\nUsage:\n  sonny control [command]\n\nAvailable Commands:\n  budgets     Show this month's routing budget spend per organization, project and principal\n  gc          Compact and prune the control-plane database, optionally reclaiming file space\n  migration   Diagnose or recover a verified SQLite migration boundary\n  status      Report the effective authority mode, suppliers, and lease\n\nFlags:\n  -h, --help   help for control\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n\nUse \"sonny control [command] --help\" for more information about a command.\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny control budgets",
      "path": [
        "control",
        "budgets"
      ],
      "summary": "Show this month's routing budget spend per organization, project and principal",
      "usage": "  sonny control budgets [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--control-db",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "control-plane SQLite database path (default: $SONNY_CONTROL_DB, then control.db in the data directory; ignored when SONNY_CONTROL_PG_DSN is set)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for budgets",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "print JSON instead of a table",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--tenant",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "tenant whose budgets to show (default \"local\")",
          "default_as_displayed": "\"local\"",
          "group": "Flags"
        },
        {
          "name": "--window",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "UTC month to show, as YYYY-MM (default: the current month)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "sonny control budgets lists the organization, project and principal routing\nbudget accounts of one tenant for one UTC calendar month (default: the\ncurrent month): what each has spent, what it holds reserved for calls still\nrunning, and its limit for the month. Those three caps apply per UTC month;\nsession, turn and child caps are not listed. A lifetime account written\nbefore monthly windows is also listed, with window \"lifetime\", while it\nstill exists: it only settles holds reserved before the upgrade.\n\nIt reads the control store gc would select and never writes to it: it never\ncreates a missing SQLite file and never applies a migration. It refuses a\nstore whose schema is not this binary's; upgrade that store first by running\nsonny control gc with this binary, after reading the pre-upgrade notes in the\nenvironment reference if the store is large. When SONNY_CONTROL_PG_DSN is set\nit reads that Postgres control plane instead of the local SQLite file.\n\nUsage:\n  sonny control budgets [flags]\n\nFlags:\n      --control-db string   control-plane SQLite database path (default: $SONNY_CONTROL_DB, then control.db in the data directory; ignored when SONNY_CONTROL_PG_DSN is set)\n  -h, --help                help for budgets\n      --json                print JSON instead of a table\n      --tenant string       tenant whose budgets to show (default \"local\")\n      --window string       UTC month to show, as YYYY-MM (default: the current month)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny control gc",
      "path": [
        "control",
        "gc"
      ],
      "summary": "Compact and prune the control-plane database, optionally reclaiming file space",
      "usage": "  sonny control gc [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--control-db",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "control-plane SQLite database path (default: $SONNY_CONTROL_DB, then control.db in the data directory; ignored when SONNY_CONTROL_PG_DSN is set)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for gc",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--paused-plan-retention",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "remove whole plans paused for longer than this Go duration, even when --retention is off; never shorter than --retention (default 2160h; 0 or off keeps paused plans)",
          "default_as_displayed": "2160h; 0 or off keeps paused plans",
          "group": "Flags"
        },
        {
          "name": "--retention",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "remove runtime sessions, routing circuit history and routing ledgers, and settle stale budget holds, untouched for longer than this Go duration (default 720h; 0 or off keeps all of them)",
          "default_as_displayed": "720h; 0 or off keeps all of them",
          "group": "Flags"
        },
        {
          "name": "--vacuum",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "rebuild the database file after the sweep so freed pages return to the filesystem (SQLite only; rejected against a Postgres control plane, see SONNY_CONTROL_PG_DSN)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "sonny control gc runs the control-store sweep to completion: it removes the\ncheckpoint rows below each runtime session's head (a journal written before\nhead-only retention keeps every one), prunes runtime sessions whose journal\nhas not been written for longer than the retention window (default 30 days,\nSONNY_CONTROL_RETENTION overrides it, 0/off keeps every session), and\nreclaims the blobs those rows pinned. It also removes routing circuit\nobservations older than the same window (never less than a day), then the\nclosed circuits left with no observation at all; open and half-open circuits\nare always kept. It also removes routing ledgers nothing still needs: a task's\nroute records once every one is older than the retention and none names a\nlive session, top-level retry budgets older than the retention (a route\nretry budget only once its decision's record is gone too; any other, such\nas an analysis branch's, on age alone, so a retry after that is refused),\nand reconciled budget reservations no surviving runtime session's journal\nnames. An active route-budget hold that was never reconciled (its usage\nwas never reported, overran the hold, or failed to record) is settled once\nolder than the retention at its full held amount (moved from reserved to\nspent: nothing is refunded, and an overrun is charged no more than was\nheld) and is then pruned like any reconciled reservation. Each batch\nlogs one warning summarizing the holds it settled (count, tenants, held\ncost per currency), and each hold at debug level;\na stale hold whose own reservation or accounts are missing or invalid is\nleft active and reported as an error on every run, and the rest still\nsettle. Child and turn budget accounts idle for longer than the retention\nwith nothing reserved are removed (turn caps apply per 1 h UTC hour\nwindow). Organization, project and principal budget caps apply per UTC\ncalendar month, one account per month, and session caps per 24 h UTC day\nwindow, one account per day. Such an account is removed only once it has\nbeen idle for longer than the retention with nothing reserved in any\ndimension, and either its window ended before the retention cut-off's\nwindow or it is a lifetime account written before its windows; the current\nwindow's accounts are always kept. Transferred child retry budgets and every\nother active reservation are always kept.\n\nPlans paused for longer than the paused-plan retention (default 90 days,\nSONNY_CONTROL_PAUSED_PLAN_RETENTION or --paused-plan-retention overrides\nit, 0/off keeps them) are removed whole, attempts included, even when the\nsession retention is off. That cut-off is never shorter than the session\nretention.\n\nThe interactive session runs the same sweep in the background at start-up\nand hourly, so this command is for an operator who wants it done now, or\nwants the file itself to shrink: deleted rows only free pages for reuse\ninside the file, and --vacuum rebuilds the file so the space returns to the\nfilesystem. VACUUM needs free disk roughly equal to the live data and cannot\nrun while an interactive session holds the database, so close sonny first.\nStale budget holds the sweep had to leave active do not stop --vacuum: gc\nwarns, rebuilds the file, and then exits non-zero naming them. Any other\nsweep error stops before the vacuum.\n\nWhen SONNY_CONTROL_PG_DSN is set, gc runs the same sweep against that\nPostgres control plane instead of the local SQLite file (--control-db and\nSONNY_CONTROL_DB are ignored in that case); --vacuum is rejected there \u2014\nPostgres reclaims space automatically via autovacuum, so there is no file to\nrebuild.\n\nUsage:\n  sonny control gc [flags]\n\nFlags:\n      --control-db string              control-plane SQLite database path (default: $SONNY_CONTROL_DB, then control.db in the data directory; ignored when SONNY_CONTROL_PG_DSN is set)\n  -h, --help                           help for gc\n      --paused-plan-retention string   remove whole plans paused for longer than this Go duration, even when --retention is off; never shorter than --retention (default 2160h; 0 or off keeps paused plans)\n      --retention string               remove runtime sessions, routing circuit history and routing ledgers, and settle stale budget holds, untouched for longer than this Go duration (default 720h; 0 or off keeps all of them)\n      --vacuum                         rebuild the database file after the sweep so freed pages return to the filesystem (SQLite only; rejected against a Postgres control plane, see SONNY_CONTROL_PG_DSN)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny control migration",
      "path": [
        "control",
        "migration"
      ],
      "summary": "Diagnose or recover a verified SQLite migration boundary",
      "usage": "  sonny control migration [command]",
      "aliases": [],
      "children": [
        {
          "name": "diagnose",
          "summary": "Inspect migration metadata without opening the runtime or changing the database"
        },
        {
          "name": "recover",
          "summary": "Back up and repair only an exactly recognized dirty migration 22"
        }
      ],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for migration",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Diagnose or recover a verified SQLite migration boundary\n\nUsage:\n  sonny control migration [command]\n\nAvailable Commands:\n  diagnose    Inspect migration metadata without opening the runtime or changing the database\n  recover     Back up and repair only an exactly recognized dirty migration 22\n\nFlags:\n  -h, --help   help for migration\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n\nUse \"sonny control migration [command] --help\" for more information about a command.\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny control migration diagnose",
      "path": [
        "control",
        "migration",
        "diagnose"
      ],
      "summary": "Inspect migration metadata without opening the runtime or changing the database",
      "usage": "  sonny control migration diagnose [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--control-db",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "explicit local SQLite database path (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for diagnose",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Inspect migration metadata without opening the runtime or changing the database\n\nUsage:\n  sonny control migration diagnose [flags]\n\nFlags:\n      --control-db string   explicit local SQLite database path (required)\n  -h, --help                help for diagnose\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny control migration recover",
      "path": [
        "control",
        "migration",
        "recover"
      ],
      "summary": "Back up and repair only an exactly recognized dirty migration 22",
      "usage": "  sonny control migration recover [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--control-db",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "explicit local SQLite database path (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for recover",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Back up and repair only an exactly recognized dirty migration 22\n\nUsage:\n  sonny control migration recover [flags]\n\nFlags:\n      --control-db string   explicit local SQLite database path (required)\n  -h, --help                help for recover\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny control status",
      "path": [
        "control",
        "status"
      ],
      "summary": "Report the effective authority mode, suppliers, and lease",
      "usage": "  sonny control status [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--control-db",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "control-plane database path to report (stat'ed only, never created)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for status",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "emit machine-readable JSON",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--mode",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "override the authority mode for this report (off|observe|enforce)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "sonny control status resolves and prints the effective authority mode\nBEFORE any work begins: which of off/observe/enforce is in force, where that\ncame from (--mode, SONNY_AUTHORITY_MODE, a deprecated legacy switch, or the\npackage default), any deprecated switches that are set and therefore\nignored, the bound external-governor suppliers, and the build this report\ncame from.\n\nIt is read-only: in off mode it never creates the control database, it only\nreports whether one already exists.\n\nUsage:\n  sonny control status [flags]\n\nFlags:\n      --control-db string   control-plane database path to report (stat'ed only, never created)\n  -h, --help                help for status\n      --json                emit machine-readable JSON\n      --mode string         override the authority mode for this report (off|observe|enforce)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny credentials",
      "path": [
        "credentials"
      ],
      "summary": "Inspect credential resolution and manage the OAuth credential migration to the credential broker",
      "usage": "  sonny credentials [command]",
      "aliases": [],
      "children": [
        {
          "name": "delete",
          "summary": "Remove the API key or sign-in stored in the keyring for a model source or provider"
        },
        {
          "name": "migrate-status",
          "summary": "Migrate (or resume migrating) legacy OAuth tokens to the credential broker, and report status"
        },
        {
          "name": "resolve",
          "summary": "Report which credential tier (keyring, bao, environment, .env) answers a catalog source, never the value"
        },
        {
          "name": "retire-legacy",
          "summary": "Zero and delete the legacy OAuth rows and master key once migration has been verified"
        }
      ],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for credentials",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "sonny stores Copilot/Hyper OAuth tokens through the credentials.Broker\n(keychain, or a sealed file store) once a one-time migration has copied and\nverified every row from the legacy sessions.db table; until then the legacy\nstore remains authoritative. \"migrate-status\" drives that migration forward\n(it is safe to run repeatedly) and reports where it stands; \"retire-legacy\"\ndestroys the now-redundant legacy copies once a confirmation window has\npassed since migration completed, or immediately with --force. \"resolve\"\nreports which secret-resolver tier (keyring, bao, environment, .env)\nsupplies a catalog source's credential, never the value; \"delete\" removes\nthe key or sign-in the keyring stores for a source or provider.\n\nUsage:\n  sonny credentials [command]\n\nAvailable Commands:\n  delete         Remove the API key or sign-in stored in the keyring for a model source or provider\n  migrate-status Migrate (or resume migrating) legacy OAuth tokens to the credential broker, and report status\n  resolve        Report which credential tier (keyring, bao, environment, .env) answers a catalog source, never the value\n  retire-legacy  Zero and delete the legacy OAuth rows and master key once migration has been verified\n\nFlags:\n  -h, --help   help for credentials\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n\nUse \"sonny credentials [command] --help\" for more information about a command.\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny credentials delete",
      "path": [
        "credentials",
        "delete"
      ],
      "summary": "Remove the API key or sign-in stored in the keyring for a model source or provider",
      "usage": "  sonny credentials delete <source or provider id> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for delete",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "sonny credentials delete removes what Settings' Disconnect removes: every\ncredential the broker holds under the provider id, and the key a model\nsource stored under its own account (the keyring tier \"sonny credentials\nresolve\" reports). Environment variables, .env files and Bao are not\ntouched. Exit 1 when nothing was stored.\n\nUsage:\n  sonny credentials delete <source or provider id> [flags]\n\nFlags:\n  -h, --help   help for delete\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny credentials migrate-status",
      "path": [
        "credentials",
        "migrate-status"
      ],
      "summary": "Migrate (or resume migrating) legacy OAuth tokens to the credential broker, and report status",
      "usage": "  sonny credentials migrate-status [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for migrate-status",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Migrate (or resume migrating) legacy OAuth tokens to the credential broker, and report status\n\nUsage:\n  sonny credentials migrate-status [flags]\n\nFlags:\n  -h, --help   help for migrate-status\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny credentials resolve",
      "path": [
        "credentials",
        "resolve"
      ],
      "summary": "Report which credential tier (keyring, bao, environment, .env) answers a catalog source, never the value",
      "usage": "  sonny credentials resolve <source id> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for resolve",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "sonny credentials resolve asks the secret resolver the same question the\ndaemon asks before a hosted turn and the desktop's Settings asks for each\nsource: for this catalog source, which tier supplies its credential? Tiers\nare consulted in the fixed order keyring > bao > environment > .env, for the\nsource's ONE conventional variable (its env_prefix-derived name, else its\napi_key_env), and the first answer wins. Every tier prints one line --\n\"answered\", \"checked\" (consulted, held nothing) or \"skipped (<why>)\" -- and\nthe value is never printed. Exit 0 when a tier answered, 1 otherwise.\n\nUsage:\n  sonny credentials resolve <source id> [flags]\n\nFlags:\n  -h, --help   help for resolve\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny credentials retire-legacy",
      "path": [
        "credentials",
        "retire-legacy"
      ],
      "summary": "Zero and delete the legacy OAuth rows and master key once migration has been verified",
      "usage": "  sonny credentials retire-legacy [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--force",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "retire immediately, bypassing the confirmation window",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for retire-legacy",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Zero and delete the legacy OAuth rows and master key once migration has been verified\n\nUsage:\n  sonny credentials retire-legacy [flags]\n\nFlags:\n      --force   retire immediately, bypassing the confirmation window\n  -h, --help    help for retire-legacy\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny cue",
      "path": [
        "cue"
      ],
      "summary": "Plan, import, run, analyze, and report context-use evaluations",
      "usage": "  sonny cue [command]",
      "aliases": [],
      "children": [
        {
          "name": "existing-data",
          "summary": "Import existing traces or classify legacy evidence without inventing missing fields"
        },
        {
          "name": "plan",
          "summary": "Validate a research-only CUE plan without executing model calls"
        },
        {
          "name": "reanalyze",
          "summary": "Recompute CUE tables from retained observations without rerunning models"
        },
        {
          "name": "report",
          "summary": "Render provenance-labeled CUE tables and task/position figures"
        },
        {
          "name": "testing",
          "summary": "Preflight or execute a complete explicitly authorized CUE plan"
        },
        {
          "name": "verify",
          "summary": "Verify a reconstructable CUE archive and every retained artifact"
        }
      ],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for cue",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Plan, import, run, analyze, and report context-use evaluations\n\nUsage:\n  sonny cue [command]\n\nAvailable Commands:\n  existing-data Import existing traces or classify legacy evidence without inventing missing fields\n  plan          Validate a research-only CUE plan without executing model calls\n  reanalyze     Recompute CUE tables from retained observations without rerunning models\n  report        Render provenance-labeled CUE tables and task/position figures\n  testing       Preflight or execute a complete explicitly authorized CUE plan\n  verify        Verify a reconstructable CUE archive and every retained artifact\n\nFlags:\n  -h, --help   help for cue\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n\nUse \"sonny cue [command] --help\" for more information about a command.\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny cue existing-data",
      "path": [
        "cue",
        "existing-data"
      ],
      "summary": "Import existing traces or classify legacy evidence without inventing missing fields",
      "usage": "  sonny cue existing-data [flags]",
      "aliases": [
        "existing-data",
        "import"
      ],
      "children": [],
      "flags": [
        {
          "name": "--bundle-out",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "new owner-only typed import bundle path",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for existing-data",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--input",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "legacy evidence JSON array",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--out",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "optional output report path",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--pseudonym-key-file",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "owner-only 32+ byte HMAC key file for trace import",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--trace-dir",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "Sonny trace or flattened-corpus directory",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Import existing traces or classify legacy evidence without inventing missing fields\n\nUsage:\n  sonny cue existing-data [flags]\n\nAliases:\n  existing-data, import\n\nFlags:\n      --bundle-out string           new owner-only typed import bundle path\n  -h, --help                        help for existing-data\n      --input string                legacy evidence JSON array\n      --out string                  optional output report path\n      --pseudonym-key-file string   owner-only 32+ byte HMAC key file for trace import\n      --trace-dir string            Sonny trace or flattened-corpus directory\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny cue plan",
      "path": [
        "cue",
        "plan"
      ],
      "summary": "Validate a research-only CUE plan without executing model calls",
      "usage": "  sonny cue plan [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for plan",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--out",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "optional output report path",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--plan",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "study-plan JSON (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Validate a research-only CUE plan without executing model calls\n\nUsage:\n  sonny cue plan [flags]\n\nFlags:\n  -h, --help          help for plan\n      --out string    optional output report path\n      --plan string   study-plan JSON (required)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny cue reanalyze",
      "path": [
        "cue",
        "reanalyze"
      ],
      "summary": "Recompute CUE tables from retained observations without rerunning models",
      "usage": "  sonny cue reanalyze [flags]",
      "aliases": [
        "reanalyze",
        "analyze"
      ],
      "children": [],
      "flags": [
        {
          "name": "--analysis",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "analysis id (defaults to the deterministic descriptive table)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--archive",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned CUE study archive JSON (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for reanalyze",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--out",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "optional output report path",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Recompute CUE tables from retained observations without rerunning models\n\nUsage:\n  sonny cue reanalyze [flags]\n\nAliases:\n  reanalyze, analyze\n\nFlags:\n      --analysis string   analysis id (defaults to the deterministic descriptive table)\n      --archive string    versioned CUE study archive JSON (required)\n  -h, --help              help for reanalyze\n      --out string        optional output report path\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny cue report",
      "path": [
        "cue",
        "report"
      ],
      "summary": "Render provenance-labeled CUE tables and task/position figures",
      "usage": "  sonny cue report [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--archive",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned CUE study archive JSON (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "output format: workflow, json, csv, or svg (default \"workflow\")",
          "default_as_displayed": "\"workflow\"",
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for report",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--out",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "optional output report path",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Render provenance-labeled CUE tables and task/position figures\n\nUsage:\n  sonny cue report [flags]\n\nFlags:\n      --archive string   versioned CUE study archive JSON (required)\n      --format string    output format: workflow, json, csv, or svg (default \"workflow\")\n  -h, --help             help for report\n      --out string       optional output report path\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny cue testing",
      "path": [
        "cue",
        "testing"
      ],
      "summary": "Preflight or execute a complete explicitly authorized CUE plan",
      "usage": "  sonny cue testing [flags]",
      "aliases": [
        "testing",
        "run"
      ],
      "children": [],
      "flags": [
        {
          "name": "--dry-run",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "show calls, token/cost limits, and every unresolved setting without execution",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for testing",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--out",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "optional output archive/report path",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--plan",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "authorized study-plan JSON (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--preflight",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "secret-free resolved config/resources/budget JSON",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Preflight or execute a complete explicitly authorized CUE plan\n\nUsage:\n  sonny cue testing [flags]\n\nAliases:\n  testing, run\n\nFlags:\n      --dry-run            show calls, token/cost limits, and every unresolved setting without execution\n  -h, --help               help for testing\n      --out string         optional output archive/report path\n      --plan string        authorized study-plan JSON (required)\n      --preflight string   secret-free resolved config/resources/budget JSON\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny cue verify",
      "path": [
        "cue",
        "verify"
      ],
      "summary": "Verify a reconstructable CUE archive and every retained artifact",
      "usage": "  sonny cue verify [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--archive",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned CUE study archive JSON (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for verify",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--out",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "optional output report path",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Verify a reconstructable CUE archive and every retained artifact\n\nUsage:\n  sonny cue verify [flags]\n\nFlags:\n      --archive string   versioned CUE study archive JSON (required)\n  -h, --help             help for verify\n      --out string       optional output report path\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny editor-rpc",
      "path": [
        "editor-rpc"
      ],
      "summary": "Serve a JSON-RPC editor client of the supervisor over stdin/stdout",
      "usage": "  sonny editor-rpc [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--client-instance",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "desktop window identifier (DWI) distinguishing this connection's durable supervisor identity from another window's (SONNY-2922); empty leaves the identity exactly client-name@tenant",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--client-name",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client name reported to the supervisor (default \"sonny-editor-rpc\")",
          "default_as_displayed": "\"sonny-editor-rpc\"",
          "group": "Flags"
        },
        {
          "name": "--endpoint",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "supervisor socket (unix) or pipe (windows) path",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for editor-rpc",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--human-attach",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "present the per-user human-attach proof so the supervisor treats this connection as an attached human client, required for the human-only operations (plans.approve, plans.proceed, plans.cancel, plans.pause, plans.resume, plans.replan, plans.confirmEvidence, plans.archive, plans.unarchive, plans.publish, a task skip, human_confirmed evidence, revising a paused plan, approvals.decide, updates.stage, updates.importBundle, updates.activate, updates.recover, and granting workspaces.trust); an unloadable key warns on stderr and continues as an agent connection; for interactive clients only (SONNY-3627)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--tenant",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "tenant this connection speaks for",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "editor-rpc dials the supervisor and exposes its Runtime to an editor as newline-delimited JSON-RPC 2.0 over stdin/stdout, the client protocol documented in docs/config/client-protocol.md. The first request must be sonny/initialize, which negotiates the protocol version and reports the served capabilities. It never executes a tool locally: every call is dispatched to the supervisor, and a refusal or an unreachable daemon is reported with the same status taxonomy the CLI and TUI use. If the editor closes its end while a request is in flight, the request is still executed once; a client that reconnects must re-issue it with the same idempotency key to learn its outcome rather than assuming it was dropped.\n\nUsage:\n  sonny editor-rpc [flags]\n\nFlags:\n      --client-instance string   desktop window identifier (DWI) distinguishing this connection's durable supervisor identity from another window's (SONNY-2922); empty leaves the identity exactly client-name@tenant\n      --client-name string       client name reported to the supervisor (default \"sonny-editor-rpc\")\n      --endpoint string          supervisor socket (unix) or pipe (windows) path\n  -h, --help                     help for editor-rpc\n      --human-attach             present the per-user human-attach proof so the supervisor treats this connection as an attached human client, required for the human-only operations (plans.approve, plans.proceed, plans.cancel, plans.pause, plans.resume, plans.replan, plans.confirmEvidence, plans.archive, plans.unarchive, plans.publish, a task skip, human_confirmed evidence, revising a paused plan, approvals.decide, updates.stage, updates.importBundle, updates.activate, updates.recover, and granting workspaces.trust); an unloadable key warns on stderr and continues as an agent connection; for interactive clients only (SONNY-3627)\n      --tenant string            tenant this connection speaks for\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny freeze",
      "path": [
        "freeze"
      ],
      "summary": "Contain a tenant with a signed freeze epoch",
      "usage": "  sonny freeze [command]",
      "aliases": [],
      "children": [
        {
          "name": "raise",
          "summary": "Raise a signed tenant freeze epoch"
        },
        {
          "name": "revoke-grants",
          "summary": "Revoke every live grant in a frozen tenant"
        },
        {
          "name": "snapshot-evidence",
          "summary": "Write an immutable signed snapshot of freeze containment evidence"
        },
        {
          "name": "stop-scheduling",
          "summary": "Engage the durable scheduling kill switch for a frozen tenant"
        },
        {
          "name": "verify-evidence",
          "summary": "Verify a freeze evidence snapshot without the control database"
        }
      ],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for freeze",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "freeze runs the tenant-scoped emergency containment procedure: raise a signed epoch, stop scheduling, revoke live grants, and preserve a signed evidence snapshot.\n\nUsage:\n  sonny freeze [command]\n\nAvailable Commands:\n  raise             Raise a signed tenant freeze epoch\n  revoke-grants     Revoke every live grant in a frozen tenant\n  snapshot-evidence Write an immutable signed snapshot of freeze containment evidence\n  stop-scheduling   Engage the durable scheduling kill switch for a frozen tenant\n  verify-evidence   Verify a freeze evidence snapshot without the control database\n\nFlags:\n  -h, --help   help for freeze\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n\nUse \"sonny freeze [command] --help\" for more information about a command.\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny freeze raise",
      "path": [
        "freeze",
        "raise"
      ],
      "summary": "Raise a signed tenant freeze epoch",
      "usage": "  sonny freeze raise [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--allow",
          "shorthand": null,
          "type_as_displayed": "stringArray",
          "description": "emergency principal that remains permitted (repeatable, shrink-only)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--control-db",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "absolute path to the SQLite control-plane database (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for raise",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--initiator-id",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "active verifier identity authorizing the operation (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "emit machine-readable JSON",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--reason",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "incident reason recorded with the signed freeze (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--scope",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "tenant scope in the form tenant:<tenant-id> (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--signing-key",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "absolute path to the raw 64-byte Ed25519 private key (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--trust-document",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "absolute path to the protected evidence trust document (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Raise a signed tenant freeze epoch\n\nUsage:\n  sonny freeze raise [flags]\n\nFlags:\n      --allow stringArray       emergency principal that remains permitted (repeatable, shrink-only)\n      --control-db string       absolute path to the SQLite control-plane database (required)\n  -h, --help                    help for raise\n      --initiator-id string     active verifier identity authorizing the operation (required)\n      --json                    emit machine-readable JSON\n      --reason string           incident reason recorded with the signed freeze (required)\n      --scope string            tenant scope in the form tenant:<tenant-id> (required)\n      --signing-key string      absolute path to the raw 64-byte Ed25519 private key (required)\n      --trust-document string   absolute path to the protected evidence trust document (required)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny freeze revoke-grants",
      "path": [
        "freeze",
        "revoke-grants"
      ],
      "summary": "Revoke every live grant in a frozen tenant",
      "usage": "  sonny freeze revoke-grants [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--cause",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "closed revocation cause (default \"freeze_epoch\")",
          "default_as_displayed": "\"freeze_epoch\"",
          "group": "Flags"
        },
        {
          "name": "--control-db",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "absolute path to the SQLite control-plane database (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for revoke-grants",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--initiator-id",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "active verifier identity authorizing the operation (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "emit machine-readable JSON",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--scope",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "tenant scope in the form tenant:<tenant-id> (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--signing-key",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "absolute path to the raw 64-byte Ed25519 private key (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--trust-document",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "absolute path to the protected evidence trust document (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Revoke every live grant in a frozen tenant\n\nUsage:\n  sonny freeze revoke-grants [flags]\n\nFlags:\n      --cause string            closed revocation cause (default \"freeze_epoch\")\n      --control-db string       absolute path to the SQLite control-plane database (required)\n  -h, --help                    help for revoke-grants\n      --initiator-id string     active verifier identity authorizing the operation (required)\n      --json                    emit machine-readable JSON\n      --scope string            tenant scope in the form tenant:<tenant-id> (required)\n      --signing-key string      absolute path to the raw 64-byte Ed25519 private key (required)\n      --trust-document string   absolute path to the protected evidence trust document (required)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny freeze snapshot-evidence",
      "path": [
        "freeze",
        "snapshot-evidence"
      ],
      "summary": "Write an immutable signed snapshot of freeze containment evidence",
      "usage": "  sonny freeze snapshot-evidence [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--control-db",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "absolute path to the SQLite control-plane database (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for snapshot-evidence",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--initiator-id",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "active verifier identity authorizing the operation (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "emit machine-readable JSON",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--out",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "absolute path of the new evidence snapshot directory (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--scope",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "tenant scope in the form tenant:<tenant-id> (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--signing-key",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "absolute path to the raw 64-byte Ed25519 private key (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--trust-document",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "absolute path to the protected evidence trust document (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Write an immutable signed snapshot of freeze containment evidence\n\nUsage:\n  sonny freeze snapshot-evidence [flags]\n\nFlags:\n      --control-db string       absolute path to the SQLite control-plane database (required)\n  -h, --help                    help for snapshot-evidence\n      --initiator-id string     active verifier identity authorizing the operation (required)\n      --json                    emit machine-readable JSON\n      --out string              absolute path of the new evidence snapshot directory (required)\n      --scope string            tenant scope in the form tenant:<tenant-id> (required)\n      --signing-key string      absolute path to the raw 64-byte Ed25519 private key (required)\n      --trust-document string   absolute path to the protected evidence trust document (required)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny freeze stop-scheduling",
      "path": [
        "freeze",
        "stop-scheduling"
      ],
      "summary": "Engage the durable scheduling kill switch for a frozen tenant",
      "usage": "  sonny freeze stop-scheduling [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--control-db",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "absolute path to the SQLite control-plane database (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for stop-scheduling",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--initiator-id",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "active verifier identity authorizing the operation (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "emit machine-readable JSON",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--reason",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "incident reason recorded with the kill switch (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--scope",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "tenant scope in the form tenant:<tenant-id> (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--signing-key",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "absolute path to the raw 64-byte Ed25519 private key (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--trust-document",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "absolute path to the protected evidence trust document (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Engage the durable scheduling kill switch for a frozen tenant\n\nUsage:\n  sonny freeze stop-scheduling [flags]\n\nFlags:\n      --control-db string       absolute path to the SQLite control-plane database (required)\n  -h, --help                    help for stop-scheduling\n      --initiator-id string     active verifier identity authorizing the operation (required)\n      --json                    emit machine-readable JSON\n      --reason string           incident reason recorded with the kill switch (required)\n      --scope string            tenant scope in the form tenant:<tenant-id> (required)\n      --signing-key string      absolute path to the raw 64-byte Ed25519 private key (required)\n      --trust-document string   absolute path to the protected evidence trust document (required)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny freeze verify-evidence",
      "path": [
        "freeze",
        "verify-evidence"
      ],
      "summary": "Verify a freeze evidence snapshot without the control database",
      "usage": "  sonny freeze verify-evidence [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for verify-evidence",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--in",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "absolute path to the evidence snapshot directory (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "emit machine-readable JSON",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--trust-document",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "absolute path to the protected evidence trust document (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Verify a freeze evidence snapshot without the control database\n\nUsage:\n  sonny freeze verify-evidence [flags]\n\nFlags:\n  -h, --help                    help for verify-evidence\n      --in string               absolute path to the evidence snapshot directory (required)\n      --json                    emit machine-readable JSON\n      --trust-document string   absolute path to the protected evidence trust document (required)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny help",
      "path": [
        "help"
      ],
      "summary": "Help about any command",
      "usage": "  sonny help [command] [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for help",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Help provides help for any command in the application.\nSimply type sonny help [path to command] for full details.\n\nUsage:\n  sonny help [command] [flags]\n\nFlags:\n  -h, --help   help for help\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny hooks",
      "path": [
        "hooks"
      ],
      "summary": "Inspect and validate the session hooks configuration",
      "usage": "  sonny hooks [command]",
      "aliases": [],
      "children": [
        {
          "name": "check",
          "summary": "Validate the user and project hooks configuration"
        }
      ],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for hooks",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Inspect and validate the session hooks configuration\n\nUsage:\n  sonny hooks [command]\n\nAvailable Commands:\n  check       Validate the user and project hooks configuration\n\nFlags:\n  -h, --help   help for hooks\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n\nUse \"sonny hooks [command] --help\" for more information about a command.\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny hooks check",
      "path": [
        "hooks",
        "check"
      ],
      "summary": "Validate the user and project hooks configuration",
      "usage": "  sonny hooks check [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for check",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "emit machine-readable JSON status",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Load the user (<config>/hooks.yaml) and project (<cwd>/.sonny/hooks.yaml)\nhooks exactly as a session would and report the result.\n\nAn unknown key, wrong type, duplicate id, unsupported schema_version, or\nover-cap file is a FAILURE: the command exits non-zero and names the problem.\n--json emits a machine-readable status carrying the active hook IDs and the\nconfiguration digest.\n\nUsage:\n  sonny hooks check [flags]\n\nFlags:\n  -h, --help   help for check\n      --json   emit machine-readable JSON status\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny init",
      "path": [
        "init"
      ],
      "summary": "Initialize sonny's directories and example config",
      "usage": "  sonny init [flags]\n  sonny init [command]",
      "aliases": [],
      "children": [
        {
          "name": "defaults",
          "summary": "Optionally fill missing recipe and model defaults"
        },
        {
          "name": "project",
          "summary": "Generate project prompt recipes in .sonny/ from existing agent files"
        }
      ],
      "flags": [
        {
          "name": "--default-model",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "optionally select a default model as source/model when none is saved",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--default-recipe",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "optionally select a default pack when none is saved",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--force",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "overwrite existing files (models.yaml)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for init",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--system",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "use system data dir (for packagers / post-install scripts)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Create sonny's directories on this host and seed a starter\nmodels.yaml. The command is idempotent: running it twice is harmless.\n\nCreated directories:\n  config dir        (models.yaml, pack-sources.yaml)\n  config dir/models.d  (drop-in model catalog fragments)\n  data dir/packs    (user recipe YAMLs go here)\n  cache dir         (git-backed recipe clones)\n\nCreated files (only if missing):\n  models.yaml       (embedded example, edit to taste)\n\nPass --system to use the system layout (/usr/local/share/sonny/...)\nin package post-install scripts. Pass --force to overwrite an\nexisting models.yaml.\n\nUsage:\n  sonny init [flags]\n  sonny init [command]\n\nAvailable Commands:\n  defaults    Optionally fill missing recipe and model defaults\n  project     Generate project prompt recipes in .sonny/ from existing agent files\n\nFlags:\n      --default-model string    optionally select a default model as source/model when none is saved\n      --default-recipe string   optionally select a default pack when none is saved\n      --force                   overwrite existing files (models.yaml)\n  -h, --help                    help for init\n      --system                  use system data dir (for packagers / post-install scripts)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n\nUse \"sonny init [command] --help\" for more information about a command.\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny init defaults",
      "path": [
        "init",
        "defaults"
      ],
      "summary": "Optionally fill missing recipe and model defaults",
      "usage": "  sonny init defaults [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--default-model",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "optionally select a default model as source/model when none is saved",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--default-recipe",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "optionally select a default pack when none is saved",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for defaults",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Select optional startup defaults. Existing choices are preserved. Skip either flag to keep automatic task routing. List choices with sonny recipe list --recipes and sonny models list.\n\nUsage:\n  sonny init defaults [flags]\n\nFlags:\n      --default-model string    optionally select a default model as source/model when none is saved\n      --default-recipe string   optionally select a default pack when none is saved\n  -h, --help                    help for defaults\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny init project",
      "path": [
        "init",
        "project"
      ],
      "summary": "Generate project prompt recipes in .sonny/ from existing agent files",
      "usage": "  sonny init project [flags]\n  sonny init project [command]",
      "aliases": [],
      "children": [
        {
          "name": "abandon",
          "summary": "Abandon an unfinished init operation"
        },
        {
          "name": "apply",
          "summary": "Apply a reviewed init plan by id (never prompts)"
        },
        {
          "name": "campaigns",
          "summary": "List evaluation, optimization, promotion and rollback receipts"
        },
        {
          "name": "canary",
          "summary": "Explicit Canary actions: legacy migration and the evidence session"
        },
        {
          "name": "dataset",
          "summary": "Build and list the project's history datasets"
        },
        {
          "name": "eval",
          "summary": "Evaluate the project's recipe against its imported history dataset"
        },
        {
          "name": "history",
          "summary": "Import this project's attributable agent history (Sonny, Claude, Codex)"
        },
        {
          "name": "index",
          "summary": "Publish the project's local source index"
        },
        {
          "name": "optimize",
          "summary": "Optimize the project's recipe against its history dataset (staged, never activated)"
        },
        {
          "name": "plan",
          "summary": "Show what an init apply would do, without writing anything"
        },
        {
          "name": "promote",
          "summary": "Activate an improved optimization candidate by receipt"
        },
        {
          "name": "rebind",
          "summary": "Bind the project's private init state to this checkout"
        },
        {
          "name": "repair",
          "summary": "Regenerate missing or stale init outputs, keeping hand-edited files"
        },
        {
          "name": "resume",
          "summary": "Resume an unfinished init operation"
        },
        {
          "name": "rollback",
          "summary": "Re-activate a recorded generation of the project's recipes"
        },
        {
          "name": "setup",
          "summary": "Provision local isolation and a protected analysis deployment"
        },
        {
          "name": "status",
          "summary": "Show the project's init state and per-subsystem readiness"
        }
      ],
      "flags": [
        {
          "name": "--force",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "replace hand-edited generated files (explicit destructive choice)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for project",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "print the result as one JSON document",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--mcp",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "harvest MCP server configs into .sonny/mcp.yaml (remembered; --mcp=false disables)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--no-llm",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "skip LLM synthesis; use the deterministic template",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Harvest this directory's agent-instruction assets (AGENTS.md,\nCLAUDE.md, .claude/ commands, skills and agents, cursor/windsurf/\ncopilot files) into a generated prompt-pack suite under .sonny/packs/.\n\nThe suite's primary recipe inherits (parent:) from the nearest ancestor\ndirectory that has also run 'sonny init project', so instructions\ncompose down the directory hierarchy. A drift manifest\n(.sonny/init-manifest.yaml) records source hashes; 'sonny run'\nrefreshes the harvested sections automatically when sources change.\n\nBy default the configured provider (--provider/--model, .sonny.yaml,\nor SONNY_PROVIDER/SONNY_MODEL) writes a synthesized main prompt; pass\n--no-llm (or configure no provider) for a deterministic template.\nPass --mcp to also harvest MCP server configs (.mcp.json,\n.claude/settings.json, .cursor/mcp.json, .vscode/mcp.json) into\n.sonny/mcp.yaml. The choice is remembered: a rerun without --mcp keeps\nit, and --mcp=false turns it off (removing an untouched mcp.yaml).\n\nReruns never overwrite a hand-edited generated file: it is kept and\nreported as a conflict. Pass --force to replace hand-edited files.\nPass --json to print the result as one JSON document instead.\n\nThe subcommands drive the same init service step by step and never\nprompt: plan, then apply --plan-id; status; repair; resume or abandon\nan unfinished operation; rollback --to a recorded generation. The\nsubcommands share one exit-status table: 0 ok, 2 usage, 3 not ready\nor blocked, 4 stale plan, 5 lease held, 6 idempotency conflict, 1 any\nother failure. This bare command keeps exit 0 when readiness is\nblocked, for compatibility; it still exits 2 usage, 3 when an\nunfinished init operation must be resumed or abandoned first, 4 stale\nplan, 5 lease held, 6 idempotency conflict, 1 any other failure.\n\nUsage:\n  sonny init project [flags]\n  sonny init project [command]\n\nAvailable Commands:\n  abandon     Abandon an unfinished init operation\n  apply       Apply a reviewed init plan by id (never prompts)\n  campaigns   List evaluation, optimization, promotion and rollback receipts\n  canary      Explicit Canary actions: legacy migration and the evidence session\n  dataset     Build and list the project's history datasets\n  eval        Evaluate the project's recipe against its imported history dataset\n  history     Import this project's attributable agent history (Sonny, Claude, Codex)\n  index       Publish the project's local source index\n  optimize    Optimize the project's recipe against its history dataset (staged, never activated)\n  plan        Show what an init apply would do, without writing anything\n  promote     Activate an improved optimization candidate by receipt\n  rebind      Bind the project's private init state to this checkout\n  repair      Regenerate missing or stale init outputs, keeping hand-edited files\n  resume      Resume an unfinished init operation\n  rollback    Re-activate a recorded generation of the project's recipes\n  setup       Provision local isolation and a protected analysis deployment\n  status      Show the project's init state and per-subsystem readiness\n\nFlags:\n      --force    replace hand-edited generated files (explicit destructive choice)\n  -h, --help     help for project\n      --json     print the result as one JSON document\n      --mcp      harvest MCP server configs into .sonny/mcp.yaml (remembered; --mcp=false disables)\n      --no-llm   skip LLM synthesis; use the deterministic template\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n\nUse \"sonny init project [command] --help\" for more information about a command.\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny init project abandon",
      "path": [
        "init",
        "project",
        "abandon"
      ],
      "summary": "Abandon an unfinished init operation",
      "usage": "  sonny init project abandon OP [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for abandon",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "print the result as one JSON document",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Abandon the unfinished init operation OP that 'sonny init project\nstatus' reports: its leftovers are undone, the previous generation\nstays active, and the operation is recorded as cancelled. An operation\nthat already committed is finished forward instead.\n\nUsage:\n  sonny init project abandon OP [flags]\n\nFlags:\n  -h, --help   help for abandon\n      --json   print the result as one JSON document\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny init project apply",
      "path": [
        "init",
        "project",
        "apply"
      ],
      "summary": "Apply a reviewed init plan by id (never prompts)",
      "usage": "  sonny init project apply [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--analysis",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable an initial analysis pipeline in .sonny/config.yaml when no custom analysis is configured (remembered; --analysis=false disables; never writes .sonny.yaml or grants)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--canary",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "scaffold project-scoped Canary config under .canary/ (remembered; --canary=false disables; never home or agent files; an existing .canary is kept)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--decide",
          "shorthand": null,
          "type_as_displayed": "path=keep|replace",
          "description": "resolve one hand-edited output as path=keep|replace (repeatable)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--force",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "replace hand-edited generated files (explicit destructive choice)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--gitignore",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "keep the managed .gitignore block ignoring .sonny/init/ (default on; remembered; --gitignore=false disables; never removes lines)",
          "default_as_displayed": "on; remembered; --gitignore=false disables; never removes lines",
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for apply",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--idempotency-key",
          "shorthand": null,
          "type_as_displayed": "KEY",
          "description": "retry-safe KEY: a retry with the same key returns the first operation",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--index",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "record the code index registration in .sonny/init/index.json (default on; remembered; --index=false disables)",
          "default_as_displayed": "on; remembered; --index=false disables",
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "print the result as one JSON document",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--mcp",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "harvest MCP server configs into .sonny/mcp.yaml (remembered; --mcp=false disables)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--no-llm",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "skip LLM synthesis; use the deterministic template",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--plan-id",
          "shorthand": null,
          "type_as_displayed": "ID",
          "description": "the reviewed plan ID to apply (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Apply the plan 'sonny init project plan' printed. --plan-id is\nrequired: when the project now plans a different id (a source, an\noutput or the request changed) nothing is written and the command\nexits 4. Repeat the --force, --no-llm, --mcp, --canary, --analysis,\n--gitignore, --index and --decide flags the plan was computed with.\n--decide path=keep|replace resolves one hand-edited output; the command\nnever prompts.\n\nUsage:\n  sonny init project apply [flags]\n\nFlags:\n      --analysis                   enable an initial analysis pipeline in .sonny/config.yaml when no custom analysis is configured (remembered; --analysis=false disables; never writes .sonny.yaml or grants)\n      --canary                     scaffold project-scoped Canary config under .canary/ (remembered; --canary=false disables; never home or agent files; an existing .canary is kept)\n      --decide path=keep|replace   resolve one hand-edited output as path=keep|replace (repeatable)\n      --force                      replace hand-edited generated files (explicit destructive choice)\n      --gitignore                  keep the managed .gitignore block ignoring .sonny/init/ (default on; remembered; --gitignore=false disables; never removes lines)\n  -h, --help                       help for apply\n      --idempotency-key KEY        retry-safe KEY: a retry with the same key returns the first operation\n      --index                      record the code index registration in .sonny/init/index.json (default on; remembered; --index=false disables)\n      --json                       print the result as one JSON document\n      --mcp                        harvest MCP server configs into .sonny/mcp.yaml (remembered; --mcp=false disables)\n      --no-llm                     skip LLM synthesis; use the deterministic template\n      --plan-id ID                 the reviewed plan ID to apply (required)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny init project campaigns",
      "path": [
        "init",
        "project",
        "campaigns"
      ],
      "summary": "List evaluation, optimization, promotion and rollback receipts",
      "usage": "  sonny init project campaigns [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for campaigns",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "print the receipts as one JSON document",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "List the project's receipts, newest first, read-only: kind,\noutcome, generation, calls and, for a campaign, the command line that\nreproduces it. A receipt left running by a process that ended is shown\ninterrupted. No dataset case text is ever printed.\n\nUsage:\n  sonny init project campaigns [flags]\n\nFlags:\n  -h, --help   help for campaigns\n      --json   print the receipts as one JSON document\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny init project canary",
      "path": [
        "init",
        "project",
        "canary"
      ],
      "summary": "Explicit Canary actions: legacy migration and the evidence session",
      "usage": "  sonny init project canary [command]",
      "aliases": [],
      "children": [
        {
          "name": "migrate",
          "summary": "Apply a reviewed legacy migration plan id"
        },
        {
          "name": "preview",
          "summary": "Preview the legacy inline-token migration (read-only)"
        },
        {
          "name": "trust-toolchain",
          "summary": "Propose, or record with --path, the trusted go binary for verify"
        },
        {
          "name": "verify",
          "summary": "Run the project's tests under Canary's trusted producer"
        }
      ],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for canary",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Explicit, project-scoped Canary actions. 'sonny init project plan\n--canary' (then apply) scaffolds .canary/ in this project; these\nsubcommands never run as part of plan, apply or status:\n\n  preview         inspect the legacy inline-token migration (read-only)\n  migrate         apply a reviewed migration plan id\n  trust-toolchain propose, or record with --path, the trusted go binary\n  verify          run the project's tests under Canary's trusted producer\n\nUsage:\n  sonny init project canary [command]\n\nAvailable Commands:\n  migrate         Apply a reviewed legacy migration plan id\n  preview         Preview the legacy inline-token migration (read-only)\n  trust-toolchain Propose, or record with --path, the trusted go binary for verify\n  verify          Run the project's tests under Canary's trusted producer\n\nFlags:\n  -h, --help   help for canary\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n\nUse \"sonny init project canary [command] --help\" for more information about a command.\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny init project canary migrate",
      "path": [
        "init",
        "project",
        "canary",
        "migrate"
      ],
      "summary": "Apply a reviewed legacy migration plan id",
      "usage": "  sonny init project canary migrate [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for migrate",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "print the report as one JSON document",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--plan-id",
          "shorthand": null,
          "type_as_displayed": "ID",
          "description": "the reviewed migration plan ID (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Import this project's inline CANARY tokens into the trace store,\nbound to the plan id 'sonny init project canary preview' printed. A\nplan that changed since the preview writes nothing and exits 4. A\nreviewed legacy token conversion first rewrites exactly the token lines\nthe preview listed (legacy ASPECT/STATUS values onto the current\nvocabulary) and declares the listed prefixes in .canary/project.yaml;\notherwise the source tokens stay in place. The tracking mode is not\nchanged. The report lists missing, changed and unsupported entities;\nit exits 3 when parity fails. A migration never claims that tests ran.\n\nUsage:\n  sonny init project canary migrate [flags]\n\nFlags:\n  -h, --help         help for migrate\n      --json         print the report as one JSON document\n      --plan-id ID   the reviewed migration plan ID (required)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny init project canary preview",
      "path": [
        "init",
        "project",
        "canary",
        "preview"
      ],
      "summary": "Preview the legacy inline-token migration (read-only)",
      "usage": "  sonny init project canary preview [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for preview",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "print the preview as one JSON document",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Preview, read-only, the import of this project's inline CANARY\ntokens into the trace store: the plan id, the entities it would create\nor change, and the tokens and files it cannot import. Legacy tokens\n(free-form ASPECT values, EXEMPT or COMPLETE statuses, prefixes no\nsource declares) preview their conversion instead. Nothing is written.\nThe migration needs a git repository with a commit (exit 3 otherwise).\nApprove it with 'sonny init project canary migrate --plan-id ID'.\n\nUsage:\n  sonny init project canary preview [flags]\n\nFlags:\n  -h, --help   help for preview\n      --json   print the preview as one JSON document\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny init project canary trust-toolchain",
      "path": [
        "init",
        "project",
        "canary",
        "trust-toolchain"
      ],
      "summary": "Propose, or record with --path, the trusted go binary for verify",
      "usage": "  sonny init project canary trust-toolchain [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for trust-toolchain",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "print the result as one JSON document",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--path",
          "shorthand": null,
          "type_as_displayed": "binary",
          "description": "record this go binary as evidence.toolchain_path (absolute)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Canary mints trusted (executed) evidence only with a go binary the\noperator names in .canary/project.yaml (evidence.toolchain_path); it is\nnever trusted automatically. Without --path this resolves the project's\ngo binary (GOROOT/bin/go as 'go env GOROOT' reports it here, symlinks\nresolved, so a version-manager shim is not proposed) and writes\nnothing. With --path it records that binary, symlinks resolved, as\nevidence.toolchain_path. The binary must be the go command itself: a\nshim or wrapper script is refused. Plan, apply and status never run\nthis. A refusal (no scaffold, a project without go.mod, a binary that\nis not the go command) exits 3 and writes nothing.\n\nUsage:\n  sonny init project canary trust-toolchain [flags]\n\nFlags:\n  -h, --help          help for trust-toolchain\n      --json          print the result as one JSON document\n      --path binary   record this go binary as evidence.toolchain_path (absolute)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny init project canary verify",
      "path": [
        "init",
        "project",
        "canary",
        "verify"
      ],
      "summary": "Run the project's tests under Canary's trusted producer",
      "usage": "  sonny init project canary verify [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for verify",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "print the receipt as one JSON document",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--test-parallelism",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "go test -p: test binaries run at once (default: go's, the number of CPUs)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--test-timeout",
          "shorthand": null,
          "type_as_displayed": "duration",
          "description": "go test -timeout per test duration (default 60m)",
          "default_as_displayed": "60m",
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Run the first evidence session: index the project, run its Go tests\nunder Canary's trusted producer (evidence.toolchain_path in\n.canary/project.yaml) and record a receipt in .sonny/init/canary/.\nIt exits 0 only when the run passed with trusted, eligible evidence;\n1 when a test failed; 3 when a prerequisite is missing or the\nevidence is not eligible (the receipt says why). Interrupting it stops\nthe test processes and records a cancelled receipt.\n\nThe tests run as 'go test -json -timeout=1h0m0s ./...': the timeout\napplies to each test binary and defaults to 60m (go test's own 10m\ndefault is too short for a large package on a loaded machine);\n--test-timeout sets it and --test-parallelism sets go test -p (test\nbinaries at once). The receipt records the exact command.\n\nUsage:\n  sonny init project canary verify [flags]\n\nFlags:\n  -h, --help                    help for verify\n      --json                    print the receipt as one JSON document\n      --test-parallelism int    go test -p: test binaries run at once (default: go's, the number of CPUs)\n      --test-timeout duration   go test -timeout per test duration (default 60m)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny init project dataset",
      "path": [
        "init",
        "project",
        "dataset"
      ],
      "summary": "Build and list the project's history datasets",
      "usage": "  sonny init project dataset [command]",
      "aliases": [],
      "children": [
        {
          "name": "build",
          "summary": "Build the dataset of the imported history"
        },
        {
          "name": "list",
          "summary": "List the project's datasets, newest first"
        }
      ],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for dataset",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Build lineage-disjoint train/val/test datasets from the imported\nhistory, and list them. A dataset is content-addressed (its id is a\ndigest of the trajectories and every parameter), private\n(<data>/projects/<uuid>/datasets/), and its test split is sealed:\nnothing here ever prints a case or its text. Evaluation and\noptimization campaigns use the newest ready dataset unless --dataset\nnames one.\n\n  build   publish (or reuse) the dataset of the imported history\n  list    show the published datasets, newest first\n\nUsage:\n  sonny init project dataset [command]\n\nAvailable Commands:\n  build       Build the dataset of the imported history\n  list        List the project's datasets, newest first\n\nFlags:\n  -h, --help   help for dataset\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n\nUse \"sonny init project dataset [command] --help\" for more information about a command.\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny init project dataset build",
      "path": [
        "init",
        "project",
        "dataset",
        "build"
      ],
      "summary": "Build the dataset of the imported history",
      "usage": "  sonny init project dataset build [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for build",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "print the dataset summary as one JSON document",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--max-test",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "cap on test cases, whole groups only (0: no cap)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--max-train",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "cap on train cases, whole groups only (0: no cap)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--max-val",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "cap on validation cases, whole groups only (0: no cap)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--seed",
          "shorthand": null,
          "type_as_displayed": "SEED",
          "description": "the split SEED (part of the dataset id) (default \"sonny-init\")",
          "default_as_displayed": "\"sonny-init\"",
          "group": "Flags"
        },
        {
          "name": "--temporal-holdout",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "hold out the newest groups as the test split instead of hashing",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--test-pct",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "percent of lineage groups in the sealed test split (default 20)",
          "default_as_displayed": "20",
          "group": "Flags"
        },
        {
          "name": "--val-pct",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "percent of lineage groups in the validation split (default 10)",
          "default_as_displayed": "10",
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Build (or reuse) the content-addressed dataset of this project's\nimported history: sessions linked by lineage or a near-duplicate first\nprompt stay in one split. It prints the dataset id, its counts and its\nstate: ready, or data_insufficient below 25 eligible groups. It exits\n0 when ready, and 3 when data_insufficient or when no history was\nimported (run 'sonny init project history import' first).\n\nUsage:\n  sonny init project dataset build [flags]\n\nFlags:\n  -h, --help               help for build\n      --json               print the dataset summary as one JSON document\n      --max-test int       cap on test cases, whole groups only (0: no cap)\n      --max-train int      cap on train cases, whole groups only (0: no cap)\n      --max-val int        cap on validation cases, whole groups only (0: no cap)\n      --seed SEED          the split SEED (part of the dataset id) (default \"sonny-init\")\n      --temporal-holdout   hold out the newest groups as the test split instead of hashing\n      --test-pct int       percent of lineage groups in the sealed test split (default 20)\n      --val-pct int        percent of lineage groups in the validation split (default 10)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny init project dataset list",
      "path": [
        "init",
        "project",
        "dataset",
        "list"
      ],
      "summary": "List the project's datasets, newest first",
      "usage": "  sonny init project dataset list [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for list",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "print the datasets as one JSON document",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "List the published datasets, newest first, read-only: id, state,\ncounts and parameters. The dataset campaigns use without --dataset is\nmarked selected. No case or case text is ever printed.\n\nUsage:\n  sonny init project dataset list [flags]\n\nFlags:\n  -h, --help   help for list\n      --json   print the datasets as one JSON document\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny init project eval",
      "path": [
        "init",
        "project",
        "eval"
      ],
      "summary": "Evaluate the project's recipe against its imported history dataset",
      "usage": "  sonny init project eval [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--background",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "detach from the terminal and run the campaign in the background; prints the pid and log path, then returns immediately (send SIGUSR1 to the pid to skip a running campaign gracefully)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--concurrency",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "cases evaluated at once through the shared scheduler (default 4)",
          "default_as_displayed": "4",
          "group": "Flags"
        },
        {
          "name": "--dataset",
          "shorthand": null,
          "type_as_displayed": "ID",
          "description": "the dataset ID to use (default: the newest ready dataset; list them with sonny init project dataset list)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--fresh",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "discard the checkpoint of an earlier cut or failed run on the same inputs and start over (default: resume it)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--generation",
          "shorthand": null,
          "type_as_displayed": "GEN",
          "description": "the generation GEN to measure (default: the active one; optimize always uses it)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for eval",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "print the receipt as one JSON document",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--max-attempts",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "attempts of a campaign call that fails retryably (default 1)",
          "default_as_displayed": "1",
          "group": "Flags"
        },
        {
          "name": "--max-calls",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "hard ceiling on model calls (default 500)",
          "default_as_displayed": "500",
          "group": "Flags"
        },
        {
          "name": "--recipe",
          "shorthand": null,
          "type_as_displayed": "ID",
          "description": "the pack ID under campaign (default: the project's primary pack)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--repetitions",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "evaluation passes averaged into the score (default 1)",
          "default_as_displayed": "1",
          "group": "Flags"
        },
        {
          "name": "--wall-clock",
          "shorthand": null,
          "type_as_displayed": "duration",
          "description": "wall-clock budget (default 30m0s)",
          "default_as_displayed": "30m0s",
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Run an evaluation campaign: the active generation's primary recipe\nover the project's dataset (train and val cases of imported histories),\nwithin the budget. The gates are declared in the receipt before any\nmodel call. Without a dataset of at least 25 eligible cases the outcome\nis data_insufficient; without a provider it is unavailable; neither\nmakes a model call. It exits 0 when evaluated, 3 when data_insufficient\nor unavailable, and 1 when cancelled or failed.\n\nTo skip a running campaign gracefully (preserving the checkpoint for\nlater resume), send SIGUSR1 to the process: kill -USR1 <pid>. A skip\nwrites a cancelled receipt, keeps the checkpoint, and exits 3.\n\nUse --background to detach from the terminal: the campaign runs in a\nnew session (setsid), stdout/stderr go to a log file under\n.sonny/init/campaigns/bg/, and this process exits 0 immediately after\nprinting the pid and log path.\n\nUsage:\n  sonny init project eval [flags]\n\nFlags:\n      --background            detach from the terminal and run the campaign in the background; prints the pid and log path, then returns immediately (send SIGUSR1 to the pid to skip a running campaign gracefully)\n      --concurrency int       cases evaluated at once through the shared scheduler (default 4)\n      --dataset ID            the dataset ID to use (default: the newest ready dataset; list them with sonny init project dataset list)\n      --fresh                 discard the checkpoint of an earlier cut or failed run on the same inputs and start over (default: resume it)\n      --generation GEN        the generation GEN to measure (default: the active one; optimize always uses it)\n  -h, --help                  help for eval\n      --json                  print the receipt as one JSON document\n      --max-attempts int      attempts of a campaign call that fails retryably (default 1)\n      --max-calls int         hard ceiling on model calls (default 500)\n      --recipe ID             the pack ID under campaign (default: the project's primary pack)\n      --repetitions int       evaluation passes averaged into the score (default 1)\n      --wall-clock duration   wall-clock budget (default 30m0s)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny init project history",
      "path": [
        "init",
        "project",
        "history"
      ],
      "summary": "Import this project's attributable agent history (Sonny, Claude, Codex)",
      "usage": "  sonny init project history [command]",
      "aliases": [],
      "children": [
        {
          "name": "import",
          "summary": "Import this project's attributable history into private trajectories"
        },
        {
          "name": "plan",
          "summary": "Report what a history import would take (read-only)"
        }
      ],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for history",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Import the agent sessions recorded in this project into private,\nredacted trajectories under the sonny data dir\n(<data>/projects/<uuid>/histories/). Only sessions whose recorded\nworking directory is this project (in this checkout, in another\nexisting checkout of the same git repository, or at a --map old\nlocation of it) enter; everything else is counted, never imported.\nThe sources are only read, and no history text is ever printed.\n\n  plan     count what an import would take (dry run; writes nothing)\n  import   store those sessions (idempotent by source digest; atomic)\n\nUsage:\n  sonny init project history [command]\n\nAvailable Commands:\n  import      Import this project's attributable history into private trajectories\n  plan        Report what a history import would take (read-only)\n\nFlags:\n  -h, --help   help for history\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n\nUse \"sonny init project history [command] --help\" for more information about a command.\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny init project history import",
      "path": [
        "init",
        "project",
        "history",
        "import"
      ],
      "summary": "Import this project's attributable history into private trajectories",
      "usage": "  sonny init project history import [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for import",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "print the report as one JSON document",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--map",
          "shorthand": null,
          "type_as_displayed": "FROM=TO",
          "description": "attribute sessions recorded under an old location of this project: FROM=TO (absolute paths; repeatable)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--max-bytes",
          "shorthand": null,
          "type_as_displayed": "SIZE",
          "description": "read at most SIZE of history in total, e.g. 2GiB or 500MB (default 1GiB)",
          "default_as_displayed": "1GiB",
          "group": "Flags"
        },
        {
          "name": "--max-files",
          "shorthand": null,
          "type_as_displayed": "N",
          "description": "read at most N history files in total (default 10000)",
          "default_as_displayed": "10000",
          "group": "Flags"
        },
        {
          "name": "--source",
          "shorthand": null,
          "type_as_displayed": "SOURCE",
          "description": "read only this history SOURCE (sonny, claude or codex; repeatable; default all three)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Import the sessions attributable to this project into private,\nredacted trajectories (<data>/projects/<uuid>/histories/). A re-import\nof unchanged sources rewrites nothing. The sources are only read;\nsecrets drop the whole session. It prints counts only, never history\ntext. It exits 0, or 3 when nothing is attributable to this project.\n\nUsage:\n  sonny init project history import [flags]\n\nFlags:\n  -h, --help             help for import\n      --json             print the report as one JSON document\n      --map FROM=TO      attribute sessions recorded under an old location of this project: FROM=TO (absolute paths; repeatable)\n      --max-bytes SIZE   read at most SIZE of history in total, e.g. 2GiB or 500MB (default 1GiB)\n      --max-files N      read at most N history files in total (default 10000)\n      --source SOURCE    read only this history SOURCE (sonny, claude or codex; repeatable; default all three)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny init project history plan",
      "path": [
        "init",
        "project",
        "history",
        "plan"
      ],
      "summary": "Report what a history import would take (read-only)",
      "usage": "  sonny init project history plan [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for plan",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "print the report as one JSON document",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--map",
          "shorthand": null,
          "type_as_displayed": "FROM=TO",
          "description": "attribute sessions recorded under an old location of this project: FROM=TO (absolute paths; repeatable)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--max-bytes",
          "shorthand": null,
          "type_as_displayed": "SIZE",
          "description": "read at most SIZE of history in total, e.g. 2GiB or 500MB (default 1GiB)",
          "default_as_displayed": "1GiB",
          "group": "Flags"
        },
        {
          "name": "--max-files",
          "shorthand": null,
          "type_as_displayed": "N",
          "description": "read at most N history files in total (default 10000)",
          "default_as_displayed": "10000",
          "group": "Flags"
        },
        {
          "name": "--source",
          "shorthand": null,
          "type_as_displayed": "SOURCE",
          "description": "read only this history SOURCE (sonny, claude or codex; repeatable; default all three)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Report, read-only, what 'sonny init project history import' would\ndo: the attributable, ambiguous, unattributed, malformed and skipped\nsession counts, the time range, and every history root with whether it\nexists. A missing root is reported, not an error. Nothing is written.\nIt exits 0, or 3 when nothing is attributable to this project.\n\nUsage:\n  sonny init project history plan [flags]\n\nFlags:\n  -h, --help             help for plan\n      --json             print the report as one JSON document\n      --map FROM=TO      attribute sessions recorded under an old location of this project: FROM=TO (absolute paths; repeatable)\n      --max-bytes SIZE   read at most SIZE of history in total, e.g. 2GiB or 500MB (default 1GiB)\n      --max-files N      read at most N history files in total (default 10000)\n      --source SOURCE    read only this history SOURCE (sonny, claude or codex; repeatable; default all three)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny init project index",
      "path": [
        "init",
        "project",
        "index"
      ],
      "summary": "Publish the project's local source index",
      "usage": "  sonny init project index [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--approve",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "approve reading this project's repository and Git metadata and storing a private local source index",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for index",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "print index readiness as JSON",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Publish the project's local source index\n\nUsage:\n  sonny init project index [flags]\n\nFlags:\n      --approve   approve reading this project's repository and Git metadata and storing a private local source index\n  -h, --help      help for index\n      --json      print index readiness as JSON\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny init project optimize",
      "path": [
        "init",
        "project",
        "optimize"
      ],
      "summary": "Optimize the project's recipe against its history dataset (staged, never activated)",
      "usage": "  sonny init project optimize [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--background",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "detach from the terminal and run the campaign in the background; prints the pid and log path, then returns immediately (send SIGUSR1 to the pid to skip a running campaign gracefully)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--concurrency",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "cases evaluated at once through the shared scheduler (default 4)",
          "default_as_displayed": "4",
          "group": "Flags"
        },
        {
          "name": "--dataset",
          "shorthand": null,
          "type_as_displayed": "ID",
          "description": "the dataset ID to use (default: the newest ready dataset; list them with sonny init project dataset list)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--fresh",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "discard the checkpoint of an earlier cut or failed run on the same inputs and start over (default: resume it)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--generation",
          "shorthand": null,
          "type_as_displayed": "GEN",
          "description": "the generation GEN to measure (default: the active one; optimize always uses it)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for optimize",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "print the receipt as one JSON document",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--max-attempts",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "attempts of a campaign call that fails retryably (default 1)",
          "default_as_displayed": "1",
          "group": "Flags"
        },
        {
          "name": "--max-calls",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "hard ceiling on model calls (default 500)",
          "default_as_displayed": "500",
          "group": "Flags"
        },
        {
          "name": "--min-delta",
          "shorthand": null,
          "type_as_displayed": "float",
          "description": "holdout-score gain the quality gate requires (default: init.optimize.min_delta, else 0.02)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--recipe",
          "shorthand": null,
          "type_as_displayed": "ID",
          "description": "the pack ID under campaign (default: the project's primary pack)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--wall-clock",
          "shorthand": null,
          "type_as_displayed": "duration",
          "description": "wall-clock budget (default 2h0m0s)",
          "default_as_displayed": "2h0m0s",
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Run a bounded optimization campaign on the active generation's\nprimary pack: the optimizer sees the training cases only; the sealed\nholdout split is evaluated by the holdout gate alone. Hard gates: the\nholdout verdict is improved, no holdout text leaked into the candidate,\nthe locked parent tool policy holds, no permission is widened, and the\ndataset has at least 25 eligible cases. The quality gate is a holdout\nscore gain of at least --min-delta. A candidate that passes is staged\nas a generation (improved, exit 0) for 'sonny init project promote';\nnot_improved, rejected, data_insufficient and unavailable exit 3;\ncancelled and failed exit 1. Cases run through the shared optimize\nscheduler.\n\nTo skip a running campaign gracefully (preserving the checkpoint for\nlater resume), send SIGUSR1 to the process: kill -USR1 <pid>. A skip\nwrites a cancelled receipt, keeps the checkpoint, and exits 3.\n\nUse --background to detach from the terminal: the campaign runs in a\nnew session (setsid), stdout/stderr go to a log file under\n.sonny/init/campaigns/bg/, and this process exits 0 immediately after\nprinting the pid and log path.\n\nUsage:\n  sonny init project optimize [flags]\n\nFlags:\n      --background            detach from the terminal and run the campaign in the background; prints the pid and log path, then returns immediately (send SIGUSR1 to the pid to skip a running campaign gracefully)\n      --concurrency int       cases evaluated at once through the shared scheduler (default 4)\n      --dataset ID            the dataset ID to use (default: the newest ready dataset; list them with sonny init project dataset list)\n      --fresh                 discard the checkpoint of an earlier cut or failed run on the same inputs and start over (default: resume it)\n      --generation GEN        the generation GEN to measure (default: the active one; optimize always uses it)\n  -h, --help                  help for optimize\n      --json                  print the receipt as one JSON document\n      --max-attempts int      attempts of a campaign call that fails retryably (default 1)\n      --max-calls int         hard ceiling on model calls (default 500)\n      --min-delta float       holdout-score gain the quality gate requires (default: init.optimize.min_delta, else 0.02)\n      --recipe ID             the pack ID under campaign (default: the project's primary pack)\n      --wall-clock duration   wall-clock budget (default 2h0m0s)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny init project plan",
      "path": [
        "init",
        "project",
        "plan"
      ],
      "summary": "Show what an init apply would do, without writing anything",
      "usage": "  sonny init project plan [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--analysis",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable an initial analysis pipeline in .sonny/config.yaml when no custom analysis is configured (remembered; --analysis=false disables; never writes .sonny.yaml or grants)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--canary",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "scaffold project-scoped Canary config under .canary/ (remembered; --canary=false disables; never home or agent files; an existing .canary is kept)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--decide",
          "shorthand": null,
          "type_as_displayed": "path=keep|replace",
          "description": "resolve one hand-edited output as path=keep|replace (repeatable)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--force",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "replace hand-edited generated files (explicit destructive choice)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--gitignore",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "keep the managed .gitignore block ignoring .sonny/init/ (default on; remembered; --gitignore=false disables; never removes lines)",
          "default_as_displayed": "on; remembered; --gitignore=false disables; never removes lines",
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for plan",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--index",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "record the code index registration in .sonny/init/index.json (default on; remembered; --index=false disables)",
          "default_as_displayed": "on; remembered; --index=false disables",
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "print the plan as one JSON document",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--mcp",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "harvest MCP server configs into .sonny/mcp.yaml (remembered; --mcp=false disables)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--no-llm",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "skip LLM synthesis; use the deterministic template",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Compute the init plan for this directory read-only: the scope\n(directory, project uuid, worktree), per-subsystem readiness, the\noperations an apply would perform, conflicts, and capabilities.\n\nThe plan id binds the reviewed plan: approve it with\n'sonny init project apply --plan-id ID', repeating the same --force,\n--no-llm, --mcp, --canary, --analysis, --gitignore, --index and --decide\nflags.\n\nUsage:\n  sonny init project plan [flags]\n\nFlags:\n      --analysis                   enable an initial analysis pipeline in .sonny/config.yaml when no custom analysis is configured (remembered; --analysis=false disables; never writes .sonny.yaml or grants)\n      --canary                     scaffold project-scoped Canary config under .canary/ (remembered; --canary=false disables; never home or agent files; an existing .canary is kept)\n      --decide path=keep|replace   resolve one hand-edited output as path=keep|replace (repeatable)\n      --force                      replace hand-edited generated files (explicit destructive choice)\n      --gitignore                  keep the managed .gitignore block ignoring .sonny/init/ (default on; remembered; --gitignore=false disables; never removes lines)\n  -h, --help                       help for plan\n      --index                      record the code index registration in .sonny/init/index.json (default on; remembered; --index=false disables)\n      --json                       print the plan as one JSON document\n      --mcp                        harvest MCP server configs into .sonny/mcp.yaml (remembered; --mcp=false disables)\n      --no-llm                     skip LLM synthesis; use the deterministic template\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny init project promote",
      "path": [
        "init",
        "project",
        "promote"
      ],
      "summary": "Activate an improved optimization candidate by receipt",
      "usage": "  sonny init project promote [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--expected-active",
          "shorthand": null,
          "type_as_displayed": "GEN",
          "description": "the generation GEN that must be active (default: the current active generation)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for promote",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "print the result as one JSON document",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--receipt",
          "shorthand": null,
          "type_as_displayed": "ID",
          "description": "the optimization receipt ID to promote (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Activate the staged candidate of optimization receipt --receipt.\nOnly an improved receipt whose hard gates all passed is promotable\n(exit 3 otherwise). The switch is a compare-and-swap on the active\ngeneration (--expected-active defaults to the one 'sonny init project\nstatus' reports; a different one exits 4), and the receipt's inputs are\nrecomputed from the current project: a changed source, parent, adapter,\ndataset, provider or model exits 4 with stale_receipt. The activation\nis journaled like a rollback and records a promotion receipt; undo it\nwith 'sonny init project rollback --to <previous generation>'.\n\nUsage:\n  sonny init project promote [flags]\n\nFlags:\n      --expected-active GEN   the generation GEN that must be active (default: the current active generation)\n  -h, --help                  help for promote\n      --json                  print the result as one JSON document\n      --receipt ID            the optimization receipt ID to promote (required)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny init project rebind",
      "path": [
        "init",
        "project",
        "rebind"
      ],
      "summary": "Bind the project's private init state to this checkout",
      "usage": "  sonny init project rebind [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for rebind",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "print the result as one JSON document",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Bind the private init state of this project's uuid (imported\nhistories, datasets, campaign work dirs and checkpoints under the data\ndir) to this checkout.\n\nThe uuid comes from the committed .sonny/init-manifest.yaml, so another\ncheckout can assert it too. Private state is therefore bound to the\ncheckout that created it (and to linked worktrees of the same git\nrepository); any other checkout with the same uuid is refused (exit 3)\nuntil you run this command there. Run it only when this checkout should\nown that state, for example after moving or re-cloning the project. The\ncheckout it was bound to before is refused from then on.\n\nUsage:\n  sonny init project rebind [flags]\n\nFlags:\n  -h, --help   help for rebind\n      --json   print the result as one JSON document\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny init project repair",
      "path": [
        "init",
        "project",
        "repair"
      ],
      "summary": "Regenerate missing or stale init outputs, keeping hand-edited files",
      "usage": "  sonny init project repair [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for repair",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "print the result as one JSON document",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Plan and apply in one step the repair of missing or stale\ngenerated outputs of an initialized project. Hand-edited outputs are\nkept (reported as conflicts) and no LLM synthesis runs. A project that\nwas never initialized exits 3: run 'sonny init project' first.\n\nUsage:\n  sonny init project repair [flags]\n\nFlags:\n  -h, --help   help for repair\n      --json   print the result as one JSON document\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny init project resume",
      "path": [
        "init",
        "project",
        "resume"
      ],
      "summary": "Resume an unfinished init operation",
      "usage": "  sonny init project resume OP [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for resume",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "print the result as one JSON document",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Resume the unfinished init operation OP that 'sonny init project\nstatus' reports: its leftovers are undone and its plan is applied again\nunder the same operation id (exit 4 when its inputs changed since). An\noperation that already committed is finished forward.\n\nUsage:\n  sonny init project resume OP [flags]\n\nFlags:\n  -h, --help   help for resume\n      --json   print the result as one JSON document\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny init project rollback",
      "path": [
        "init",
        "project",
        "rollback"
      ],
      "summary": "Re-activate a recorded generation of the project's recipes",
      "usage": "  sonny init project rollback [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--expected-active",
          "shorthand": null,
          "type_as_displayed": "GEN",
          "description": "the generation GEN that must be active (default: the current active generation)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for rollback",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "print the result as one JSON document",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--to",
          "shorthand": null,
          "type_as_displayed": "GEN",
          "description": "the recorded generation GEN to re-activate (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Re-activate the recorded generation --to GEN. The switch is a\ncompare-and-swap on the active generation: --expected-active defaults\nto the active generation 'sonny init project status' reports, and a\ndifferent active generation exits 4 without writing anything.\n\nUsage:\n  sonny init project rollback [flags]\n\nFlags:\n      --expected-active GEN   the generation GEN that must be active (default: the current active generation)\n  -h, --help                  help for rollback\n      --json                  print the result as one JSON document\n      --to GEN                the recorded generation GEN to re-activate (required)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny init project setup",
      "path": [
        "init",
        "project",
        "setup"
      ],
      "summary": "Provision local isolation and a protected analysis deployment",
      "usage": "  sonny init project setup [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--dir",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "project directory (default: current directory)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for setup",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--host-local",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "grant analysis without an isolation realm (selected automatically when no usable isolation Docker engine exists)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Provision a per-user rootless Docker engine (or use the system Docker engine when it runs with userns-remap), verify a signed Sonny isolation image, and grant this project's enabled analysis pipeline access to its workspace and configured model providers. Existing operator configuration is preserved.\n\nUsage:\n  sonny init project setup [flags]\n\nFlags:\n      --dir string   project directory (default: current directory)\n  -h, --help         help for setup\n      --host-local   grant analysis without an isolation realm (selected automatically when no usable isolation Docker engine exists)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny init project status",
      "path": [
        "init",
        "project",
        "status"
      ],
      "summary": "Show the project's init state and per-subsystem readiness",
      "usage": "  sonny init project status [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for status",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "print the status as one JSON document",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Report this directory's init state read-only: the manifest, the\nactive and recorded generations, drift, conflicts, an unfinished\noperation to resume or abandon, per-subsystem readiness, and the next\nactions. It exits 3 when the recipes subsystem is blocked or failed.\n\nUsage:\n  sonny init project status [flags]\n\nFlags:\n  -h, --help   help for status\n      --json   print the status as one JSON document\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny isolation",
      "path": [
        "isolation"
      ],
      "summary": "Inspect and verify session isolation",
      "usage": "  sonny isolation [command]",
      "aliases": [],
      "children": [
        {
          "name": "defaults",
          "summary": "Print the complete strict default isolation configuration"
        },
        {
          "name": "doctor",
          "summary": "Verify backend, policy, image, broker, and cleanup"
        },
        {
          "name": "explain",
          "summary": "Explain a tool's execution plane and effective isolation policy"
        },
        {
          "name": "export",
          "summary": "Preview or approve a reviewed workspace export"
        },
        {
          "name": "image-statement-schema",
          "summary": "Print the Docker image-statement JSON Schema"
        },
        {
          "name": "machine-schema",
          "summary": "Print the Docker machine-trust JSON Schema"
        },
        {
          "name": "policy-schema",
          "summary": "Print the embedded isolation policy JSON Schema"
        },
        {
          "name": "status",
          "summary": "Show the latest persisted verified isolation posture"
        },
        {
          "name": "verify-exposures",
          "summary": "Verify the hash chain of every isolated role-surface exposure journal"
        }
      ],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for isolation",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Inspect and verify session isolation\n\nUsage:\n  sonny isolation [command]\n\nAvailable Commands:\n  defaults               Print the complete strict default isolation configuration\n  doctor                 Verify backend, policy, image, broker, and cleanup\n  explain                Explain a tool's execution plane and effective isolation policy\n  export                 Preview or approve a reviewed workspace export\n  image-statement-schema Print the Docker image-statement JSON Schema\n  machine-schema         Print the Docker machine-trust JSON Schema\n  policy-schema          Print the embedded isolation policy JSON Schema\n  status                 Show the latest persisted verified isolation posture\n  verify-exposures       Verify the hash chain of every isolated role-surface exposure journal\n\nFlags:\n  -h, --help   help for isolation\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n\nUse \"sonny isolation [command] --help\" for more information about a command.\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny isolation defaults",
      "path": [
        "isolation",
        "defaults"
      ],
      "summary": "Print the complete strict default isolation configuration",
      "usage": "  sonny isolation defaults [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for defaults",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "write canonical JSON instead of YAML",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Print the complete strict default isolation configuration\n\nUsage:\n  sonny isolation defaults [flags]\n\nFlags:\n  -h, --help   help for defaults\n      --json   write canonical JSON instead of YAML\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny isolation doctor",
      "path": [
        "isolation",
        "doctor"
      ],
      "summary": "Verify backend, policy, image, broker, and cleanup",
      "usage": "  sonny isolation doctor [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--assurance",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "minimum assurance: guarded, native, docker, or vm",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--backend",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "select backend: auto, native, docker, or vm",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for doctor",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "write bounded machine-readable JSON",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--machine",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "absolute trusted machine configuration file",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--mode",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "narrow isolation mode: required, preferred, or off",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--policy",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "absolute trusted isolation policy file",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Verify backend, policy, image, broker, and cleanup\n\nUsage:\n  sonny isolation doctor [flags]\n\nFlags:\n      --assurance string   minimum assurance: guarded, native, docker, or vm\n      --backend string     select backend: auto, native, docker, or vm\n  -h, --help               help for doctor\n      --json               write bounded machine-readable JSON\n      --machine string     absolute trusted machine configuration file\n      --mode string        narrow isolation mode: required, preferred, or off\n      --policy string      absolute trusted isolation policy file\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny isolation explain",
      "path": [
        "isolation",
        "explain"
      ],
      "summary": "Explain a tool's execution plane and effective isolation policy",
      "usage": "  sonny isolation explain TOOL [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--assurance",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "minimum assurance: guarded, native, docker, or vm",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--backend",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "select backend: auto, native, docker, or vm",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for explain",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "write bounded machine-readable JSON",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--machine",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "absolute trusted machine configuration file",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--mode",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "narrow isolation mode: required, preferred, or off",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--policy",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "absolute trusted isolation policy file",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Explain a tool's execution plane and effective isolation policy\n\nUsage:\n  sonny isolation explain TOOL [flags]\n\nFlags:\n      --assurance string   minimum assurance: guarded, native, docker, or vm\n      --backend string     select backend: auto, native, docker, or vm\n  -h, --help               help for explain\n      --json               write bounded machine-readable JSON\n      --machine string     absolute trusted machine configuration file\n      --mode string        narrow isolation mode: required, preferred, or off\n      --policy string      absolute trusted isolation policy file\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny isolation export",
      "path": [
        "isolation",
        "export"
      ],
      "summary": "Preview or approve a reviewed workspace export",
      "usage": "  sonny isolation export [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--approve",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "approve an already staged manifest",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--digest",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "exact manifest digest shown by preview (required with --approve)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for export",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "write bounded machine-readable JSON",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--preview",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "show the validated manifest without writing host files (default true)",
          "default_as_displayed": "true",
          "group": "Flags"
        },
        {
          "name": "--session",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "session UUID to export",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Preview or approve a reviewed workspace export\n\nUsage:\n  sonny isolation export [flags]\n\nFlags:\n      --approve          approve an already staged manifest\n      --digest string    exact manifest digest shown by preview (required with --approve)\n  -h, --help             help for export\n      --json             write bounded machine-readable JSON\n      --preview          show the validated manifest without writing host files (default true)\n      --session string   session UUID to export\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny isolation image-statement-schema",
      "path": [
        "isolation",
        "image-statement-schema"
      ],
      "summary": "Print the Docker image-statement JSON Schema",
      "usage": "  sonny isolation image-statement-schema [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for image-statement-schema",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Print the Docker image-statement JSON Schema\n\nUsage:\n  sonny isolation image-statement-schema [flags]\n\nFlags:\n  -h, --help   help for image-statement-schema\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny isolation machine-schema",
      "path": [
        "isolation",
        "machine-schema"
      ],
      "summary": "Print the Docker machine-trust JSON Schema",
      "usage": "  sonny isolation machine-schema [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for machine-schema",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Print the Docker machine-trust JSON Schema\n\nUsage:\n  sonny isolation machine-schema [flags]\n\nFlags:\n  -h, --help   help for machine-schema\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny isolation policy-schema",
      "path": [
        "isolation",
        "policy-schema"
      ],
      "summary": "Print the embedded isolation policy JSON Schema",
      "usage": "  sonny isolation policy-schema [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for policy-schema",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Print the embedded isolation policy JSON Schema\n\nUsage:\n  sonny isolation policy-schema [flags]\n\nFlags:\n  -h, --help   help for policy-schema\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny isolation status",
      "path": [
        "isolation",
        "status"
      ],
      "summary": "Show the latest persisted verified isolation posture",
      "usage": "  sonny isolation status [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for status",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "write bounded machine-readable JSON",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--session",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "specific session UUID (default: latest)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Show the latest persisted verified isolation posture\n\nUsage:\n  sonny isolation status [flags]\n\nFlags:\n  -h, --help             help for status\n      --json             write bounded machine-readable JSON\n      --session string   specific session UUID (default: latest)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny isolation verify-exposures",
      "path": [
        "isolation",
        "verify-exposures"
      ],
      "summary": "Verify the hash chain of every isolated role-surface exposure journal",
      "usage": "  sonny isolation verify-exposures [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for verify-exposures",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "write bounded machine-readable JSON",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--session",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "only this session's journal segments",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Verify the hash chain of every isolated role-surface exposure journal\n\nUsage:\n  sonny isolation verify-exposures [flags]\n\nFlags:\n  -h, --help             help for verify-exposures\n      --json             write bounded machine-readable JSON\n      --session string   only this session's journal segments\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny lsp",
      "path": [
        "lsp"
      ],
      "summary": "Inspect and validate Language Server Protocol configuration",
      "usage": "  sonny lsp [command]",
      "aliases": [],
      "children": [
        {
          "name": "list",
          "summary": "List LSP servers running in THIS invocation (always empty)"
        },
        {
          "name": "servers",
          "summary": "List available LSP server configurations"
        },
        {
          "name": "start",
          "summary": "Validate a language's LSP config by starting it once"
        },
        {
          "name": "stop",
          "summary": "Stop a server started by THIS invocation (always a no-op)"
        }
      ],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for lsp",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Inspect and validate LSP configuration for code intelligence features.\n\nLSP servers provide features like hover information, go-to-definition,\nfind references, diagnostics, and more, but are managed IN-PROCESS by\nsonny's chat/TUI sessions (each session owns its own manager, started and\nstopped alongside the session). This \"lsp\" command group does not manage\nthat shared state: every subcommand builds a fresh, short-lived manager\nscoped to this single CLI invocation, so \"list\"/\"start\"/\"stop\" here can\nneither see nor affect servers a chat session is using. Use these\nsubcommands to validate that a language's configuration is correct and its\nserver binary starts successfully, not to administer a long-lived server.\n\nUsage:\n  sonny lsp [command]\n\nAvailable Commands:\n  list        List LSP servers running in THIS invocation (always empty)\n  servers     List available LSP server configurations\n  start       Validate a language's LSP config by starting it once\n  stop        Stop a server started by THIS invocation (always a no-op)\n\nFlags:\n  -h, --help   help for lsp\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n\nUse \"sonny lsp [command] --help\" for more information about a command.\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny lsp list",
      "path": [
        "lsp",
        "list"
      ],
      "summary": "List LSP servers running in THIS invocation (always empty)",
      "usage": "  sonny lsp list [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for list",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "List LSP servers running under this command's own manager.\n\nThis subcommand validates configuration for a single CLI invocation: it\nbuilds a brand-new manager that lives only for the duration of this\ncommand, so it always reports zero servers here -- it cannot see servers\nstarted by a chat/TUI session or by a previous \"sonny lsp start\" (which\nalso died with its own process). For the readiness view -- what is\nactually configured and working right now -- use \"sonny capabilities\".\nUse \"sonny lsp servers\" to see what's configured for this workspace, or\n\"sonny lsp start <language>\" to validate a server starts successfully.\n\nUsage:\n  sonny lsp list [flags]\n\nFlags:\n  -h, --help   help for list\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny lsp servers",
      "path": [
        "lsp",
        "servers"
      ],
      "summary": "List available LSP server configurations",
      "usage": "  sonny lsp servers [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for servers",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "List all configured LSP servers and their settings.\n\nThis shows both default servers and any custom servers\nconfigured in the directory: block of .sonny.yaml.\n\nIn a workspace that is not trusted, every server listed is blocked by\nworkspace trust: none of them starts there, and the listing says so.\n\nUsage:\n  sonny lsp servers [flags]\n\nFlags:\n  -h, --help   help for servers\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny lsp start",
      "path": [
        "lsp",
        "start"
      ],
      "summary": "Validate a language's LSP config by starting it once",
      "usage": "  sonny lsp start <language> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for start",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Start an LSP server for the specified language, then exit.\n\nThis subcommand validates configuration for a single CLI invocation, not\nserver administration: the manager this creates -- and the server\nprocess it starts -- belongs only to this CLI invocation and is gone the\nmoment the command exits (nothing keeps it running or lets a later\n\"sonny lsp list\"/\"sonny lsp stop\" find it). Use it to confirm a\nlanguage's server binary is on PATH, its config is valid, and it\ninitializes successfully. For the readiness view -- what is actually\nconfigured and working right now -- use \"sonny capabilities\". Chat/TUI\nsessions manage their own LSP servers independently of this command.\n\nLike a session, it starts no language server, built-in or declared by the\nproject, in a workspace that is not trusted: a language server runs the\nproject's own code while it analyzes it (rust-analyzer runs build.rs,\ngopls follows a go.mod toolchain line). There it exits 8 (denied_policy)\nand names the command that trusts the workspace, \"sonny workspace trust\".\n\nExamples:\n  sonny lsp start go\n  sonny lsp start typescript\n  sonny lsp start python\n\nUsage:\n  sonny lsp start <language> [flags]\n\nFlags:\n  -h, --help   help for start\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny lsp stop",
      "path": [
        "lsp",
        "stop"
      ],
      "summary": "Stop a server started by THIS invocation (always a no-op)",
      "usage": "  sonny lsp stop <language> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for stop",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Stop an LSP server for the specified language.\n\nThis subcommand validates configuration for a single CLI invocation:\n\"sonny lsp stop\" builds its own fresh, empty manager for this single\ninvocation, so there is never anything for it to stop here -- it cannot\nreach a server owned by a chat/TUI session or by a separate\n\"sonny lsp start\" process. It exists for symmetry with \"start\"/\"list\"\nand will report \"no server running\" every time it is run as a\nstandalone command. For the readiness view -- what is actually\nconfigured and working right now -- use \"sonny capabilities\".\n\nExamples:\n  sonny lsp stop go\n  sonny lsp stop typescript\n\nUsage:\n  sonny lsp stop <language> [flags]\n\nFlags:\n  -h, --help   help for stop\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny mcp",
      "path": [
        "mcp"
      ],
      "summary": "Inspect resolved MCP server and tool configuration",
      "usage": "  sonny mcp [command]",
      "aliases": [],
      "children": [
        {
          "name": "approve",
          "summary": "Add MCP servers to the operator allowlist (SEC-002)"
        },
        {
          "name": "connect",
          "summary": "Operator: connect to a configured MCP server and report its tools"
        },
        {
          "name": "disconnect",
          "summary": "Operator: verify clean teardown of a configured MCP server connection"
        },
        {
          "name": "list",
          "summary": "List resolved MCP servers (config + recipe), redacted, with digests"
        }
      ],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for mcp",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Inspect resolved MCP server and tool configuration\n\nUsage:\n  sonny mcp [command]\n\nAvailable Commands:\n  approve     Add MCP servers to the operator allowlist (SEC-002)\n  connect     Operator: connect to a configured MCP server and report its tools\n  disconnect  Operator: verify clean teardown of a configured MCP server connection\n  list        List resolved MCP servers (config + recipe), redacted, with digests\n\nFlags:\n  -h, --help   help for mcp\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n\nUse \"sonny mcp [command] --help\" for more information about a command.\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny mcp approve",
      "path": [
        "mcp",
        "approve"
      ],
      "summary": "Add MCP servers to the operator allowlist (SEC-002)",
      "usage": "  sonny mcp approve [command]",
      "aliases": [],
      "children": [
        {
          "name": "dir",
          "summary": "Scan a directory for recipe YAMLs and approve their MCP servers"
        },
        {
          "name": "recipe",
          "summary": "Approve MCP servers declared by a recipe (pack is deprecated; removal in v0.13.0)"
        },
        {
          "name": "registry",
          "summary": "Approve the MCP servers a recipe source's mcp_d supplies"
        },
        {
          "name": "server",
          "summary": "Approve a single MCP server by name and --command, --url or --project"
        }
      ],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for approve",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Approve subcommands resolve and hash MCP server binaries on the\ncurrent host and add matching entries to the MCP allowlist at\n<config-dir>/mcp.allowlist.yaml (XDG-aware).\n\nA server approved here is trusted on THIS host only; any later\nbinary update requires re-running approve to re-pin the new hash.\n\nUsage:\n  sonny mcp approve [command]\n\nAvailable Commands:\n  dir         Scan a directory for recipe YAMLs and approve their MCP servers\n  recipe      Approve MCP servers declared by a recipe (pack is deprecated; removal in v0.13.0)\n  registry    Approve the MCP servers a recipe source's mcp_d supplies\n  server      Approve a single MCP server by name and --command, --url or --project\n\nFlags:\n  -h, --help   help for approve\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n\nUse \"sonny mcp approve [command] --help\" for more information about a command.\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny mcp approve dir",
      "path": [
        "mcp",
        "approve",
        "dir"
      ],
      "summary": "Scan a directory for recipe YAMLs and approve their MCP servers",
      "usage": "  sonny mcp approve dir <path> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for dir",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--skip-unresolved",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "silently skip servers whose binary is not installed on this host",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--write-config",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "also merge approved server definitions into <config-dir>/mcp.yaml",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--write-untrusted-references",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "with --write-config: also write $VAR references, refused env keys and egress policy beyond the server's own url host from servers of packs that are not verified-signed into mcp.yaml, where references expand against your environment",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Walks path for *.yaml / *.yml files, parses each one as a recipe,\ncollects every mcp.server declaration (last writer wins on duplicate\nserver name), and approves them. Useful before adding a recipe source\nor to re-approve after a binary update.\nPass --write-config to also merge server definitions into mcp.yaml.\nFor a recipe that is not verified-signed, --write-config refuses $VAR\nreferences in env and auth values, and env keys the untrusted-pack env\ngate refuses, unless --write-untrusted-references is also passed.\n\nUsage:\n  sonny mcp approve dir <path> [flags]\n\nFlags:\n  -h, --help                         help for dir\n      --skip-unresolved              silently skip servers whose binary is not installed on this host\n      --write-config                 also merge approved server definitions into <config-dir>/mcp.yaml\n      --write-untrusted-references   with --write-config: also write $VAR references, refused env keys and egress policy beyond the server's own url host from servers of packs that are not verified-signed into mcp.yaml, where references expand against your environment\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny mcp approve recipe",
      "path": [
        "mcp",
        "approve",
        "recipe"
      ],
      "summary": "Approve MCP servers declared by a recipe (pack is deprecated; removal in v0.13.0)",
      "usage": "  sonny mcp approve recipe <recipe-id> [flags]",
      "aliases": [
        "recipe",
        "pack"
      ],
      "children": [],
      "flags": [
        {
          "name": "--dir",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "additional pack directory (passed to pack discovery)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--dry-run",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "print what would be approved (command, args, env names, url, auth shape) and write nothing",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--file",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "load a single pack YAML by path instead of by ID",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for recipe",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--skip-unresolved",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "silently skip servers whose binary is not installed on this host",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--write-config",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "also merge approved server definitions into <config-dir>/mcp.yaml",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--write-untrusted-references",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "with --write-config: also write $VAR references, refused env keys and egress policy beyond the server's own url host from servers of packs that are not verified-signed into mcp.yaml, where references expand against your environment",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Loads the named recipe (using the same discovery as 'sonny recipe inspect'),\nextracts every server declared under pack.mcp.servers, resolves each\nbinary hash on the current host, and adds new entries to the MCP\nallowlist. Already-present entries are silently skipped.\n\nUse --dir or --file to target a recipe YAML by path instead of ID.\nPass --write-config to also merge server definitions into mcp.yaml.\nFor a recipe that is not verified-signed, --write-config refuses $VAR\nreferences in env and auth values, and env keys the untrusted-pack env\ngate refuses, unless --write-untrusted-references is also passed. A\npreview (command, args, env names, url, auth shape) is printed first;\n--dry-run stops there.\n\nUsage:\n  sonny mcp approve recipe <recipe-id> [flags]\n\nAliases:\n  recipe, pack\n\nFlags:\n      --dir string                   additional pack directory (passed to pack discovery)\n      --dry-run                      print what would be approved (command, args, env names, url, auth shape) and write nothing\n      --file string                  load a single pack YAML by path instead of by ID\n  -h, --help                         help for recipe\n      --skip-unresolved              silently skip servers whose binary is not installed on this host\n      --write-config                 also merge approved server definitions into <config-dir>/mcp.yaml\n      --write-untrusted-references   with --write-config: also write $VAR references, refused env keys and egress policy beyond the server's own url host from servers of packs that are not verified-signed into mcp.yaml, where references expand against your environment\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny mcp approve registry",
      "path": [
        "mcp",
        "approve",
        "registry"
      ],
      "summary": "Approve the MCP servers a recipe source's mcp_d supplies",
      "usage": "  sonny mcp approve registry <source> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--dry-run",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "print what would be approved (command, args, env names, url, auth shape) and write nothing",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for registry",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--skip-unresolved",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "silently skip servers whose binary is not installed on this host",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--write-config",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "also merge approved server definitions into <config-dir>/mcp.yaml",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--write-untrusted-references",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "with --write-config: also write $VAR references, refused env keys and egress policy beyond the server's own url host from servers of packs that are not verified-signed into mcp.yaml, where references expand against your environment",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Loads the mcp_d files of the named recipe source (pack-sources.yaml),\napplies the registry loader's gates, resolves each stdio binary on the\ncurrent host and records your approval of every server's definition\nin the allowlist: the source, its commit, the definition digest and\nthe pinned launch (command, binary digest, args, work_dir, env digest).\nA recipe source's server launches only while its definition matches such\na record, so run this after adding a source with mcp_d and again\nwhenever an update changes a server's definition. With the source's\nmcp_auto_approve on (the default for a source with mcp_d), an approved\nserver connects, without a prompt, for the recipes from the same source\nthat name it -- unless it reads a host variable outside the\nsource's mcp_env_allow (including SSH_AUTH_SOCK, GIT_SSH_COMMAND,\nNODE_OPTIONS and PYTHONPATH, which a stdio server with no env_allowlist\nreceives implicitly), sets a code-execution env key such as LD_PRELOAD\nto a literal, runs a shell, a wrapper such as sudo, or inline\ninterpreter code, or launches an unpinned package or image, or the\nclone is dirty or its commit unknown. Those, and any registry server a\nlocal recipe or another source's recipe names, are held to the same record\nand the stricter pinning an explicitly approved server gets. A\npreview (command, args, env names, code-execution env values, url with\nuserinfo redacted, auth shape) is printed first; --dry-run stops there.\nA changed definition needs a new approval.\n\nUsage:\n  sonny mcp approve registry <source> [flags]\n\nFlags:\n      --dry-run                      print what would be approved (command, args, env names, url, auth shape) and write nothing\n  -h, --help                         help for registry\n      --skip-unresolved              silently skip servers whose binary is not installed on this host\n      --write-config                 also merge approved server definitions into <config-dir>/mcp.yaml\n      --write-untrusted-references   with --write-config: also write $VAR references, refused env keys and egress policy beyond the server's own url host from servers of packs that are not verified-signed into mcp.yaml, where references expand against your environment\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny mcp approve server",
      "path": [
        "mcp",
        "approve",
        "server"
      ],
      "summary": "Approve a single MCP server by name and --command, --url or --project",
      "usage": "  sonny mcp approve server <name> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--arg",
          "shorthand": null,
          "type_as_displayed": "stringArray",
          "description": "with --command: one argument the server is launched with (repeatable, in order); the entry pins the argv",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--command",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "absolute path or bare name of the stdio server binary",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--dry-run",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "print what would be approved (command, args, env names, url, auth shape) and write nothing",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--egress-allow-host",
          "shorthand": null,
          "type_as_displayed": "stringArray",
          "description": "with --url --write-config: host the SSE server may reach (egress.allow_hosts; repeatable; a leading \".\" admits strict subdomains); required for an SSE entry",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--egress-allow-plain-http",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "with --url --write-config: permit an http:// URL on a loopback host (egress.allow_plain_http)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--egress-allow-private-networks",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "with --url --write-config: permit a private or loopback destination (egress.allow_private_networks)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--env",
          "shorthand": null,
          "type_as_displayed": "stringArray",
          "description": "with --command: KEY=VALUE the server is launched with (repeatable; VALUE may be a $VAR reference); the entry pins the env keys and a digest, never a value",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for server",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--project",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "approve the server <name> exactly as the current workspace's .sonny/mcp.yaml defines it",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--url",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "full http(s):// URL for an SSE/HTTP server",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--work-dir",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "with --command: the working directory the server is launched in; the entry pins it",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--write-config",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "also merge the approved server definition into <config-dir>/mcp.yaml",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Approve one server without a recipe YAML. For stdio servers, supply\n--command, plus the exact --arg (repeatable), --work-dir and --env KEY=VALUE\n(repeatable) it is launched with: the entry pins them, with the binary's\nSHA-256, and approves only that launch. For SSE/HTTP servers, supply --url.\nThe binary is resolved and hashed at the current path before the entry is written.\nPass --project to approve, exactly as defined, the server the current\nworkspace's .sonny/mcp.yaml defines under <name>: a repository's server\nlaunches only on an entry that pins its whole definition.\nPass --write-config to also add the server definition to mcp.yaml.\nAn SSE server written with --write-config needs --egress-allow-host\nnaming its URL host (egress.allow_hosts); a loopback http server also\nneeds --egress-allow-plain-http and --egress-allow-private-networks.\n\nUsage:\n  sonny mcp approve server <name> [flags]\n\nFlags:\n      --arg stringArray                 with --command: one argument the server is launched with (repeatable, in order); the entry pins the argv\n      --command string                  absolute path or bare name of the stdio server binary\n      --dry-run                         print what would be approved (command, args, env names, url, auth shape) and write nothing\n      --egress-allow-host stringArray   with --url --write-config: host the SSE server may reach (egress.allow_hosts; repeatable; a leading \".\" admits strict subdomains); required for an SSE entry\n      --egress-allow-plain-http         with --url --write-config: permit an http:// URL on a loopback host (egress.allow_plain_http)\n      --egress-allow-private-networks   with --url --write-config: permit a private or loopback destination (egress.allow_private_networks)\n      --env stringArray                 with --command: KEY=VALUE the server is launched with (repeatable; VALUE may be a $VAR reference); the entry pins the env keys and a digest, never a value\n  -h, --help                            help for server\n      --project                         approve the server <name> exactly as the current workspace's .sonny/mcp.yaml defines it\n      --url string                      full http(s):// URL for an SSE/HTTP server\n      --work-dir string                 with --command: the working directory the server is launched in; the entry pins it\n      --write-config                    also merge the approved server definition into <config-dir>/mcp.yaml\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny mcp connect",
      "path": [
        "mcp",
        "connect"
      ],
      "summary": "Operator: connect to a configured MCP server and report its tools",
      "usage": "  sonny mcp connect <server> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--connect-timeout",
          "shorthand": null,
          "type_as_displayed": "duration",
          "description": "MCP connect timeout (default 15s)",
          "default_as_displayed": "15s",
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for connect",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--mcp-config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "MCP sidecar config path (default: standard discovery)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Connect to a configured MCP server (operator-only; not a model tool).\nMints an administrative authority with a stated reason and refuses to run\nwithout one. The connection is scoped to this command process.\n\nUsage:\n  sonny mcp connect <server> [flags]\n\nFlags:\n      --connect-timeout duration   MCP connect timeout (default 15s)\n  -h, --help                       help for connect\n      --mcp-config string          MCP sidecar config path (default: standard discovery)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny mcp disconnect",
      "path": [
        "mcp",
        "disconnect"
      ],
      "summary": "Operator: verify clean teardown of a configured MCP server connection",
      "usage": "  sonny mcp disconnect <server> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--connect-timeout",
          "shorthand": null,
          "type_as_displayed": "duration",
          "description": "MCP connect timeout (default 15s)",
          "default_as_displayed": "15s",
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for disconnect",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--mcp-config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "MCP sidecar config path (default: standard discovery)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Disconnect from a configured MCP server (operator-only; not a model tool).\nMints an administrative authority with a stated reason and refuses to run\nwithout one. Connections are session-scoped, so this verifies the teardown\npath rather than closing a long-lived connection.\n\nUsage:\n  sonny mcp disconnect <server> [flags]\n\nFlags:\n      --connect-timeout duration   MCP connect timeout (default 15s)\n  -h, --help                       help for disconnect\n      --mcp-config string          MCP sidecar config path (default: standard discovery)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny mcp list",
      "path": [
        "mcp",
        "list"
      ],
      "summary": "List resolved MCP servers (config + recipe), redacted, with digests",
      "usage": "  sonny mcp list [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--connect",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "connect to enabled servers and enumerate their tools (spawns processes)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--connect-timeout",
          "shorthand": null,
          "type_as_displayed": "duration",
          "description": "per-server MCP connect timeout (only used with --connect) (default 15s)",
          "default_as_displayed": "15s",
          "group": "Flags"
        },
        {
          "name": "--format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for list",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--mcp-config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "MCP sidecar config path (default: standard discovery)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--recipe-file",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "merge this pack's inline mcp.servers over the config",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "List resolved MCP servers (config + recipe), redacted, with digests\n\nUsage:\n  sonny mcp list [flags]\n\nFlags:\n      --connect                    connect to enabled servers and enumerate their tools (spawns processes)\n      --connect-timeout duration   per-server MCP connect timeout (only used with --connect) (default 15s)\n      --format string              text|json (default \"text\")\n  -h, --help                       help for list\n      --mcp-config string          MCP sidecar config path (default: standard discovery)\n      --recipe-file string         merge this pack's inline mcp.servers over the config\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny mcp-server",
      "path": [
        "mcp-server"
      ],
      "summary": "Run Sonny tools or a traced external MCP proxy over stdio",
      "usage": "  sonny mcp-server [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--allow-host-effects",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "explicitly allow model-driven filesystem, network, and process effects on this host",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--allowed-tools",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "comma-separated tool names to expose (empty exposes none)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for mcp-server",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--proxy-config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "private JSON file containing allowlisted upstream MCP definitions",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--proxy-server",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "server name from --proxy-config to expose through Sonny",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--realm-contained",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "require and use Sonny's verified realm process environment",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--supervisor-endpoint",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "connect to an existing supervisor for admitted SCI tools",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--supervisor-session",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "existing supervisor session whose SCI exposure is served",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--supervisor-tenant",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "tenant authenticated by the supervisor",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Run Sonny tools or a traced external MCP proxy over stdio\n\nUsage:\n  sonny mcp-server [flags]\n\nFlags:\n      --allow-host-effects           explicitly allow model-driven filesystem, network, and process effects on this host\n      --allowed-tools string         comma-separated tool names to expose (empty exposes none)\n  -h, --help                         help for mcp-server\n      --proxy-config string          private JSON file containing allowlisted upstream MCP definitions\n      --proxy-server string          server name from --proxy-config to expose through Sonny\n      --realm-contained              require and use Sonny's verified realm process environment\n      --supervisor-endpoint string   connect to an existing supervisor for admitted SCI tools\n      --supervisor-session string    existing supervisor session whose SCI exposure is served\n      --supervisor-tenant string     tenant authenticated by the supervisor\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny mesh",
      "path": [
        "mesh"
      ],
      "summary": "Distributed mesh session management",
      "usage": "  sonny mesh [command]",
      "aliases": [],
      "children": [
        {
          "name": "adopt",
          "summary": "Adopt a running session using a pinned, single-use offer"
        },
        {
          "name": "attach",
          "summary": "Attach to a running session"
        },
        {
          "name": "detach",
          "summary": "Detach from a session"
        },
        {
          "name": "exec",
          "summary": "Run a shell command on a remote mesh node via its A2A endpoint"
        },
        {
          "name": "host",
          "summary": "Bootstrap and manage SSH-reachable mesh hosts"
        },
        {
          "name": "human-key",
          "summary": "Manage the keys that let a device attach to mesh sessions as their human"
        },
        {
          "name": "identity",
          "summary": "Provision and inspect mesh node identity material"
        },
        {
          "name": "list",
          "summary": "List nodes and sessions"
        },
        {
          "name": "managed",
          "summary": "Provision and verify managed-worker authority for mesh serve"
        },
        {
          "name": "nodes",
          "summary": "List mesh nodes"
        },
        {
          "name": "peers",
          "summary": "Print this daemon's mesh participation snapshot as JSON"
        },
        {
          "name": "push",
          "summary": "Push a session to a remote node"
        },
        {
          "name": "relate",
          "summary": "Grant, revoke and list peer relationships between root sessions on two nodes"
        },
        {
          "name": "serve",
          "summary": "Start a mesh node"
        },
        {
          "name": "sessions",
          "summary": "List mesh sessions"
        },
        {
          "name": "terminate",
          "summary": "Terminate one or many mesh sessions"
        },
        {
          "name": "transfer",
          "summary": "Transfer a session to another node"
        }
      ],
      "flags": [
        {
          "name": "--client-ca",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "CA bundle file used to verify the server cert",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--client-cert",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS certificate file (PEM) for mTLS-protected mesh endpoints",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--client-key",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--client-key-pin",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "PIN file for PKCS#11 client key (optional)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--dev-insecure-transport",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--endpoint",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for mesh",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--server-name",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "SNI / cert-SAN match target (required when --client-cert is set)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "The mesh command group provides tools for managing distributed LLM sessions\nacross multiple nodes. Sessions can be pushed to remote nodes, transferred between\nnodes, and continue running even when disconnected from the local terminal.\n\nUse 'mesh serve' to start a mesh node, 'mesh push' to send sessions to remote nodes,\nand 'mesh attach' to connect to running sessions.\n\nUsage:\n  sonny mesh [command]\n\nAvailable Commands:\n  adopt       Adopt a running session using a pinned, single-use offer\n  attach      Attach to a running session\n  detach      Detach from a session\n  exec        Run a shell command on a remote mesh node via its A2A endpoint\n  host        Bootstrap and manage SSH-reachable mesh hosts\n  human-key   Manage the keys that let a device attach to mesh sessions as their human\n  identity    Provision and inspect mesh node identity material\n  list        List nodes and sessions\n  managed     Provision and verify managed-worker authority for mesh serve\n  nodes       List mesh nodes\n  peers       Print this daemon's mesh participation snapshot as JSON\n  push        Push a session to a remote node\n  relate      Grant, revoke and list peer relationships between root sessions on two nodes\n  serve       Start a mesh node\n  sessions    List mesh sessions\n  terminate   Terminate one or many mesh sessions\n  transfer    Transfer a session to another node\n\nFlags:\n      --client-ca string         CA bundle file used to verify the server cert\n      --client-cert string       client TLS certificate file (PEM) for mTLS-protected mesh endpoints\n      --client-key string        client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)\n      --client-key-pin string    PIN file for PKCS#11 client key (optional)\n      --dev-insecure-transport   DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)\n      --endpoint string          mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)\n  -h, --help                     help for mesh\n      --server-name string       SNI / cert-SAN match target (required when --client-cert is set)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n\nUse \"sonny mesh [command] --help\" for more information about a command.\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny mesh adopt",
      "path": [
        "mesh",
        "adopt"
      ],
      "summary": "Adopt a running session using a pinned, single-use offer",
      "usage": "  sonny mesh adopt [command]",
      "aliases": [],
      "children": [
        {
          "name": "offer",
          "summary": "Create a short-lived adoption code and QR payload"
        },
        {
          "name": "redeem",
          "summary": "Redeem an adoption offer with certificate pinning"
        }
      ],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for adopt",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-ca",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "CA bundle file used to verify the server cert",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-cert",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS certificate file (PEM) for mTLS-protected mesh endpoints",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key-pin",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "PIN file for PKCS#11 client key (optional)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--dev-insecure-transport",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--endpoint",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--server-name",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "SNI / cert-SAN match target (required when --client-cert is set)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Adopt a running session using a pinned, single-use offer\n\nUsage:\n  sonny mesh adopt [command]\n\nAvailable Commands:\n  offer       Create a short-lived adoption code and QR payload\n  redeem      Redeem an adoption offer with certificate pinning\n\nFlags:\n  -h, --help   help for adopt\n\nGlobal Flags:\n      --analysis-json string     versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --client-ca string         CA bundle file used to verify the server cert\n      --client-cert string       client TLS certificate file (PEM) for mTLS-protected mesh endpoints\n      --client-key string        client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)\n      --client-key-pin string    PIN file for PKCS#11 client key (optional)\n      --config string            config file (default: .sonny.yaml in working directory)\n      --debug                    enable debug mode\n      --dev-insecure-transport   DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)\n      --endpoint string          mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)\n      --log-format string        log format: text|json (default \"text\")\n      --log-level string         log level: debug|info|warn|error (default \"warn\")\n  -m, --model string             model to use (overrides pack default)\n  -p, --provider string          LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations       suppress schema and legacy recipe-name deprecation warnings\n      --server-name string       SNI / cert-SAN match target (required when --client-cert is set)\n  -C, --workdir string           working directory (default \".\")\n\nUse \"sonny mesh adopt [command] --help\" for more information about a command.\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny mesh adopt offer",
      "path": [
        "mesh",
        "adopt",
        "offer"
      ],
      "summary": "Create a short-lived adoption code and QR payload",
      "usage": "  sonny mesh adopt offer <session> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--address",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "reachable source mesh address (default: mesh.advertise_address or mesh.endpoint)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--cert",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "source node certificate presented by the mesh listener (default: mesh.tls_cert or <config>/mesh/node.crt)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--control-db",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "source SQLite control database (default: mesh.control_db or <data>/control.db)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for offer",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--kind",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "trust ceremony: personal or organization (default inferred from session tenant)",
          "default_as_displayed": "inferred from session tenant",
          "group": "Flags"
        },
        {
          "name": "--max-guesses",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "failed proof attempts before the offer is burned (default 5)",
          "default_as_displayed": "5",
          "group": "Flags"
        },
        {
          "name": "--namespace",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "owner namespace (inferred for a personal tenant; required for organization adoption)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--qr",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "render the sonny://adopt payload as a terminal QR code",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--ttl",
          "shorthand": null,
          "type_as_displayed": "duration",
          "description": "offer lifetime (maximum 15m) (default 5m0s)",
          "default_as_displayed": "5m0s",
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-ca",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "CA bundle file used to verify the server cert",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-cert",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS certificate file (PEM) for mTLS-protected mesh endpoints",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key-pin",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "PIN file for PKCS#11 client key (optional)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--dev-insecure-transport",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--endpoint",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--server-name",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "SNI / cert-SAN match target (required when --client-cert is set)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Create a short-lived adoption code and QR payload\n\nUsage:\n  sonny mesh adopt offer <session> [flags]\n\nFlags:\n      --address string      reachable source mesh address (default: mesh.advertise_address or mesh.endpoint)\n      --cert string         source node certificate presented by the mesh listener (default: mesh.tls_cert or <config>/mesh/node.crt)\n      --control-db string   source SQLite control database (default: mesh.control_db or <data>/control.db)\n  -h, --help                help for offer\n      --kind string         trust ceremony: personal or organization (default inferred from session tenant)\n      --max-guesses int     failed proof attempts before the offer is burned (default 5)\n      --namespace string    owner namespace (inferred for a personal tenant; required for organization adoption)\n      --qr                  render the sonny://adopt payload as a terminal QR code\n      --ttl duration        offer lifetime (maximum 15m) (default 5m0s)\n\nGlobal Flags:\n      --analysis-json string     versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --client-ca string         CA bundle file used to verify the server cert\n      --client-cert string       client TLS certificate file (PEM) for mTLS-protected mesh endpoints\n      --client-key string        client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)\n      --client-key-pin string    PIN file for PKCS#11 client key (optional)\n      --config string            config file (default: .sonny.yaml in working directory)\n      --debug                    enable debug mode\n      --dev-insecure-transport   DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)\n      --endpoint string          mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)\n      --log-format string        log format: text|json (default \"text\")\n      --log-level string         log level: debug|info|warn|error (default \"warn\")\n  -m, --model string             model to use (overrides pack default)\n  -p, --provider string          LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations       suppress schema and legacy recipe-name deprecation warnings\n      --server-name string       SNI / cert-SAN match target (required when --client-cert is set)\n  -C, --workdir string           working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny mesh adopt redeem",
      "path": [
        "mesh",
        "adopt",
        "redeem"
      ],
      "summary": "Redeem an adoption offer with certificate pinning",
      "usage": "  sonny mesh adopt redeem <code-or-uri> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--address",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "source mesh address (required for a short code; URI carries it)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for redeem",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-ca",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "CA bundle file used to verify the server cert",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-cert",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS certificate file (PEM) for mTLS-protected mesh endpoints",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key-pin",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "PIN file for PKCS#11 client key (optional)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--dev-insecure-transport",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--endpoint",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--server-name",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "SNI / cert-SAN match target (required when --client-cert is set)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Redeem an adoption offer with certificate pinning\n\nUsage:\n  sonny mesh adopt redeem <code-or-uri> [flags]\n\nFlags:\n      --address string   source mesh address (required for a short code; URI carries it)\n  -h, --help             help for redeem\n\nGlobal Flags:\n      --analysis-json string     versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --client-ca string         CA bundle file used to verify the server cert\n      --client-cert string       client TLS certificate file (PEM) for mTLS-protected mesh endpoints\n      --client-key string        client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)\n      --client-key-pin string    PIN file for PKCS#11 client key (optional)\n      --config string            config file (default: .sonny.yaml in working directory)\n      --debug                    enable debug mode\n      --dev-insecure-transport   DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)\n      --endpoint string          mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)\n      --log-format string        log format: text|json (default \"text\")\n      --log-level string         log level: debug|info|warn|error (default \"warn\")\n  -m, --model string             model to use (overrides pack default)\n  -p, --provider string          LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations       suppress schema and legacy recipe-name deprecation warnings\n      --server-name string       SNI / cert-SAN match target (required when --client-cert is set)\n  -C, --workdir string           working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny mesh attach",
      "path": [
        "mesh",
        "attach"
      ],
      "summary": "Attach to a running session",
      "usage": "  sonny mesh attach <session-id> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for attach",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--read-only",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "attach in read-only mode",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-ca",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "CA bundle file used to verify the server cert",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-cert",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS certificate file (PEM) for mTLS-protected mesh endpoints",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key-pin",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "PIN file for PKCS#11 client key (optional)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--dev-insecure-transport",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--endpoint",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--server-name",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "SNI / cert-SAN match target (required when --client-cert is set)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Attach to a running session on any mesh node.\n\nThis connects your terminal to the session's input/output streams,\nallowing you to interact with it as if it were local.\n\nExample:\n  sonny mesh attach abc123\n\n  # Attach with input disabled (read-only)\n  sonny mesh attach abc123 --read-only\n\nUsage:\n  sonny mesh attach <session-id> [flags]\n\nFlags:\n  -h, --help        help for attach\n      --read-only   attach in read-only mode\n\nGlobal Flags:\n      --analysis-json string     versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --client-ca string         CA bundle file used to verify the server cert\n      --client-cert string       client TLS certificate file (PEM) for mTLS-protected mesh endpoints\n      --client-key string        client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)\n      --client-key-pin string    PIN file for PKCS#11 client key (optional)\n      --config string            config file (default: .sonny.yaml in working directory)\n      --debug                    enable debug mode\n      --dev-insecure-transport   DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)\n      --endpoint string          mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)\n      --log-format string        log format: text|json (default \"text\")\n      --log-level string         log level: debug|info|warn|error (default \"warn\")\n  -m, --model string             model to use (overrides pack default)\n  -p, --provider string          LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations       suppress schema and legacy recipe-name deprecation warnings\n      --server-name string       SNI / cert-SAN match target (required when --client-cert is set)\n  -C, --workdir string           working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny mesh detach",
      "path": [
        "mesh",
        "detach"
      ],
      "summary": "Detach from a session",
      "usage": "  sonny mesh detach [session-id] [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for detach",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--keep-running",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "keep session running in background (default true)",
          "default_as_displayed": "true",
          "group": "Flags"
        },
        {
          "name": "--stop",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "pause session instead of backgrounding",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-ca",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "CA bundle file used to verify the server cert",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-cert",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS certificate file (PEM) for mTLS-protected mesh endpoints",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key-pin",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "PIN file for PKCS#11 client key (optional)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--dev-insecure-transport",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--endpoint",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--server-name",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "SNI / cert-SAN match target (required when --client-cert is set)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Detach from a specified session.\n\nBy default, the session continues running in the background.\nUse --stop to pause the session instead.\n\nExample:\n  # Detach and keep the session running\n  sonny mesh detach abc123\n\n  # Detach and pause the session\n  sonny mesh detach abc123 --stop\n\nUsage:\n  sonny mesh detach [session-id] [flags]\n\nFlags:\n  -h, --help           help for detach\n      --keep-running   keep session running in background (default true)\n      --stop           pause session instead of backgrounding\n\nGlobal Flags:\n      --analysis-json string     versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --client-ca string         CA bundle file used to verify the server cert\n      --client-cert string       client TLS certificate file (PEM) for mTLS-protected mesh endpoints\n      --client-key string        client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)\n      --client-key-pin string    PIN file for PKCS#11 client key (optional)\n      --config string            config file (default: .sonny.yaml in working directory)\n      --debug                    enable debug mode\n      --dev-insecure-transport   DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)\n      --endpoint string          mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)\n      --log-format string        log format: text|json (default \"text\")\n      --log-level string         log level: debug|info|warn|error (default \"warn\")\n  -m, --model string             model to use (overrides pack default)\n  -p, --provider string          LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations       suppress schema and legacy recipe-name deprecation warnings\n      --server-name string       SNI / cert-SAN match target (required when --client-cert is set)\n  -C, --workdir string           working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny mesh exec",
      "path": [
        "mesh",
        "exec"
      ],
      "summary": "Run a shell command on a remote mesh node via its A2A endpoint",
      "usage": "  sonny mesh exec <command...> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--allow-insecure-token",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "allow sending the --token-file token over plain http:// to a non-loopback node (isolated networks only)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for exec",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--node",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "mesh node name (must have a mesh.agents mapping)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--timeout",
          "shorthand": null,
          "type_as_displayed": "duration",
          "description": "command wall-clock timeout (default 1m0s)",
          "default_as_displayed": "1m0s",
          "group": "Flags"
        },
        {
          "name": "--token-file",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "file holding the bearer token the node's a2a serve --shell-mode --auth-token-file requires",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-ca",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "CA bundle file used to verify the server cert",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-cert",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS certificate file (PEM) for mTLS-protected mesh endpoints",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key-pin",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "PIN file for PKCS#11 client key (optional)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--dev-insecure-transport",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--endpoint",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--server-name",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "SNI / cert-SAN match target (required when --client-cert is set)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Dispatch a shell command to a remote mesh node and stream the\nresult back. The node must be running a sonny a2a serve --shell-mode\ninstance (authenticated with --auth-token-file; pass the same token with\n--token-file). The token is sent only over https:// or to a loopback\naddress (front the node with a TLS-terminating proxy or an SSH tunnel)\nunless --allow-insecure-token is given. The URL mapping comes from the mesh.agents block of your own\nconfig ($HOME/.sonny.yaml or --config; an untrusted workspace's .sonny.yaml\ncannot set it):\n\n  mesh:\n    agents:\n      lothiriel-mesh: \"https://lothiriel.example:18443\"\n\nExamples:\n  sonny mesh exec --node lothiriel-mesh --token-file ~/.config/sonny/a2a.token -- whoami\n  sonny mesh exec --node lothiriel-mesh -- \"ls -la /tmp\"\n\nUsage:\n  sonny mesh exec <command...> [flags]\n\nFlags:\n      --allow-insecure-token   allow sending the --token-file token over plain http:// to a non-loopback node (isolated networks only)\n  -h, --help                   help for exec\n      --node string            mesh node name (must have a mesh.agents mapping)\n      --timeout duration       command wall-clock timeout (default 1m0s)\n      --token-file string      file holding the bearer token the node's a2a serve --shell-mode --auth-token-file requires\n\nGlobal Flags:\n      --analysis-json string     versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --client-ca string         CA bundle file used to verify the server cert\n      --client-cert string       client TLS certificate file (PEM) for mTLS-protected mesh endpoints\n      --client-key string        client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)\n      --client-key-pin string    PIN file for PKCS#11 client key (optional)\n      --config string            config file (default: .sonny.yaml in working directory)\n      --debug                    enable debug mode\n      --dev-insecure-transport   DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)\n      --endpoint string          mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)\n      --log-format string        log format: text|json (default \"text\")\n      --log-level string         log level: debug|info|warn|error (default \"warn\")\n  -m, --model string             model to use (overrides pack default)\n  -p, --provider string          LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations       suppress schema and legacy recipe-name deprecation warnings\n      --server-name string       SNI / cert-SAN match target (required when --client-cert is set)\n  -C, --workdir string           working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny mesh host",
      "path": [
        "mesh",
        "host"
      ],
      "summary": "Bootstrap and manage SSH-reachable mesh hosts",
      "usage": "  sonny mesh host [command]",
      "aliases": [],
      "children": [
        {
          "name": "add",
          "summary": "Bootstrap a new SSH-reachable mesh host"
        },
        {
          "name": "list",
          "summary": "List SSH-managed mesh hosts"
        },
        {
          "name": "remove",
          "summary": "Revoke identity, stop the service and forget an SSH-managed host"
        },
        {
          "name": "status",
          "summary": "Show one SSH-managed mesh host's enrollment state"
        },
        {
          "name": "update",
          "summary": "Resume or upgrade an already-bootstrapped mesh host"
        }
      ],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for host",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-ca",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "CA bundle file used to verify the server cert",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-cert",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS certificate file (PEM) for mTLS-protected mesh endpoints",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key-pin",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "PIN file for PKCS#11 client key (optional)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--dev-insecure-transport",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--endpoint",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--server-name",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "SNI / cert-SAN match target (required when --client-cert is set)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Bootstrap, update, remove and inspect mesh hosts reached over SSH\n(mesh/sshboot): a host with no locally reachable mesh port yet, joined to the\nmesh by dialing it over SSH, installing sonny, issuing it a node identity and\ntunneling its gRPC and Synapse traffic back through the SSH connection.\n\nOn first contact with a host, its SSH host key is not yet pinned: the dial\nfails and reports the key's SHA256 fingerprint so it can be confirmed out of\nband (the host's own console, a provisioning record, etc.) before re-running\nthe command with --fingerprint to confirm and pin it.\n\nUsage:\n  sonny mesh host [command]\n\nAvailable Commands:\n  add         Bootstrap a new SSH-reachable mesh host\n  list        List SSH-managed mesh hosts\n  remove      Revoke identity, stop the service and forget an SSH-managed host\n  status      Show one SSH-managed mesh host's enrollment state\n  update      Resume or upgrade an already-bootstrapped mesh host\n\nFlags:\n  -h, --help   help for host\n\nGlobal Flags:\n      --analysis-json string     versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --client-ca string         CA bundle file used to verify the server cert\n      --client-cert string       client TLS certificate file (PEM) for mTLS-protected mesh endpoints\n      --client-key string        client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)\n      --client-key-pin string    PIN file for PKCS#11 client key (optional)\n      --config string            config file (default: .sonny.yaml in working directory)\n      --debug                    enable debug mode\n      --dev-insecure-transport   DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)\n      --endpoint string          mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)\n      --log-format string        log format: text|json (default \"text\")\n      --log-level string         log level: debug|info|warn|error (default \"warn\")\n  -m, --model string             model to use (overrides pack default)\n  -p, --provider string          LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations       suppress schema and legacy recipe-name deprecation warnings\n      --server-name string       SNI / cert-SAN match target (required when --client-cert is set)\n  -C, --workdir string           working directory (default \".\")\n\nUse \"sonny mesh host [command] --help\" for more information about a command.\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny mesh host add",
      "path": [
        "mesh",
        "host",
        "add"
      ],
      "summary": "Bootstrap a new SSH-reachable mesh host",
      "usage": "  sonny mesh host add [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--fingerprint",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "confirm the remote host key's SHA256 fingerprint (required on first contact with an unpinned host)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for add",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--host",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "host name and address to dial (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--key",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "path to the SSH private key",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--port",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "remote SSH port (default 22)",
          "default_as_displayed": "22",
          "group": "Flags"
        },
        {
          "name": "--prefix",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "remote install prefix (default /opt on POSIX, C:\\ProgramData on Windows)",
          "default_as_displayed": "/opt on POSIX, C:\\ProgramData on Windows",
          "group": "Flags"
        },
        {
          "name": "--user",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "remote SSH user",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-ca",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "CA bundle file used to verify the server cert",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-cert",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS certificate file (PEM) for mTLS-protected mesh endpoints",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key-pin",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "PIN file for PKCS#11 client key (optional)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--dev-insecure-transport",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--endpoint",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--server-name",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "SNI / cert-SAN match target (required when --client-cert is set)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Bootstrap a new SSH-reachable mesh host\n\nUsage:\n  sonny mesh host add [flags]\n\nFlags:\n      --fingerprint string   confirm the remote host key's SHA256 fingerprint (required on first contact with an unpinned host)\n  -h, --help                 help for add\n      --host string          host name and address to dial (required)\n      --key string           path to the SSH private key\n      --port int             remote SSH port (default 22)\n      --prefix string        remote install prefix (default /opt on POSIX, C:\\ProgramData on Windows)\n      --user string          remote SSH user\n\nGlobal Flags:\n      --analysis-json string     versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --client-ca string         CA bundle file used to verify the server cert\n      --client-cert string       client TLS certificate file (PEM) for mTLS-protected mesh endpoints\n      --client-key string        client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)\n      --client-key-pin string    PIN file for PKCS#11 client key (optional)\n      --config string            config file (default: .sonny.yaml in working directory)\n      --debug                    enable debug mode\n      --dev-insecure-transport   DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)\n      --endpoint string          mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)\n      --log-format string        log format: text|json (default \"text\")\n      --log-level string         log level: debug|info|warn|error (default \"warn\")\n  -m, --model string             model to use (overrides pack default)\n  -p, --provider string          LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations       suppress schema and legacy recipe-name deprecation warnings\n      --server-name string       SNI / cert-SAN match target (required when --client-cert is set)\n  -C, --workdir string           working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny mesh host list",
      "path": [
        "mesh",
        "host",
        "list"
      ],
      "summary": "List SSH-managed mesh hosts",
      "usage": "  sonny mesh host list [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for list",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-ca",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "CA bundle file used to verify the server cert",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-cert",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS certificate file (PEM) for mTLS-protected mesh endpoints",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key-pin",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "PIN file for PKCS#11 client key (optional)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--dev-insecure-transport",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--endpoint",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--server-name",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "SNI / cert-SAN match target (required when --client-cert is set)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "List SSH-managed mesh hosts\n\nUsage:\n  sonny mesh host list [flags]\n\nFlags:\n  -h, --help   help for list\n\nGlobal Flags:\n      --analysis-json string     versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --client-ca string         CA bundle file used to verify the server cert\n      --client-cert string       client TLS certificate file (PEM) for mTLS-protected mesh endpoints\n      --client-key string        client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)\n      --client-key-pin string    PIN file for PKCS#11 client key (optional)\n      --config string            config file (default: .sonny.yaml in working directory)\n      --debug                    enable debug mode\n      --dev-insecure-transport   DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)\n      --endpoint string          mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)\n      --log-format string        log format: text|json (default \"text\")\n      --log-level string         log level: debug|info|warn|error (default \"warn\")\n  -m, --model string             model to use (overrides pack default)\n  -p, --provider string          LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations       suppress schema and legacy recipe-name deprecation warnings\n      --server-name string       SNI / cert-SAN match target (required when --client-cert is set)\n  -C, --workdir string           working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny mesh host remove",
      "path": [
        "mesh",
        "host",
        "remove"
      ],
      "summary": "Revoke identity, stop the service and forget an SSH-managed host",
      "usage": "  sonny mesh host remove [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--fingerprint",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "confirm the remote host key's SHA256 fingerprint (required on first contact with an unpinned host)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for remove",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--host",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "host name and address to dial (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--key",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "path to the SSH private key",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--port",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "remote SSH port (default 22)",
          "default_as_displayed": "22",
          "group": "Flags"
        },
        {
          "name": "--prefix",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "remote install prefix (default /opt on POSIX, C:\\ProgramData on Windows)",
          "default_as_displayed": "/opt on POSIX, C:\\ProgramData on Windows",
          "group": "Flags"
        },
        {
          "name": "--purge",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "also delete the installed binary",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--user",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "remote SSH user",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-ca",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "CA bundle file used to verify the server cert",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-cert",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS certificate file (PEM) for mTLS-protected mesh endpoints",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key-pin",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "PIN file for PKCS#11 client key (optional)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--dev-insecure-transport",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--endpoint",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--server-name",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "SNI / cert-SAN match target (required when --client-cert is set)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Revoke identity, stop the service and forget an SSH-managed host\n\nUsage:\n  sonny mesh host remove [flags]\n\nFlags:\n      --fingerprint string   confirm the remote host key's SHA256 fingerprint (required on first contact with an unpinned host)\n  -h, --help                 help for remove\n      --host string          host name and address to dial (required)\n      --key string           path to the SSH private key\n      --port int             remote SSH port (default 22)\n      --prefix string        remote install prefix (default /opt on POSIX, C:\\ProgramData on Windows)\n      --purge                also delete the installed binary\n      --user string          remote SSH user\n\nGlobal Flags:\n      --analysis-json string     versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --client-ca string         CA bundle file used to verify the server cert\n      --client-cert string       client TLS certificate file (PEM) for mTLS-protected mesh endpoints\n      --client-key string        client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)\n      --client-key-pin string    PIN file for PKCS#11 client key (optional)\n      --config string            config file (default: .sonny.yaml in working directory)\n      --debug                    enable debug mode\n      --dev-insecure-transport   DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)\n      --endpoint string          mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)\n      --log-format string        log format: text|json (default \"text\")\n      --log-level string         log level: debug|info|warn|error (default \"warn\")\n  -m, --model string             model to use (overrides pack default)\n  -p, --provider string          LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations       suppress schema and legacy recipe-name deprecation warnings\n      --server-name string       SNI / cert-SAN match target (required when --client-cert is set)\n  -C, --workdir string           working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny mesh host status",
      "path": [
        "mesh",
        "host",
        "status"
      ],
      "summary": "Show one SSH-managed mesh host's enrollment state",
      "usage": "  sonny mesh host status [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for status",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--host",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "host name (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-ca",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "CA bundle file used to verify the server cert",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-cert",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS certificate file (PEM) for mTLS-protected mesh endpoints",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key-pin",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "PIN file for PKCS#11 client key (optional)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--dev-insecure-transport",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--endpoint",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--server-name",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "SNI / cert-SAN match target (required when --client-cert is set)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Show one SSH-managed mesh host's enrollment state\n\nUsage:\n  sonny mesh host status [flags]\n\nFlags:\n  -h, --help          help for status\n      --host string   host name (required)\n\nGlobal Flags:\n      --analysis-json string     versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --client-ca string         CA bundle file used to verify the server cert\n      --client-cert string       client TLS certificate file (PEM) for mTLS-protected mesh endpoints\n      --client-key string        client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)\n      --client-key-pin string    PIN file for PKCS#11 client key (optional)\n      --config string            config file (default: .sonny.yaml in working directory)\n      --debug                    enable debug mode\n      --dev-insecure-transport   DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)\n      --endpoint string          mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)\n      --log-format string        log format: text|json (default \"text\")\n      --log-level string         log level: debug|info|warn|error (default \"warn\")\n  -m, --model string             model to use (overrides pack default)\n  -p, --provider string          LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations       suppress schema and legacy recipe-name deprecation warnings\n      --server-name string       SNI / cert-SAN match target (required when --client-cert is set)\n  -C, --workdir string           working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny mesh host update",
      "path": [
        "mesh",
        "host",
        "update"
      ],
      "summary": "Resume or upgrade an already-bootstrapped mesh host",
      "usage": "  sonny mesh host update [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--fingerprint",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "confirm the remote host key's SHA256 fingerprint (required on first contact with an unpinned host)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for update",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--host",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "host name and address to dial (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--key",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "path to the SSH private key",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--port",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "remote SSH port (default 22)",
          "default_as_displayed": "22",
          "group": "Flags"
        },
        {
          "name": "--prefix",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "remote install prefix (default /opt on POSIX, C:\\ProgramData on Windows)",
          "default_as_displayed": "/opt on POSIX, C:\\ProgramData on Windows",
          "group": "Flags"
        },
        {
          "name": "--user",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "remote SSH user",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-ca",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "CA bundle file used to verify the server cert",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-cert",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS certificate file (PEM) for mTLS-protected mesh endpoints",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key-pin",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "PIN file for PKCS#11 client key (optional)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--dev-insecure-transport",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--endpoint",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--server-name",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "SNI / cert-SAN match target (required when --client-cert is set)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Resume or upgrade an already-bootstrapped mesh host\n\nUsage:\n  sonny mesh host update [flags]\n\nFlags:\n      --fingerprint string   confirm the remote host key's SHA256 fingerprint (required on first contact with an unpinned host)\n  -h, --help                 help for update\n      --host string          host name and address to dial (required)\n      --key string           path to the SSH private key\n      --port int             remote SSH port (default 22)\n      --prefix string        remote install prefix (default /opt on POSIX, C:\\ProgramData on Windows)\n      --user string          remote SSH user\n\nGlobal Flags:\n      --analysis-json string     versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --client-ca string         CA bundle file used to verify the server cert\n      --client-cert string       client TLS certificate file (PEM) for mTLS-protected mesh endpoints\n      --client-key string        client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)\n      --client-key-pin string    PIN file for PKCS#11 client key (optional)\n      --config string            config file (default: .sonny.yaml in working directory)\n      --debug                    enable debug mode\n      --dev-insecure-transport   DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)\n      --endpoint string          mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)\n      --log-format string        log format: text|json (default \"text\")\n      --log-level string         log level: debug|info|warn|error (default \"warn\")\n  -m, --model string             model to use (overrides pack default)\n  -p, --provider string          LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations       suppress schema and legacy recipe-name deprecation warnings\n      --server-name string       SNI / cert-SAN match target (required when --client-cert is set)\n  -C, --workdir string           working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny mesh human-key",
      "path": [
        "mesh",
        "human-key"
      ],
      "summary": "Manage the keys that let a device attach to mesh sessions as their human",
      "usage": "  sonny mesh human-key [command]",
      "aliases": [],
      "children": [
        {
          "name": "create",
          "summary": "Create (or show) this device's mesh human-attach key and print its public key line"
        },
        {
          "name": "enroll",
          "summary": "Enrol a device key on this node for one user mesh identity (operator only)"
        },
        {
          "name": "list",
          "summary": "List this node's enrolled human-attach keys"
        },
        {
          "name": "revoke",
          "summary": "Revoke an enrolled human-attach key on this node (applies at once, including to streams already attached)"
        }
      ],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for human-key",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-ca",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "CA bundle file used to verify the server cert",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-cert",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS certificate file (PEM) for mTLS-protected mesh endpoints",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key-pin",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "PIN file for PKCS#11 client key (optional)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--dev-insecure-transport",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--endpoint",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--server-name",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "SNI / cert-SAN match target (required when --client-cert is set)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "A mesh remote tab acts as the session's human (relayed /plan approve, proceed, revise, pause, resume, cancel) only when it attaches directly to the owning node and signs the stream with a device key the owning node enrolled for the person's mesh identity. Run `create` on the device, then `enroll` on the owning node.\n\nUsage:\n  sonny mesh human-key [command]\n\nAvailable Commands:\n  create      Create (or show) this device's mesh human-attach key and print its public key line\n  enroll      Enrol a device key on this node for one user mesh identity (operator only)\n  list        List this node's enrolled human-attach keys\n  revoke      Revoke an enrolled human-attach key on this node (applies at once, including to streams already attached)\n\nFlags:\n  -h, --help   help for human-key\n\nGlobal Flags:\n      --analysis-json string     versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --client-ca string         CA bundle file used to verify the server cert\n      --client-cert string       client TLS certificate file (PEM) for mTLS-protected mesh endpoints\n      --client-key string        client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)\n      --client-key-pin string    PIN file for PKCS#11 client key (optional)\n      --config string            config file (default: .sonny.yaml in working directory)\n      --debug                    enable debug mode\n      --dev-insecure-transport   DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)\n      --endpoint string          mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)\n      --log-format string        log format: text|json (default \"text\")\n      --log-level string         log level: debug|info|warn|error (default \"warn\")\n  -m, --model string             model to use (overrides pack default)\n  -p, --provider string          LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations       suppress schema and legacy recipe-name deprecation warnings\n      --server-name string       SNI / cert-SAN match target (required when --client-cert is set)\n  -C, --workdir string           working directory (default \".\")\n\nUse \"sonny mesh human-key [command] --help\" for more information about a command.\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny mesh human-key create",
      "path": [
        "mesh",
        "human-key",
        "create"
      ],
      "summary": "Create (or show) this device's mesh human-attach key and print its public key line",
      "usage": "  sonny mesh human-key create [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for create",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-ca",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "CA bundle file used to verify the server cert",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-cert",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS certificate file (PEM) for mTLS-protected mesh endpoints",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key-pin",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "PIN file for PKCS#11 client key (optional)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--dev-insecure-transport",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--endpoint",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--server-name",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "SNI / cert-SAN match target (required when --client-cert is set)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Create (or show) this device's mesh human-attach key and print its public key line\n\nUsage:\n  sonny mesh human-key create [flags]\n\nFlags:\n  -h, --help   help for create\n\nGlobal Flags:\n      --analysis-json string     versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --client-ca string         CA bundle file used to verify the server cert\n      --client-cert string       client TLS certificate file (PEM) for mTLS-protected mesh endpoints\n      --client-key string        client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)\n      --client-key-pin string    PIN file for PKCS#11 client key (optional)\n      --config string            config file (default: .sonny.yaml in working directory)\n      --debug                    enable debug mode\n      --dev-insecure-transport   DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)\n      --endpoint string          mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)\n      --log-format string        log format: text|json (default \"text\")\n      --log-level string         log level: debug|info|warn|error (default \"warn\")\n  -m, --model string             model to use (overrides pack default)\n  -p, --provider string          LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations       suppress schema and legacy recipe-name deprecation warnings\n      --server-name string       SNI / cert-SAN match target (required when --client-cert is set)\n  -C, --workdir string           working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny mesh human-key enroll",
      "path": [
        "mesh",
        "human-key",
        "enroll"
      ],
      "summary": "Enrol a device key on this node for one user mesh identity (operator only)",
      "usage": "  sonny mesh human-key enroll --subject <user SPIFFE ID> '<public key line>' [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for enroll",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--subject",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "the person's mesh user SPIFFE ID (spiffe://<domain>/tenant/<tenant>/user/<name>)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--ttl",
          "shorthand": null,
          "type_as_displayed": "duration",
          "description": "how long the enrolment lasts (at most 8760h) (default 2160h0m0s)",
          "default_as_displayed": "2160h0m0s",
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-ca",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "CA bundle file used to verify the server cert",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-cert",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS certificate file (PEM) for mTLS-protected mesh endpoints",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key-pin",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "PIN file for PKCS#11 client key (optional)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--dev-insecure-transport",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--endpoint",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--server-name",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "SNI / cert-SAN match target (required when --client-cert is set)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Enrol a device key on this node for one user mesh identity (operator only)\n\nUsage:\n  sonny mesh human-key enroll --subject <user SPIFFE ID> '<public key line>' [flags]\n\nFlags:\n  -h, --help             help for enroll\n      --subject string   the person's mesh user SPIFFE ID (spiffe://<domain>/tenant/<tenant>/user/<name>)\n      --ttl duration     how long the enrolment lasts (at most 8760h) (default 2160h0m0s)\n\nGlobal Flags:\n      --analysis-json string     versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --client-ca string         CA bundle file used to verify the server cert\n      --client-cert string       client TLS certificate file (PEM) for mTLS-protected mesh endpoints\n      --client-key string        client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)\n      --client-key-pin string    PIN file for PKCS#11 client key (optional)\n      --config string            config file (default: .sonny.yaml in working directory)\n      --debug                    enable debug mode\n      --dev-insecure-transport   DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)\n      --endpoint string          mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)\n      --log-format string        log format: text|json (default \"text\")\n      --log-level string         log level: debug|info|warn|error (default \"warn\")\n  -m, --model string             model to use (overrides pack default)\n  -p, --provider string          LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations       suppress schema and legacy recipe-name deprecation warnings\n      --server-name string       SNI / cert-SAN match target (required when --client-cert is set)\n  -C, --workdir string           working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny mesh human-key list",
      "path": [
        "mesh",
        "human-key",
        "list"
      ],
      "summary": "List this node's enrolled human-attach keys",
      "usage": "  sonny mesh human-key list [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for list",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-ca",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "CA bundle file used to verify the server cert",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-cert",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS certificate file (PEM) for mTLS-protected mesh endpoints",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key-pin",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "PIN file for PKCS#11 client key (optional)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--dev-insecure-transport",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--endpoint",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--server-name",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "SNI / cert-SAN match target (required when --client-cert is set)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "List this node's enrolled human-attach keys\n\nUsage:\n  sonny mesh human-key list [flags]\n\nFlags:\n  -h, --help   help for list\n\nGlobal Flags:\n      --analysis-json string     versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --client-ca string         CA bundle file used to verify the server cert\n      --client-cert string       client TLS certificate file (PEM) for mTLS-protected mesh endpoints\n      --client-key string        client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)\n      --client-key-pin string    PIN file for PKCS#11 client key (optional)\n      --config string            config file (default: .sonny.yaml in working directory)\n      --debug                    enable debug mode\n      --dev-insecure-transport   DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)\n      --endpoint string          mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)\n      --log-format string        log format: text|json (default \"text\")\n      --log-level string         log level: debug|info|warn|error (default \"warn\")\n  -m, --model string             model to use (overrides pack default)\n  -p, --provider string          LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations       suppress schema and legacy recipe-name deprecation warnings\n      --server-name string       SNI / cert-SAN match target (required when --client-cert is set)\n  -C, --workdir string           working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny mesh human-key revoke",
      "path": [
        "mesh",
        "human-key",
        "revoke"
      ],
      "summary": "Revoke an enrolled human-attach key on this node (applies at once, including to streams already attached)",
      "usage": "  sonny mesh human-key revoke [--] <key id> | revoke --key-id=<key id> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for revoke",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--key-id",
          "shorthand": null,
          "type_as_displayed": "--",
          "description": "the key id to revoke (use this or -- when the id begins with '-')",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-ca",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "CA bundle file used to verify the server cert",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-cert",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS certificate file (PEM) for mTLS-protected mesh endpoints",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key-pin",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "PIN file for PKCS#11 client key (optional)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--dev-insecure-transport",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--endpoint",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--server-name",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "SNI / cert-SAN match target (required when --client-cert is set)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Revoke an enrolled human-attach key on this node (applies at once, including to streams already attached).\n\nA key id is unpadded base64url, so it can begin with '-'. Pass such an id after `--` (sonny mesh human-key revoke -- <key id>) or as --key-id=<key id>, so it is not read as a flag.\n\nUsage:\n  sonny mesh human-key revoke [--] <key id> | revoke --key-id=<key id> [flags]\n\nFlags:\n  -h, --help        help for revoke\n      --key-id --   the key id to revoke (use this or -- when the id begins with '-')\n\nGlobal Flags:\n      --analysis-json string     versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --client-ca string         CA bundle file used to verify the server cert\n      --client-cert string       client TLS certificate file (PEM) for mTLS-protected mesh endpoints\n      --client-key string        client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)\n      --client-key-pin string    PIN file for PKCS#11 client key (optional)\n      --config string            config file (default: .sonny.yaml in working directory)\n      --debug                    enable debug mode\n      --dev-insecure-transport   DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)\n      --endpoint string          mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)\n      --log-format string        log format: text|json (default \"text\")\n      --log-level string         log level: debug|info|warn|error (default \"warn\")\n  -m, --model string             model to use (overrides pack default)\n  -p, --provider string          LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations       suppress schema and legacy recipe-name deprecation warnings\n      --server-name string       SNI / cert-SAN match target (required when --client-cert is set)\n  -C, --workdir string           working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny mesh identity",
      "path": [
        "mesh",
        "identity"
      ],
      "summary": "Provision and inspect mesh node identity material",
      "usage": "  sonny mesh identity [command]",
      "aliases": [],
      "children": [
        {
          "name": "provision",
          "summary": "Write a mesh CA, a per-node SVID, and a default node-role authz.yaml"
        }
      ],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for identity",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-ca",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "CA bundle file used to verify the server cert",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-cert",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS certificate file (PEM) for mTLS-protected mesh endpoints",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key-pin",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "PIN file for PKCS#11 client key (optional)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--dev-insecure-transport",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--endpoint",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--server-name",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "SNI / cert-SAN match target (required when --client-cert is set)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Manage the mTLS identity and RBAC policy a mesh node presents.\n\nProvisioning is an explicit operator step; it is never run automatically by a\nnode at startup. A node with no provisioned identity still fails closed: it\nrefuses a non-loopback bind and denies every RPC.\n\nUsage:\n  sonny mesh identity [command]\n\nAvailable Commands:\n  provision   Write a mesh CA, a per-node SVID, and a default node-role authz.yaml\n\nFlags:\n  -h, --help   help for identity\n\nGlobal Flags:\n      --analysis-json string     versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --client-ca string         CA bundle file used to verify the server cert\n      --client-cert string       client TLS certificate file (PEM) for mTLS-protected mesh endpoints\n      --client-key string        client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)\n      --client-key-pin string    PIN file for PKCS#11 client key (optional)\n      --config string            config file (default: .sonny.yaml in working directory)\n      --debug                    enable debug mode\n      --dev-insecure-transport   DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)\n      --endpoint string          mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)\n      --log-format string        log format: text|json (default \"text\")\n      --log-level string         log level: debug|info|warn|error (default \"warn\")\n  -m, --model string             model to use (overrides pack default)\n  -p, --provider string          LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations       suppress schema and legacy recipe-name deprecation warnings\n      --server-name string       SNI / cert-SAN match target (required when --client-cert is set)\n  -C, --workdir string           working directory (default \".\")\n\nUse \"sonny mesh identity [command] --help\" for more information about a command.\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny mesh identity provision",
      "path": [
        "mesh",
        "identity",
        "provision"
      ],
      "summary": "Write a mesh CA, a per-node SVID, and a default node-role authz.yaml",
      "usage": "  sonny mesh identity provision [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--dir",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "directory to write identity material into (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for provision",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--node",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "node name for the SVID (spiffe://<trust-domain>/node/<node>) (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--trust-domain",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "SPIFFE trust domain for the CA and node SVID (default \"mesh.local\")",
          "default_as_displayed": "\"mesh.local\"",
          "group": "Flags"
        },
        {
          "name": "--ttl",
          "shorthand": null,
          "type_as_displayed": "duration",
          "description": "validity of the issued node SVID (default 8760h0m0s)",
          "default_as_displayed": "8760h0m0s",
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-ca",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "CA bundle file used to verify the server cert",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-cert",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS certificate file (PEM) for mTLS-protected mesh endpoints",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key-pin",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "PIN file for PKCS#11 client key (optional)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--dev-insecure-transport",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--endpoint",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--server-name",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "SNI / cert-SAN match target (required when --client-cert is set)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Provision the mTLS identity and RBAC policy for one mesh node.\n\nWrites, under --dir: the mesh CA (ca.crt + ca.key, reused if already present so\nsuccessive nodes chain to a common trust root), a per-node SVID (node.crt +\nnode.key) for spiffe://<trust-domain>/node/<node>, and a default node-role\nauthz.yaml (only when absent \u2014 an existing operator policy is never\noverwritten). The default policy grants the built-in node role the mesh RPCs and\nnothing else, so a configured node is fail-closed-but-usable.\n\nGuarding the CA private key (ca.key) is the operator's decision; it is written\n0600 so the CA can issue further node leaves.\n\nExample:\n  sonny mesh identity provision --dir /etc/sonny/mesh --trust-domain mesh.local --node node-a\n\nUsage:\n  sonny mesh identity provision [flags]\n\nFlags:\n      --dir string            directory to write identity material into (required)\n  -h, --help                  help for provision\n      --node string           node name for the SVID (spiffe://<trust-domain>/node/<node>) (required)\n      --trust-domain string   SPIFFE trust domain for the CA and node SVID (default \"mesh.local\")\n      --ttl duration          validity of the issued node SVID (default 8760h0m0s)\n\nGlobal Flags:\n      --analysis-json string     versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --client-ca string         CA bundle file used to verify the server cert\n      --client-cert string       client TLS certificate file (PEM) for mTLS-protected mesh endpoints\n      --client-key string        client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)\n      --client-key-pin string    PIN file for PKCS#11 client key (optional)\n      --config string            config file (default: .sonny.yaml in working directory)\n      --debug                    enable debug mode\n      --dev-insecure-transport   DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)\n      --endpoint string          mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)\n      --log-format string        log format: text|json (default \"text\")\n      --log-level string         log level: debug|info|warn|error (default \"warn\")\n  -m, --model string             model to use (overrides pack default)\n  -p, --provider string          LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations       suppress schema and legacy recipe-name deprecation warnings\n      --server-name string       SNI / cert-SAN match target (required when --client-cert is set)\n  -C, --workdir string           working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny mesh list",
      "path": [
        "mesh",
        "list"
      ],
      "summary": "List nodes and sessions",
      "usage": "  sonny mesh list [flags]",
      "aliases": [
        "list",
        "ls"
      ],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for list",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-ca",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "CA bundle file used to verify the server cert",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-cert",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS certificate file (PEM) for mTLS-protected mesh endpoints",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key-pin",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "PIN file for PKCS#11 client key (optional)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--dev-insecure-transport",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--endpoint",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--server-name",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "SNI / cert-SAN match target (required when --client-cert is set)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "List nodes and sessions\n\nUsage:\n  sonny mesh list [flags]\n\nAliases:\n  list, ls\n\nFlags:\n  -h, --help   help for list\n\nGlobal Flags:\n      --analysis-json string     versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --client-ca string         CA bundle file used to verify the server cert\n      --client-cert string       client TLS certificate file (PEM) for mTLS-protected mesh endpoints\n      --client-key string        client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)\n      --client-key-pin string    PIN file for PKCS#11 client key (optional)\n      --config string            config file (default: .sonny.yaml in working directory)\n      --debug                    enable debug mode\n      --dev-insecure-transport   DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)\n      --endpoint string          mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)\n      --log-format string        log format: text|json (default \"text\")\n      --log-level string         log level: debug|info|warn|error (default \"warn\")\n  -m, --model string             model to use (overrides pack default)\n  -p, --provider string          LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations       suppress schema and legacy recipe-name deprecation warnings\n      --server-name string       SNI / cert-SAN match target (required when --client-cert is set)\n  -C, --workdir string           working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny mesh managed",
      "path": [
        "mesh",
        "managed"
      ],
      "summary": "Provision and verify managed-worker authority for mesh serve",
      "usage": "  sonny mesh managed [command]",
      "aliases": [],
      "children": [
        {
          "name": "enroll-node",
          "summary": "Create a node's grant signing key and trust it"
        },
        {
          "name": "init",
          "summary": "Create or import the policy signing key"
        },
        {
          "name": "manifest",
          "summary": "Write the managed-worker deployment manifest"
        },
        {
          "name": "seed",
          "summary": "Create or migrate control.db and seed each tenant's authority"
        },
        {
          "name": "sign-policy",
          "summary": "Sign or re-sign a tenant policy"
        },
        {
          "name": "verify",
          "summary": "Run mesh serve's managed-worker startup validation without serving"
        }
      ],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for managed",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-ca",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "CA bundle file used to verify the server cert",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-cert",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS certificate file (PEM) for mTLS-protected mesh endpoints",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key-pin",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "PIN file for PKCS#11 client key (optional)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--dev-insecure-transport",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--endpoint",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--server-name",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "SNI / cert-SAN match target (required when --client-cert is set)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Provision the managed-worker authority a production 'sonny mesh serve' needs\nbefore it starts, and verify a provisioned node.\n\nA managed worker starts only with a private deployment manifest\n(--managed-manifest) naming its control database, a public verification\nkeyring, one signed policy per tenant, a grant signing keyring and the\nsponsorship each tenant's grants cite. These commands write each of them:\n\n  init         create (or import) the policy signing key, once per fleet\n  enroll-node  create a node's grant signing key and trust it\n  sign-policy  sign or re-sign a tenant policy before it expires\n  seed         create or migrate control.db: freeze epoch, sponsorship, plan\n  manifest     write the managed-worker deployment manifest\n  verify       run mesh serve's startup validation without serving\n\nEvery command is idempotent and ends with \"changed: yes\" or \"changed: no\".\nNo command replaces an existing key unless --force is passed, and none\nprints key material. Run seed, manifest and verify as the daemon user, so\nthe files they create are owned by it.\n\nUsage:\n  sonny mesh managed [command]\n\nAvailable Commands:\n  enroll-node Create a node's grant signing key and trust it\n  init        Create or import the policy signing key\n  manifest    Write the managed-worker deployment manifest\n  seed        Create or migrate control.db and seed each tenant's authority\n  sign-policy Sign or re-sign a tenant policy\n  verify      Run mesh serve's managed-worker startup validation without serving\n\nFlags:\n  -h, --help   help for managed\n\nGlobal Flags:\n      --analysis-json string     versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --client-ca string         CA bundle file used to verify the server cert\n      --client-cert string       client TLS certificate file (PEM) for mTLS-protected mesh endpoints\n      --client-key string        client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)\n      --client-key-pin string    PIN file for PKCS#11 client key (optional)\n      --config string            config file (default: .sonny.yaml in working directory)\n      --debug                    enable debug mode\n      --dev-insecure-transport   DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)\n      --endpoint string          mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)\n      --log-format string        log format: text|json (default \"text\")\n      --log-level string         log level: debug|info|warn|error (default \"warn\")\n  -m, --model string             model to use (overrides pack default)\n  -p, --provider string          LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations       suppress schema and legacy recipe-name deprecation warnings\n      --server-name string       SNI / cert-SAN match target (required when --client-cert is set)\n  -C, --workdir string           working directory (default \".\")\n\nUse \"sonny mesh managed [command] --help\" for more information about a command.\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny mesh managed enroll-node",
      "path": [
        "mesh",
        "managed",
        "enroll-node"
      ],
      "summary": "Create a node's grant signing key and trust it",
      "usage": "  sonny mesh managed enroll-node <node> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--force",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "rotate: replace an existing grant key and keyring with a new key",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--grant-key",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "raw Ed25519 grant private key, created when absent (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--grant-keyring",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "grant keyring document the manifest names (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for enroll-node",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--key-ttl",
          "shorthand": null,
          "type_as_displayed": "duration",
          "description": "validity of a newly written key (default 8760h0m0s)",
          "default_as_displayed": "8760h0m0s",
          "group": "Flags"
        },
        {
          "name": "--trust",
          "shorthand": null,
          "type_as_displayed": "stringArray",
          "description": "verification keyring whose entries the node also trusts (repeatable)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--verification-keys",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "the node's public verification keyring (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-ca",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "CA bundle file used to verify the server cert",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-cert",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS certificate file (PEM) for mTLS-protected mesh endpoints",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key-pin",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "PIN file for PKCS#11 client key (optional)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--dev-insecure-transport",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--endpoint",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--server-name",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "SNI / cert-SAN match target (required when --client-cert is set)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Create the node's grant signing key and add its public key to the node's\nverification keyring.\n\nEach node issues the grant for every managed tool call with its own key. The\nraw 64-byte Ed25519 key is written to --grant-key (0600) and never leaves the\nnode; --grant-keyring is the keyring document the manifest names as\ngrant_issuance.signing_keys. Its public key is added to --verification-keys,\ntogether with every entry of each --trust keyring (normally the policy\nverification keys written by init). An existing key is reused; --force\nrotates it. A trusted id that already names a different key is refused.\n\nExample:\n  sonny mesh managed enroll-node node-a \\\n    --grant-key /var/lib/sonny/authority/grant.key \\\n    --grant-keyring /etc/sonny/authority/grant-keyring.json \\\n    --verification-keys /etc/sonny/authority/verification-keys.json \\\n    --trust /etc/sonny/authority/policy-verification-keys.json\n\nUsage:\n  sonny mesh managed enroll-node <node> [flags]\n\nFlags:\n      --force                      rotate: replace an existing grant key and keyring with a new key\n      --grant-key string           raw Ed25519 grant private key, created when absent (required)\n      --grant-keyring string       grant keyring document the manifest names (required)\n  -h, --help                       help for enroll-node\n      --key-ttl duration           validity of a newly written key (default 8760h0m0s)\n      --trust stringArray          verification keyring whose entries the node also trusts (repeatable)\n      --verification-keys string   the node's public verification keyring (required)\n\nGlobal Flags:\n      --analysis-json string     versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --client-ca string         CA bundle file used to verify the server cert\n      --client-cert string       client TLS certificate file (PEM) for mTLS-protected mesh endpoints\n      --client-key string        client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)\n      --client-key-pin string    PIN file for PKCS#11 client key (optional)\n      --config string            config file (default: .sonny.yaml in working directory)\n      --debug                    enable debug mode\n      --dev-insecure-transport   DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)\n      --endpoint string          mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)\n      --log-format string        log format: text|json (default \"text\")\n      --log-level string         log level: debug|info|warn|error (default \"warn\")\n  -m, --model string             model to use (overrides pack default)\n  -p, --provider string          LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations       suppress schema and legacy recipe-name deprecation warnings\n      --server-name string       SNI / cert-SAN match target (required when --client-cert is set)\n  -C, --workdir string           working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny mesh managed init",
      "path": [
        "mesh",
        "managed",
        "init"
      ],
      "summary": "Create or import the policy signing key",
      "usage": "  sonny mesh managed init [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--force",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "rotate: replace an existing key and keyring with a new key",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for init",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--key-ttl",
          "shorthand": null,
          "type_as_displayed": "duration",
          "description": "validity of a newly written key (default 8760h0m0s)",
          "default_as_displayed": "8760h0m0s",
          "group": "Flags"
        },
        {
          "name": "--policy-key",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "raw Ed25519 policy private key, created when absent (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--policy-keyring",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "keyring document naming the policy key (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--verification-keys",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "public verification keyring to add the policy key to (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-ca",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "CA bundle file used to verify the server cert",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-cert",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS certificate file (PEM) for mTLS-protected mesh endpoints",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key-pin",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "PIN file for PKCS#11 client key (optional)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--dev-insecure-transport",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--endpoint",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--server-name",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "SNI / cert-SAN match target (required when --client-cert is set)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Create the fleet's tenant-policy signing key, or import an existing one.\n\nWhen --policy-key is absent a new Ed25519 key is generated and written there\n(0600, raw 64 bytes). When it exists it is imported as-is: copy the key from\nyour secret store (for example Vault) to --policy-key first. The command then\nwrites a keyring document naming the key (--policy-keyring) and adds the\npublic key to --verification-keys, which enroll-node merges into each node's\nverification keyring with --trust.\n\nAn existing keyring that names another key is refused. --force rotates: it\ngenerates a new key, replaces the private key file and the keyring, and keeps\nthe old public key in --verification-keys. The private key is never printed.\n\nExample:\n  sonny mesh managed init \\\n    --policy-key /secure/sonny/policy.key \\\n    --policy-keyring /secure/sonny/policy-keyring.json \\\n    --verification-keys /secure/sonny/policy-verification-keys.json\n\nUsage:\n  sonny mesh managed init [flags]\n\nFlags:\n      --force                      rotate: replace an existing key and keyring with a new key\n  -h, --help                       help for init\n      --key-ttl duration           validity of a newly written key (default 8760h0m0s)\n      --policy-key string          raw Ed25519 policy private key, created when absent (required)\n      --policy-keyring string      keyring document naming the policy key (required)\n      --verification-keys string   public verification keyring to add the policy key to (required)\n\nGlobal Flags:\n      --analysis-json string     versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --client-ca string         CA bundle file used to verify the server cert\n      --client-cert string       client TLS certificate file (PEM) for mTLS-protected mesh endpoints\n      --client-key string        client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)\n      --client-key-pin string    PIN file for PKCS#11 client key (optional)\n      --config string            config file (default: .sonny.yaml in working directory)\n      --debug                    enable debug mode\n      --dev-insecure-transport   DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)\n      --endpoint string          mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)\n      --log-format string        log format: text|json (default \"text\")\n      --log-level string         log level: debug|info|warn|error (default \"warn\")\n  -m, --model string             model to use (overrides pack default)\n  -p, --provider string          LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations       suppress schema and legacy recipe-name deprecation warnings\n      --server-name string       SNI / cert-SAN match target (required when --client-cert is set)\n  -C, --workdir string           working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny mesh managed manifest",
      "path": [
        "mesh",
        "managed",
        "manifest"
      ],
      "summary": "Write the managed-worker deployment manifest",
      "usage": "  sonny mesh managed manifest [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--agent-messaging",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "set agent_messaging: native hosted parent messaging",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--agent-peer-relationships",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "set agent_peer_relationships: cross-node peer relationships (requires --agent-messaging)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--control-db",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "control database; pass mesh serve the same --control-db (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--grant-keyring",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "the node's grant keyring from enroll-node (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for manifest",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--out",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "manifest file to write (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--policy",
          "shorthand": null,
          "type_as_displayed": "stringArray",
          "description": "signed tenant policy (repeatable, required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--sponsor",
          "shorthand": null,
          "type_as_displayed": "stringArray",
          "description": "tenant=sponsor-id overriding the seeded sponsorship (repeatable)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--verification-keys",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "the node's verification keyring (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-ca",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "CA bundle file used to verify the server cert",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-cert",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS certificate file (PEM) for mTLS-protected mesh endpoints",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key-pin",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "PIN file for PKCS#11 client key (optional)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--dev-insecure-transport",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--endpoint",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--server-name",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "SNI / cert-SAN match target (required when --client-cert is set)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Write the private deployment manifest mesh serve reads from\n--managed-manifest (schema sonny.mesh.serve.managed/v1).\n\nEach tenant's sponsorship is the one seed provisions for its current policy,\nunless --sponsor tenant=id names another. Policies are verified against\n--verification-keys first, so an expired policy is refused here rather than\nat startup. A manifest that already has this content is left untouched.\n\nExample:\n  sonny mesh managed manifest --out /etc/sonny/mesh/managed-worker.json \\\n    --control-db /var/lib/sonny/control.db \\\n    --verification-keys /etc/sonny/authority/verification-keys.json \\\n    --policy /etc/sonny/authority/policies/acme.json \\\n    --grant-keyring /etc/sonny/authority/grant-keyring.json\n\nUsage:\n  sonny mesh managed manifest [flags]\n\nFlags:\n      --agent-messaging            set agent_messaging: native hosted parent messaging\n      --agent-peer-relationships   set agent_peer_relationships: cross-node peer relationships (requires --agent-messaging)\n      --control-db string          control database; pass mesh serve the same --control-db (required)\n      --grant-keyring string       the node's grant keyring from enroll-node (required)\n  -h, --help                       help for manifest\n      --out string                 manifest file to write (required)\n      --policy stringArray         signed tenant policy (repeatable, required)\n      --sponsor stringArray        tenant=sponsor-id overriding the seeded sponsorship (repeatable)\n      --verification-keys string   the node's verification keyring (required)\n\nGlobal Flags:\n      --analysis-json string     versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --client-ca string         CA bundle file used to verify the server cert\n      --client-cert string       client TLS certificate file (PEM) for mTLS-protected mesh endpoints\n      --client-key string        client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)\n      --client-key-pin string    PIN file for PKCS#11 client key (optional)\n      --config string            config file (default: .sonny.yaml in working directory)\n      --debug                    enable debug mode\n      --dev-insecure-transport   DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)\n      --endpoint string          mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)\n      --log-format string        log format: text|json (default \"text\")\n      --log-level string         log level: debug|info|warn|error (default \"warn\")\n  -m, --model string             model to use (overrides pack default)\n  -p, --provider string          LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations       suppress schema and legacy recipe-name deprecation warnings\n      --server-name string       SNI / cert-SAN match target (required when --client-cert is set)\n  -C, --workdir string           working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny mesh managed seed",
      "path": [
        "mesh",
        "managed",
        "seed"
      ],
      "summary": "Create or migrate control.db and seed each tenant's authority",
      "usage": "  sonny mesh managed seed [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--control-db",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "SQLite control database mesh serve uses (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--cost-units",
          "shorthand": null,
          "type_as_displayed": "float",
          "description": "per-grant cost-unit ceiling (default 1)",
          "default_as_displayed": "1",
          "group": "Flags"
        },
        {
          "name": "--effect",
          "shorthand": null,
          "type_as_displayed": "strings",
          "description": "effect tags the sponsorship allows (repeatable; add sensitive_read only with a matching policy rule) (default [read,write,delete,execute,network,publish])",
          "default_as_displayed": "[read,write,delete,execute,network,publish]",
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for seed",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--human",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "human subject who sponsors the managed work (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--issuer",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "issuer recorded for the sponsoring human (default \"sonny-mesh-managed-seed\")",
          "default_as_displayed": "\"sonny-mesh-managed-seed\"",
          "group": "Flags"
        },
        {
          "name": "--policy",
          "shorthand": null,
          "type_as_displayed": "stringArray",
          "description": "signed tenant policy (repeatable, required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--spawns",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "per-grant process-spawn ceiling (default 8)",
          "default_as_displayed": "8",
          "group": "Flags"
        },
        {
          "name": "--tokens",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "per-grant token ceiling (default 1)",
          "default_as_displayed": "1",
          "group": "Flags"
        },
        {
          "name": "--tool-calls",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "per-grant tool-call ceiling (default 64)",
          "default_as_displayed": "64",
          "group": "Flags"
        },
        {
          "name": "--verification-keys",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "the node's verification keyring (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--wall-time",
          "shorthand": null,
          "type_as_displayed": "duration",
          "description": "per-grant wall-time ceiling (a grant lasts at most 1h) (default 2h0m0s)",
          "default_as_displayed": "2h0m0s",
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-ca",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "CA bundle file used to verify the server cert",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-cert",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS certificate file (PEM) for mTLS-protected mesh endpoints",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key-pin",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "PIN file for PKCS#11 client key (optional)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--dev-insecure-transport",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--endpoint",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--server-name",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "SNI / cert-SAN match target (required when --client-cert is set)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Create (owner-only) or migrate the control database and, for each signed\npolicy, seed what mesh serve's grant issuance requires:\n\n  - the tenant's freeze epoch;\n  - a sponsorship bound to the policy, named by --human, ending when the\n    policy expires, with the effect and budget ceilings below;\n  - an active plan revision for the tenant's managed work spec.\n\nEverything is written through the control store, never with SQL. A re-run\nchanges nothing. A re-signed policy gets a new sponsorship and the next\nplan revision; the 'sponsor <tenant>:' lines name the sponsorship ids, which\nmanifest derives the same way. Expired or unverifiable policies are refused.\n\nExample:\n  sonny mesh managed seed --control-db /var/lib/sonny/control.db \\\n    --verification-keys /etc/sonny/authority/verification-keys.json \\\n    --policy /etc/sonny/authority/policies/acme.json --human user:ops-oncall\n\nUsage:\n  sonny mesh managed seed [flags]\n\nFlags:\n      --control-db string          SQLite control database mesh serve uses (required)\n      --cost-units float           per-grant cost-unit ceiling (default 1)\n      --effect strings             effect tags the sponsorship allows (repeatable; add sensitive_read only with a matching policy rule) (default [read,write,delete,execute,network,publish])\n  -h, --help                       help for seed\n      --human string               human subject who sponsors the managed work (required)\n      --issuer string              issuer recorded for the sponsoring human (default \"sonny-mesh-managed-seed\")\n      --policy stringArray         signed tenant policy (repeatable, required)\n      --spawns int                 per-grant process-spawn ceiling (default 8)\n      --tokens int                 per-grant token ceiling (default 1)\n      --tool-calls int             per-grant tool-call ceiling (default 64)\n      --verification-keys string   the node's verification keyring (required)\n      --wall-time duration         per-grant wall-time ceiling (a grant lasts at most 1h) (default 2h0m0s)\n\nGlobal Flags:\n      --analysis-json string     versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --client-ca string         CA bundle file used to verify the server cert\n      --client-cert string       client TLS certificate file (PEM) for mTLS-protected mesh endpoints\n      --client-key string        client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)\n      --client-key-pin string    PIN file for PKCS#11 client key (optional)\n      --config string            config file (default: .sonny.yaml in working directory)\n      --debug                    enable debug mode\n      --dev-insecure-transport   DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)\n      --endpoint string          mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)\n      --log-format string        log format: text|json (default \"text\")\n      --log-level string         log level: debug|info|warn|error (default \"warn\")\n  -m, --model string             model to use (overrides pack default)\n  -p, --provider string          LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations       suppress schema and legacy recipe-name deprecation warnings\n      --server-name string       SNI / cert-SAN match target (required when --client-cert is set)\n  -C, --workdir string           working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny mesh managed sign-policy",
      "path": [
        "mesh",
        "managed",
        "sign-policy"
      ],
      "summary": "Sign or re-sign a tenant policy",
      "usage": "  sonny mesh managed sign-policy [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--force",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "re-sign even when the existing policy is current",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for sign-policy",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--out",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "signed policy file to write (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--policy-keyring",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "policy keyring document written by init (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--reason",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "change reason recorded in the policy",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--renew-before",
          "shorthand": null,
          "type_as_displayed": "duration",
          "description": "re-sign an existing policy that expires within this window (default 168h0m0s)",
          "default_as_displayed": "168h0m0s",
          "group": "Flags"
        },
        {
          "name": "--rules",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "JSON array of policy rules (default: attested-human access, no worker provisioning)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--tenant",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "tenant the policy governs (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--ttl",
          "shorthand": null,
          "type_as_displayed": "duration",
          "description": "policy lifetime (default 720h0m0s)",
          "default_as_displayed": "720h0m0s",
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-ca",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "CA bundle file used to verify the server cert",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-cert",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS certificate file (PEM) for mTLS-protected mesh endpoints",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key-pin",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "PIN file for PKCS#11 client key (optional)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--dev-insecure-transport",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--endpoint",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--server-name",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "SNI / cert-SAN match target (required when --client-cert is set)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Sign the tenant's managed policy with the policy key and write it to --out.\n\nThe policy expires after --ttl. A re-run keeps the existing policy while it\nis signed by this key, its rules are unchanged and it expires later than\n--renew-before from now; otherwise it signs the next generation, superseding\nthe current one. Run it on a schedule to renew policies before they expire,\nthen run seed and manifest on each node and restart mesh serve: a re-signed\npolicy has a new digest, so it needs a new sponsorship.\n\n--rules is a JSON array of tenant policy rules (see docs/TENANT_POLICY.md).\nWithout it the policy allows attested humans every action and denies\nmanaged-worker provisioning actions. A policy this key cannot verify is\nreplaced only with --force; a policy for another tenant never is.\n\nExample:\n  sonny mesh managed sign-policy --tenant acme \\\n    --policy-keyring /secure/sonny/policy-keyring.json \\\n    --out /secure/sonny/policies/acme.json --ttl 720h\n\nUsage:\n  sonny mesh managed sign-policy [flags]\n\nFlags:\n      --force                   re-sign even when the existing policy is current\n  -h, --help                    help for sign-policy\n      --out string              signed policy file to write (required)\n      --policy-keyring string   policy keyring document written by init (required)\n      --reason string           change reason recorded in the policy\n      --renew-before duration   re-sign an existing policy that expires within this window (default 168h0m0s)\n      --rules string            JSON array of policy rules (default: attested-human access, no worker provisioning)\n      --tenant string           tenant the policy governs (required)\n      --ttl duration            policy lifetime (default 720h0m0s)\n\nGlobal Flags:\n      --analysis-json string     versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --client-ca string         CA bundle file used to verify the server cert\n      --client-cert string       client TLS certificate file (PEM) for mTLS-protected mesh endpoints\n      --client-key string        client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)\n      --client-key-pin string    PIN file for PKCS#11 client key (optional)\n      --config string            config file (default: .sonny.yaml in working directory)\n      --debug                    enable debug mode\n      --dev-insecure-transport   DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)\n      --endpoint string          mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)\n      --log-format string        log format: text|json (default \"text\")\n      --log-level string         log level: debug|info|warn|error (default \"warn\")\n  -m, --model string             model to use (overrides pack default)\n  -p, --provider string          LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations       suppress schema and legacy recipe-name deprecation warnings\n      --server-name string       SNI / cert-SAN match target (required when --client-cert is set)\n  -C, --workdir string           working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny mesh managed verify",
      "path": [
        "mesh",
        "managed",
        "verify"
      ],
      "summary": "Run mesh serve's managed-worker startup validation without serving",
      "usage": "  sonny mesh managed verify [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--control-db",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "control database mesh serve is given (default: as mesh serve resolves it)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--expiry-warning",
          "shorthand": null,
          "type_as_displayed": "duration",
          "description": "warn when a policy or sponsorship expires within this window (default 168h0m0s)",
          "default_as_displayed": "168h0m0s",
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for verify",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--managed-manifest",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "managed-worker deployment manifest (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-ca",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "CA bundle file used to verify the server cert",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-cert",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS certificate file (PEM) for mTLS-protected mesh endpoints",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key-pin",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "PIN file for PKCS#11 client key (optional)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--dev-insecure-transport",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--endpoint",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--server-name",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "SNI / cert-SAN match target (required when --client-cert is set)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Check a provisioned node with the validation 'sonny mesh serve' runs before\nit opens a listener, and report every problem rather than the first.\n\nIt checks the manifest; that --control-db resolves to its control database;\nthe private-file rules for every file it names; the verification keyring and\neach signed policy; the trusted isolation configuration; the grant signing\nkeyring; the authority plane, grant issuance and every sponsorship; and the\nmanaged authority and audit startup check. It also checks each tenant's\nfreeze epoch and active plan, which every session needs. It warns when a\npolicy or sponsorship expires within --expiry-warning.\n\nRun it as the daemon user with the daemon's environment: file ownership and\nthe isolation configuration are judged for the user that runs it. Like mesh\nserve, it opens the control database and applies pending migrations. It does\nnot contact the Docker engine; run 'sonny isolation doctor' for that.\n--control-db resolves as mesh serve's does: the flag, then SONNY_CONTROL_DB,\nthen mesh.control_db, then <data>/control.db.\n\nExample:\n  sonny mesh managed verify --managed-manifest /etc/sonny/mesh/managed-worker.json \\\n    --control-db /var/lib/sonny/control.db\n\nUsage:\n  sonny mesh managed verify [flags]\n\nFlags:\n      --control-db string         control database mesh serve is given (default: as mesh serve resolves it)\n      --expiry-warning duration   warn when a policy or sponsorship expires within this window (default 168h0m0s)\n  -h, --help                      help for verify\n      --managed-manifest string   managed-worker deployment manifest (required)\n\nGlobal Flags:\n      --analysis-json string     versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --client-ca string         CA bundle file used to verify the server cert\n      --client-cert string       client TLS certificate file (PEM) for mTLS-protected mesh endpoints\n      --client-key string        client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)\n      --client-key-pin string    PIN file for PKCS#11 client key (optional)\n      --config string            config file (default: .sonny.yaml in working directory)\n      --debug                    enable debug mode\n      --dev-insecure-transport   DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)\n      --endpoint string          mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)\n      --log-format string        log format: text|json (default \"text\")\n      --log-level string         log level: debug|info|warn|error (default \"warn\")\n  -m, --model string             model to use (overrides pack default)\n  -p, --provider string          LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations       suppress schema and legacy recipe-name deprecation warnings\n      --server-name string       SNI / cert-SAN match target (required when --client-cert is set)\n  -C, --workdir string           working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny mesh nodes",
      "path": [
        "mesh",
        "nodes"
      ],
      "summary": "List mesh nodes",
      "usage": "  sonny mesh nodes [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for nodes",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--region",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "filter by region",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--zone",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "filter by zone",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-ca",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "CA bundle file used to verify the server cert",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-cert",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS certificate file (PEM) for mTLS-protected mesh endpoints",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key-pin",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "PIN file for PKCS#11 client key (optional)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--dev-insecure-transport",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--endpoint",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--server-name",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "SNI / cert-SAN match target (required when --client-cert is set)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "List all nodes in the mesh network.\n\nExample:\n  # List all nodes\n  sonny mesh nodes\n\n  # Filter by region\n  sonny mesh nodes --region us-west\n\nUsage:\n  sonny mesh nodes [flags]\n\nFlags:\n  -h, --help            help for nodes\n      --region string   filter by region\n      --zone string     filter by zone\n\nGlobal Flags:\n      --analysis-json string     versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --client-ca string         CA bundle file used to verify the server cert\n      --client-cert string       client TLS certificate file (PEM) for mTLS-protected mesh endpoints\n      --client-key string        client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)\n      --client-key-pin string    PIN file for PKCS#11 client key (optional)\n      --config string            config file (default: .sonny.yaml in working directory)\n      --debug                    enable debug mode\n      --dev-insecure-transport   DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)\n      --endpoint string          mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)\n      --log-format string        log format: text|json (default \"text\")\n      --log-level string         log level: debug|info|warn|error (default \"warn\")\n  -m, --model string             model to use (overrides pack default)\n  -p, --provider string          LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations       suppress schema and legacy recipe-name deprecation warnings\n      --server-name string       SNI / cert-SAN match target (required when --client-cert is set)\n  -C, --workdir string           working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny mesh peers",
      "path": [
        "mesh",
        "peers"
      ],
      "summary": "Print this daemon's mesh participation snapshot as JSON",
      "usage": "  sonny mesh peers [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--cursor",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "opaque paging cursor from a previous call",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--endpoint",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "supervisor socket (unix) or pipe (windows) path (default: sockpath.Endpoint())",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for peers",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--limit",
          "shorthand": null,
          "type_as_displayed": "int32",
          "description": "bound the peer/device page (<=0 selects the backend default, capped at 256)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--tenant",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "tenant this connection speaks for (default \"default\")",
          "default_as_displayed": "\"default\"",
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-ca",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "CA bundle file used to verify the server cert",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-cert",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS certificate file (PEM) for mTLS-protected mesh endpoints",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key-pin",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "PIN file for PKCS#11 client key (optional)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--dev-insecure-transport",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--server-name",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "SNI / cert-SAN match target (required when --client-cert is set)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Print the local supervisor daemon's mesh status: health, its own node\nidentity, a bounded page of its peer roster, a bounded page of its owner\ndevice roster, and its locally known session counts by state\n(sonny/ops.mesh).\n\nThis talks to the local supervisor daemon over the same connection\n'sonny supervisor status' uses, not to a remote mesh node's gRPC\nendpoint -- it does not take --endpoint/--client-cert from the mesh\ncommand group's persistent flags.\n\nExample:\n  # Print this daemon's mesh status\n  sonny mesh peers\n\n  # Page through a large peer/device roster\n  sonny mesh peers --cursor <cursor-from-previous-call> --limit 50\n\nUsage:\n  sonny mesh peers [flags]\n\nFlags:\n      --cursor string     opaque paging cursor from a previous call\n      --endpoint string   supervisor socket (unix) or pipe (windows) path (default: sockpath.Endpoint())\n  -h, --help              help for peers\n      --limit int32       bound the peer/device page (<=0 selects the backend default, capped at 256)\n      --tenant string     tenant this connection speaks for (default \"default\")\n\nGlobal Flags:\n      --analysis-json string     versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --client-ca string         CA bundle file used to verify the server cert\n      --client-cert string       client TLS certificate file (PEM) for mTLS-protected mesh endpoints\n      --client-key string        client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)\n      --client-key-pin string    PIN file for PKCS#11 client key (optional)\n      --config string            config file (default: .sonny.yaml in working directory)\n      --debug                    enable debug mode\n      --dev-insecure-transport   DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)\n      --log-format string        log format: text|json (default \"text\")\n      --log-level string         log level: debug|info|warn|error (default \"warn\")\n  -m, --model string             model to use (overrides pack default)\n  -p, --provider string          LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations       suppress schema and legacy recipe-name deprecation warnings\n      --server-name string       SNI / cert-SAN match target (required when --client-cert is set)\n  -C, --workdir string           working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny mesh push",
      "path": [
        "mesh",
        "push"
      ],
      "summary": "Push a session to a remote node",
      "usage": "  sonny mesh push [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--file",
          "shorthand": "-f",
          "type_as_displayed": "string",
          "description": "local prompt pack file whose pack ID is sent (or use --pack)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--follow",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "follow session output after push",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for push",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--node",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "target node ID (default: best available)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--persist",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "persist session on detach (default true)",
          "default_as_displayed": "true",
          "group": "Flags"
        },
        {
          "name": "--recipe",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "ID of the pack the target node runs (or use --file)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--session-dir",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "absolute working directory for the session on the target node (default: the current directory)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-ca",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "CA bundle file used to verify the server cert",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-cert",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS certificate file (PEM) for mTLS-protected mesh endpoints",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key-pin",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "PIN file for PKCS#11 client key (optional)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--dev-insecure-transport",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--endpoint",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--server-name",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "SNI / cert-SAN match target (required when --client-cert is set)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Create a new session on a remote mesh node.\n\nThe session will run on the remote node and continue even if you disconnect.\nUse 'mesh attach' to reconnect to the session later.\n\nThe target node runs a recipe it already has. Name it with --recipe, or give a\nlocal recipe file with --file and its recipe ID is sent. The session works in\n--session-dir on the target node: an absolute path that must exist there and\nlie under its SONNY_MESH_CWD_ROOTS. It defaults to the current directory.\n\nExample:\n  # Push to best available node\n  sonny mesh push --pack my-pack\n\n  # Push to specific node, working in a directory on that node\n  sonny mesh push --node worker-1 --pack my-pack --session-dir /srv/work\n\n  # Push the pack a local file names and follow output\n  sonny mesh push --file pack.yaml --follow\n\nUsage:\n  sonny mesh push [flags]\n\nFlags:\n  -f, --file string          local prompt pack file whose pack ID is sent (or use --pack)\n      --follow               follow session output after push\n  -h, --help                 help for push\n      --node string          target node ID (default: best available)\n      --persist              persist session on detach (default true)\n      --recipe string        ID of the pack the target node runs (or use --file)\n      --session-dir string   absolute working directory for the session on the target node (default: the current directory)\n\nGlobal Flags:\n      --analysis-json string     versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --client-ca string         CA bundle file used to verify the server cert\n      --client-cert string       client TLS certificate file (PEM) for mTLS-protected mesh endpoints\n      --client-key string        client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)\n      --client-key-pin string    PIN file for PKCS#11 client key (optional)\n      --config string            config file (default: .sonny.yaml in working directory)\n      --debug                    enable debug mode\n      --dev-insecure-transport   DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)\n      --endpoint string          mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)\n      --log-format string        log format: text|json (default \"text\")\n      --log-level string         log level: debug|info|warn|error (default \"warn\")\n  -m, --model string             model to use (overrides pack default)\n  -p, --provider string          LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations       suppress schema and legacy recipe-name deprecation warnings\n      --server-name string       SNI / cert-SAN match target (required when --client-cert is set)\n  -C, --workdir string           working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny mesh relate",
      "path": [
        "mesh",
        "relate"
      ],
      "summary": "Grant, revoke and list peer relationships between root sessions on two nodes",
      "usage": "  sonny mesh relate [command]",
      "aliases": [],
      "children": [
        {
          "name": "endpoint",
          "summary": "Print the node and agent ID of a root session hosted on this node"
        },
        {
          "name": "grant",
          "summary": "Grant or renew this node's half of a peer relationship"
        },
        {
          "name": "list",
          "summary": "List this node's peer grants and whether the other node was observed"
        },
        {
          "name": "revoke",
          "summary": "Revoke this node's half of a peer relationship (final)"
        }
      ],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for relate",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-ca",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "CA bundle file used to verify the server cert",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-cert",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS certificate file (PEM) for mTLS-protected mesh endpoints",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key-pin",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "PIN file for PKCS#11 client key (optional)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--dev-insecure-transport",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--endpoint",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--server-name",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "SNI / cert-SAN match target (required when --client-cert is set)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Manage this node's half of an operator-granted peer relationship between a\nroot session hosted here and a root session hosted on another node of the same\nmesh and tenant. Mail flows only after BOTH nodes hold a grant for the same\nrelationship ID. Either half alone authorizes nothing.\n\nThe node must run with \"agent_peer_relationships\": true in its managed\nmanifest. Each call needs an authenticated user certificate (--client-cert)\nand an explicit authz binding for /mesh.v1.AgentPeerAdminService methods.\n\nTypical flow:\n  # On node B: find the agent ID of the session to relate\n  sonny mesh relate endpoint <session-b> --endpoint node-b:50052 ...\n  # On node A: grant A's half (prints the relationship ID)\n  sonny mesh relate grant --local-session <session-a> --remote-node node-b \\\n    --remote-session <session-b> --remote-agent <agent-b> --expires 720h\n  # On node B: grant the mirror half with the same relationship ID\n  sonny mesh relate grant --relationship <id> --local-session <session-b> \\\n    --remote-node node-a --remote-session <session-a> --remote-agent <agent-a> --expires 720h\n  # Either node: inspect, or revoke its half (final; fences both directions)\n  sonny mesh relate list\n  sonny mesh relate revoke <id> --expected-revision 1\n\nUsage:\n  sonny mesh relate [command]\n\nAvailable Commands:\n  endpoint    Print the node and agent ID of a root session hosted on this node\n  grant       Grant or renew this node's half of a peer relationship\n  list        List this node's peer grants and whether the other node was observed\n  revoke      Revoke this node's half of a peer relationship (final)\n\nFlags:\n  -h, --help   help for relate\n\nGlobal Flags:\n      --analysis-json string     versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --client-ca string         CA bundle file used to verify the server cert\n      --client-cert string       client TLS certificate file (PEM) for mTLS-protected mesh endpoints\n      --client-key string        client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)\n      --client-key-pin string    PIN file for PKCS#11 client key (optional)\n      --config string            config file (default: .sonny.yaml in working directory)\n      --debug                    enable debug mode\n      --dev-insecure-transport   DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)\n      --endpoint string          mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)\n      --log-format string        log format: text|json (default \"text\")\n      --log-level string         log level: debug|info|warn|error (default \"warn\")\n  -m, --model string             model to use (overrides pack default)\n  -p, --provider string          LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations       suppress schema and legacy recipe-name deprecation warnings\n      --server-name string       SNI / cert-SAN match target (required when --client-cert is set)\n  -C, --workdir string           working directory (default \".\")\n\nUse \"sonny mesh relate [command] --help\" for more information about a command.\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny mesh relate endpoint",
      "path": [
        "mesh",
        "relate",
        "endpoint"
      ],
      "summary": "Print the node and agent ID of a root session hosted on this node",
      "usage": "  sonny mesh relate endpoint <session-id> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for endpoint",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-ca",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "CA bundle file used to verify the server cert",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-cert",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS certificate file (PEM) for mTLS-protected mesh endpoints",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key-pin",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "PIN file for PKCS#11 client key (optional)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--dev-insecure-transport",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--endpoint",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--server-name",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "SNI / cert-SAN match target (required when --client-cert is set)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Print the node and agent ID of a root session hosted on this node\n\nUsage:\n  sonny mesh relate endpoint <session-id> [flags]\n\nFlags:\n  -h, --help   help for endpoint\n\nGlobal Flags:\n      --analysis-json string     versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --client-ca string         CA bundle file used to verify the server cert\n      --client-cert string       client TLS certificate file (PEM) for mTLS-protected mesh endpoints\n      --client-key string        client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)\n      --client-key-pin string    PIN file for PKCS#11 client key (optional)\n      --config string            config file (default: .sonny.yaml in working directory)\n      --debug                    enable debug mode\n      --dev-insecure-transport   DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)\n      --endpoint string          mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)\n      --log-format string        log format: text|json (default \"text\")\n      --log-level string         log level: debug|info|warn|error (default \"warn\")\n  -m, --model string             model to use (overrides pack default)\n  -p, --provider string          LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations       suppress schema and legacy recipe-name deprecation warnings\n      --server-name string       SNI / cert-SAN match target (required when --client-cert is set)\n  -C, --workdir string           working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny mesh relate grant",
      "path": [
        "mesh",
        "relate",
        "grant"
      ],
      "summary": "Grant or renew this node's half of a peer relationship",
      "usage": "  sonny mesh relate grant [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--change-id",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "change ID for an exact retry (default: generate one)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--expected-revision",
          "shorthand": null,
          "type_as_displayed": "uint",
          "description": "current revision when renewing (0 creates)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--expires",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "expiry: a duration such as 720h or an RFC 3339 time (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for grant",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--kinds",
          "shorthand": null,
          "type_as_displayed": "strings",
          "description": "message kinds to carry (default info_request)",
          "default_as_displayed": "info_request",
          "group": "Flags"
        },
        {
          "name": "--local-session",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "root session hosted on this node",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--relationship",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "relationship ID shared by both nodes (default: generate one)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--remote-agent",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "the other root session's agent ID (from 'relate endpoint' on its node)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--remote-node",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "node that hosts the other root session",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--remote-session",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "the other root session's ID",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-ca",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "CA bundle file used to verify the server cert",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-cert",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS certificate file (PEM) for mTLS-protected mesh endpoints",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key-pin",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "PIN file for PKCS#11 client key (optional)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--dev-insecure-transport",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--endpoint",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--server-name",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "SNI / cert-SAN match target (required when --client-cert is set)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Grant this node's half of a peer relationship. Without --relationship a new\nrelationship ID is generated; give the same ID to the other node's grant.\n--expires takes a duration (e.g. 720h) or an RFC 3339 time, at most 90 days\nahead. --kinds narrows the message kinds (info_request, info_response,\nintent); the default is info_request, whose replies are also carried.\n\nTo renew, repeat the grant with --expected-revision set to the current\nrevision. A retry of the same change must reuse its --change-id.\n\nUsage:\n  sonny mesh relate grant [flags]\n\nFlags:\n      --change-id string         change ID for an exact retry (default: generate one)\n      --expected-revision uint   current revision when renewing (0 creates)\n      --expires string           expiry: a duration such as 720h or an RFC 3339 time (required)\n  -h, --help                     help for grant\n      --kinds strings            message kinds to carry (default info_request)\n      --local-session string     root session hosted on this node\n      --relationship string      relationship ID shared by both nodes (default: generate one)\n      --remote-agent string      the other root session's agent ID (from 'relate endpoint' on its node)\n      --remote-node string       node that hosts the other root session\n      --remote-session string    the other root session's ID\n\nGlobal Flags:\n      --analysis-json string     versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --client-ca string         CA bundle file used to verify the server cert\n      --client-cert string       client TLS certificate file (PEM) for mTLS-protected mesh endpoints\n      --client-key string        client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)\n      --client-key-pin string    PIN file for PKCS#11 client key (optional)\n      --config string            config file (default: .sonny.yaml in working directory)\n      --debug                    enable debug mode\n      --dev-insecure-transport   DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)\n      --endpoint string          mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)\n      --log-format string        log format: text|json (default \"text\")\n      --log-level string         log level: debug|info|warn|error (default \"warn\")\n  -m, --model string             model to use (overrides pack default)\n  -p, --provider string          LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations       suppress schema and legacy recipe-name deprecation warnings\n      --server-name string       SNI / cert-SAN match target (required when --client-cert is set)\n  -C, --workdir string           working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny mesh relate list",
      "path": [
        "mesh",
        "relate",
        "list"
      ],
      "summary": "List this node's peer grants and whether the other node was observed",
      "usage": "  sonny mesh relate list [flags]",
      "aliases": [
        "list",
        "ls"
      ],
      "children": [],
      "flags": [
        {
          "name": "--after",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "list grants after this relationship ID",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for list",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--limit",
          "shorthand": null,
          "type_as_displayed": "uint32",
          "description": "maximum grants to list (at most 256) (default 50)",
          "default_as_displayed": "50",
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-ca",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "CA bundle file used to verify the server cert",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-cert",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS certificate file (PEM) for mTLS-protected mesh endpoints",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key-pin",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "PIN file for PKCS#11 client key (optional)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--dev-insecure-transport",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--endpoint",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--server-name",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "SNI / cert-SAN match target (required when --client-cert is set)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "List this node's peer grants and whether the other node was observed\n\nUsage:\n  sonny mesh relate list [flags]\n\nAliases:\n  list, ls\n\nFlags:\n      --after string   list grants after this relationship ID\n  -h, --help           help for list\n      --limit uint32   maximum grants to list (at most 256) (default 50)\n\nGlobal Flags:\n      --analysis-json string     versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --client-ca string         CA bundle file used to verify the server cert\n      --client-cert string       client TLS certificate file (PEM) for mTLS-protected mesh endpoints\n      --client-key string        client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)\n      --client-key-pin string    PIN file for PKCS#11 client key (optional)\n      --config string            config file (default: .sonny.yaml in working directory)\n      --debug                    enable debug mode\n      --dev-insecure-transport   DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)\n      --endpoint string          mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)\n      --log-format string        log format: text|json (default \"text\")\n      --log-level string         log level: debug|info|warn|error (default \"warn\")\n  -m, --model string             model to use (overrides pack default)\n  -p, --provider string          LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations       suppress schema and legacy recipe-name deprecation warnings\n      --server-name string       SNI / cert-SAN match target (required when --client-cert is set)\n  -C, --workdir string           working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny mesh relate revoke",
      "path": [
        "mesh",
        "relate",
        "revoke"
      ],
      "summary": "Revoke this node's half of a peer relationship (final)",
      "usage": "  sonny mesh relate revoke <relationship-id> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--change-id",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "change ID for an exact retry (default: generate one)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--expected-revision",
          "shorthand": null,
          "type_as_displayed": "uint",
          "description": "current revision of the grant (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for revoke",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-ca",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "CA bundle file used to verify the server cert",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-cert",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS certificate file (PEM) for mTLS-protected mesh endpoints",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key-pin",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "PIN file for PKCS#11 client key (optional)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--dev-insecure-transport",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--endpoint",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--server-name",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "SNI / cert-SAN match target (required when --client-cert is set)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Revoke this node's half. Delivery stops in both directions at the next route\nresolution on either node, and the relationship cannot be granted again: a\nnew relationship needs new root sessions.\n\nUsage:\n  sonny mesh relate revoke <relationship-id> [flags]\n\nFlags:\n      --change-id string         change ID for an exact retry (default: generate one)\n      --expected-revision uint   current revision of the grant (required)\n  -h, --help                     help for revoke\n\nGlobal Flags:\n      --analysis-json string     versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --client-ca string         CA bundle file used to verify the server cert\n      --client-cert string       client TLS certificate file (PEM) for mTLS-protected mesh endpoints\n      --client-key string        client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)\n      --client-key-pin string    PIN file for PKCS#11 client key (optional)\n      --config string            config file (default: .sonny.yaml in working directory)\n      --debug                    enable debug mode\n      --dev-insecure-transport   DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)\n      --endpoint string          mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)\n      --log-format string        log format: text|json (default \"text\")\n      --log-level string         log level: debug|info|warn|error (default \"warn\")\n  -m, --model string             model to use (overrides pack default)\n  -p, --provider string          LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations       suppress schema and legacy recipe-name deprecation warnings\n      --server-name string       SNI / cert-SAN match target (required when --client-cert is set)\n  -C, --workdir string           working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny mesh serve",
      "path": [
        "mesh",
        "serve"
      ],
      "summary": "Start a mesh node",
      "usage": "  sonny mesh serve [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--advertise-addr",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "address peers should use to reach this node's gRPC surface, e.g. a reachable tailscale DNS name like \"lothiriel:9052\" (default: --grpc); required on a multi-host mesh because the bind address is not routable from a peer",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--authz-policy",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "path to the RBAC policy YAML (default /etc/sonny/mesh/authz.yaml)",
          "default_as_displayed": "/etc/sonny/mesh/authz.yaml",
          "group": "Flags"
        },
        {
          "name": "--ca",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "TLS CA certificate file",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--cert",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "TLS certificate file",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--control-db",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "path to the SQLite mesh control-plane DB (default <data>/control.db)",
          "default_as_displayed": "<data>/control.db",
          "group": "Flags"
        },
        {
          "name": "--coordinator",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "mesh coordinator address (if joining existing mesh)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--grpc",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "gRPC listen address (default \":50052\")",
          "default_as_displayed": "\":50052\"",
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for serve",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--key",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "TLS key file",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--label",
          "shorthand": null,
          "type_as_displayed": "strings",
          "description": "node labels (key=value)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--managed-manifest",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "private managed-worker deployment manifest (required in production builds)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--max-sessions",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "maximum concurrent sessions (default 10)",
          "default_as_displayed": "10",
          "group": "Flags"
        },
        {
          "name": "--mesh-peer",
          "shorthand": null,
          "type_as_displayed": "strings",
          "description": "quic:// peer URL (preferred), or ws:// development / wss:// mTLS compatibility URL (repeatable)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--models",
          "shorthand": null,
          "type_as_displayed": "strings",
          "description": "supported models",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--name",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "node name (default: $(whoami)@$(hostname))",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--node-id",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "node ID (default: auto-generated UUID)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--providers",
          "shorthand": null,
          "type_as_displayed": "strings",
          "description": "supported LLM providers",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--recipes",
          "shorthand": null,
          "type_as_displayed": "strings",
          "description": "available prompt packs",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--region",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "node region (for routing)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--synapse-listen",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "address Synapse listens on for QUIC/UDP (default) and WebSocket/TCP compatibility (default \":50053\")",
          "default_as_displayed": "\":50053\"",
          "group": "Flags"
        },
        {
          "name": "--trust-domain",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "SPIFFE trust domain for peer SVIDs (default mesh.local)",
          "default_as_displayed": "mesh.local",
          "group": "Flags"
        },
        {
          "name": "--zone",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "node zone (for routing)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-ca",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "CA bundle file used to verify the server cert",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-cert",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS certificate file (PEM) for mTLS-protected mesh endpoints",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key-pin",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "PIN file for PKCS#11 client key (optional)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--dev-insecure-transport",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--endpoint",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--server-name",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "SNI / cert-SAN match target (required when --client-cert is set)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Start a mesh node that can host and transfer sessions.\n\nThe node will:\n- Listen for gRPC client connections for session streaming and compatibility\n- Advertise on the Synapse QUIC peer plane using protobuf framing by default\n- Retain WebSocket and JSON negotiation for rolling-upgrade compatibility\n- Accept sessions from other nodes\n- Send heartbeats to announce availability\n\nExample:\n  # Start a basic mesh node\n  sonny mesh serve \\\n    --managed-manifest /etc/sonny/mesh/managed-worker.json \\\n    --control-db /var/lib/sonny/control.db \\\n    --grpc 127.0.0.1:50052 --synapse-listen 127.0.0.1:50053\n\n  # Multi-node mesh with mTLS on both the gRPC and Synapse planes\n  sonny mesh serve \\\n    --managed-manifest /etc/sonny/mesh/managed-worker.json \\\n    --control-db /var/lib/sonny/control.db \\\n    --advertise-addr host:50052 \\\n    --mesh-peer quic://peer:50053 \\\n    --name \"worker-1\" \\\n    --region us-west \\\n    --cert node.crt --key node.key --ca ca.crt\n\nUsage:\n  sonny mesh serve [flags]\n\nFlags:\n      --advertise-addr string     address peers should use to reach this node's gRPC surface, e.g. a reachable tailscale DNS name like \"lothiriel:9052\" (default: --grpc); required on a multi-host mesh because the bind address is not routable from a peer\n      --authz-policy string       path to the RBAC policy YAML (default /etc/sonny/mesh/authz.yaml)\n      --ca string                 TLS CA certificate file\n      --cert string               TLS certificate file\n      --control-db string         path to the SQLite mesh control-plane DB (default <data>/control.db)\n      --coordinator string        mesh coordinator address (if joining existing mesh)\n      --grpc string               gRPC listen address (default \":50052\")\n  -h, --help                      help for serve\n      --key string                TLS key file\n      --label strings             node labels (key=value)\n      --managed-manifest string   private managed-worker deployment manifest (required in production builds)\n      --max-sessions int          maximum concurrent sessions (default 10)\n      --mesh-peer strings         quic:// peer URL (preferred), or ws:// development / wss:// mTLS compatibility URL (repeatable)\n      --models strings            supported models\n      --name string               node name (default: $(whoami)@$(hostname))\n      --node-id string            node ID (default: auto-generated UUID)\n      --providers strings         supported LLM providers\n      --recipes strings           available prompt packs\n      --region string             node region (for routing)\n      --synapse-listen string     address Synapse listens on for QUIC/UDP (default) and WebSocket/TCP compatibility (default \":50053\")\n      --trust-domain string       SPIFFE trust domain for peer SVIDs (default mesh.local)\n      --zone string               node zone (for routing)\n\nGlobal Flags:\n      --analysis-json string     versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --client-ca string         CA bundle file used to verify the server cert\n      --client-cert string       client TLS certificate file (PEM) for mTLS-protected mesh endpoints\n      --client-key string        client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)\n      --client-key-pin string    PIN file for PKCS#11 client key (optional)\n      --config string            config file (default: .sonny.yaml in working directory)\n      --debug                    enable debug mode\n      --dev-insecure-transport   DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)\n      --endpoint string          mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)\n      --log-format string        log format: text|json (default \"text\")\n      --log-level string         log level: debug|info|warn|error (default \"warn\")\n  -m, --model string             model to use (overrides pack default)\n  -p, --provider string          LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations       suppress schema and legacy recipe-name deprecation warnings\n      --server-name string       SNI / cert-SAN match target (required when --client-cert is set)\n  -C, --workdir string           working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny mesh sessions",
      "path": [
        "mesh",
        "sessions"
      ],
      "summary": "List mesh sessions",
      "usage": "  sonny mesh sessions [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--all",
          "shorthand": "-a",
          "type_as_displayed": null,
          "description": "show all sessions including completed",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for sessions",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--isolation-assurance",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "filter by achieved assurance",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--isolation-backend",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "filter by achieved backend",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--isolation-state",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "filter by isolation verification state",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--search",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "filter by session, pack, model, provider, or node text",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--sort",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "sort by updated, assurance, backend, or isolation-state (default \"updated\")",
          "default_as_displayed": "\"updated\"",
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-ca",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "CA bundle file used to verify the server cert",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-cert",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS certificate file (PEM) for mTLS-protected mesh endpoints",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key-pin",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "PIN file for PKCS#11 client key (optional)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--dev-insecure-transport",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--endpoint",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--server-name",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "SNI / cert-SAN match target (required when --client-cert is set)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "List all sessions across the mesh.\n\nA session whose node restarted while it ran, or whose node lost its host\nlease, is listed as INTERRUPTED. It is not running, refuses input, and is\nnot re-hosted. Start a new session, and remove the interrupted one with\n'sonny mesh terminate <session-id>'.\n\nExample:\n  # List active sessions\n  sonny mesh sessions\n\n  # List all sessions including completed\n  sonny mesh sessions --all\n\nUsage:\n  sonny mesh sessions [flags]\n\nFlags:\n  -a, --all                          show all sessions including completed\n  -h, --help                         help for sessions\n      --isolation-assurance string   filter by achieved assurance\n      --isolation-backend string     filter by achieved backend\n      --isolation-state string       filter by isolation verification state\n      --search string                filter by session, pack, model, provider, or node text\n      --sort string                  sort by updated, assurance, backend, or isolation-state (default \"updated\")\n\nGlobal Flags:\n      --analysis-json string     versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --client-ca string         CA bundle file used to verify the server cert\n      --client-cert string       client TLS certificate file (PEM) for mTLS-protected mesh endpoints\n      --client-key string        client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)\n      --client-key-pin string    PIN file for PKCS#11 client key (optional)\n      --config string            config file (default: .sonny.yaml in working directory)\n      --debug                    enable debug mode\n      --dev-insecure-transport   DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)\n      --endpoint string          mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)\n      --log-format string        log format: text|json (default \"text\")\n      --log-level string         log level: debug|info|warn|error (default \"warn\")\n  -m, --model string             model to use (overrides pack default)\n  -p, --provider string          LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations       suppress schema and legacy recipe-name deprecation warnings\n      --server-name string       SNI / cert-SAN match target (required when --client-cert is set)\n  -C, --workdir string           working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny mesh terminate",
      "path": [
        "mesh",
        "terminate"
      ],
      "summary": "Terminate one or many mesh sessions",
      "usage": "  sonny mesh terminate [session-id] [flags]",
      "aliases": [
        "terminate",
        "kill",
        "stop"
      ],
      "children": [],
      "flags": [
        {
          "name": "--all",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "terminate every matching session (requires --node or --all-nodes)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--all-nodes",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "with --all, terminate sessions on every node",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--force",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "force terminate without graceful shutdown",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for terminate",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--node",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "node ID for --all (terminates all sessions on this node)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--reason",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "reason for termination",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--yes",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "skip the interactive confirm for --all or --all-nodes",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-ca",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "CA bundle file used to verify the server cert",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-cert",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS certificate file (PEM) for mTLS-protected mesh endpoints",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key-pin",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "PIN file for PKCS#11 client key (optional)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--dev-insecure-transport",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--endpoint",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--server-name",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "SNI / cert-SAN match target (required when --client-cert is set)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Terminate a running session.\n\nSession IDs may be supplied as an 8-character (or longer) unique\nprefix; the prefix is expanded via ListSessions and rejected when\nzero or >1 sessions match.\n\nExamples:\n  # Terminate one session by full ID or unique prefix\n  sonny mesh terminate abc123\n\n  # Terminate every session on a specific node\n  sonny mesh terminate --node worker-1 --all\n\n  # Terminate every session everywhere (requires --all and --all-nodes)\n  sonny mesh terminate --all --all-nodes\n\nUsage:\n  sonny mesh terminate [session-id] [flags]\n\nAliases:\n  terminate, kill, stop\n\nFlags:\n      --all             terminate every matching session (requires --node or --all-nodes)\n      --all-nodes       with --all, terminate sessions on every node\n      --force           force terminate without graceful shutdown\n  -h, --help            help for terminate\n      --node string     node ID for --all (terminates all sessions on this node)\n      --reason string   reason for termination\n      --yes             skip the interactive confirm for --all or --all-nodes\n\nGlobal Flags:\n      --analysis-json string     versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --client-ca string         CA bundle file used to verify the server cert\n      --client-cert string       client TLS certificate file (PEM) for mTLS-protected mesh endpoints\n      --client-key string        client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)\n      --client-key-pin string    PIN file for PKCS#11 client key (optional)\n      --config string            config file (default: .sonny.yaml in working directory)\n      --debug                    enable debug mode\n      --dev-insecure-transport   DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)\n      --endpoint string          mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)\n      --log-format string        log format: text|json (default \"text\")\n      --log-level string         log level: debug|info|warn|error (default \"warn\")\n  -m, --model string             model to use (overrides pack default)\n  -p, --provider string          LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations       suppress schema and legacy recipe-name deprecation warnings\n      --server-name string       SNI / cert-SAN match target (required when --client-cert is set)\n  -C, --workdir string           working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny mesh transfer",
      "path": [
        "mesh",
        "transfer"
      ],
      "summary": "Transfer a session to another node",
      "usage": "  sonny mesh transfer <session-id> <target-node> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--force",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "force transfer even if session is active",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for transfer",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-ca",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "CA bundle file used to verify the server cert",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-cert",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS certificate file (PEM) for mTLS-protected mesh endpoints",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--client-key-pin",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "PIN file for PKCS#11 client key (optional)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--dev-insecure-transport",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--endpoint",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--server-name",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "SNI / cert-SAN match target (required when --client-cert is set)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Transfer a running session to another mesh node.\n\nThe session state is serialized, transferred, and resumed on the target node.\nThis is useful for load balancing or moving sessions closer to resources.\n\nExample:\n  sonny mesh transfer abc123 worker-2\n\nUsage:\n  sonny mesh transfer <session-id> <target-node> [flags]\n\nFlags:\n      --force   force transfer even if session is active\n  -h, --help    help for transfer\n\nGlobal Flags:\n      --analysis-json string     versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --client-ca string         CA bundle file used to verify the server cert\n      --client-cert string       client TLS certificate file (PEM) for mTLS-protected mesh endpoints\n      --client-key string        client TLS key (PEM filesystem path OR pkcs11: URI per RFC 7512)\n      --client-key-pin string    PIN file for PKCS#11 client key (optional)\n      --config string            config file (default: .sonny.yaml in working directory)\n      --debug                    enable debug mode\n      --dev-insecure-transport   DEVELOPMENT ONLY: allow plaintext, unauthenticated mesh channels on loopback addresses (equivalent to SONNY_MESH_INSECURE_DEV_PROFILE=i-accept-plaintext-mesh-not-for-production)\n      --endpoint string          mesh gRPC endpoint (default: mesh.endpoint config, SONNY_MESH_ADDR, or localhost:50052)\n      --log-format string        log format: text|json (default \"text\")\n      --log-level string         log level: debug|info|warn|error (default \"warn\")\n  -m, --model string             model to use (overrides pack default)\n  -p, --provider string          LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations       suppress schema and legacy recipe-name deprecation warnings\n      --server-name string       SNI / cert-SAN match target (required when --client-cert is set)\n  -C, --workdir string           working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny models",
      "path": [
        "models"
      ],
      "summary": "Inspect and manage model categories, fitness, and pricing",
      "usage": "  sonny models [command]",
      "aliases": [],
      "children": [
        {
          "name": "bakeoff",
          "summary": "Measure every model of a source on the same eval cases and promote the measured winner"
        },
        {
          "name": "default",
          "summary": "Show or clear the remembered default model"
        },
        {
          "name": "detail",
          "summary": "Show one model with its per-category tuning, evidence, and capability decisions"
        },
        {
          "name": "disable",
          "summary": "Turn a model source off for this profile without deleting its definition or credential"
        },
        {
          "name": "enable",
          "summary": "Turn a disabled model source back on for this profile"
        },
        {
          "name": "fitness",
          "summary": "View or override observed per-category model fitness"
        },
        {
          "name": "list",
          "summary": "Show each category's winning source/model under the routing policy"
        },
        {
          "name": "prices",
          "summary": "Show cached model pricing; --refresh fetches from source pricing endpoints"
        }
      ],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for models",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Inspect the merged model catalog (models.yaml plus models.d/*.yaml),\nsee which source/model wins each category under the active routing\npolicy, refresh cached endpoint pricing, and view or override the\nruntime fitness overlay used for category rotation.\n\nUsage:\n  sonny models [command]\n\nAvailable Commands:\n  bakeoff     Measure every model of a source on the same eval cases and promote the measured winner\n  default     Show or clear the remembered default model\n  detail      Show one model with its per-category tuning, evidence, and capability decisions\n  disable     Turn a model source off for this profile without deleting its definition or credential\n  enable      Turn a disabled model source back on for this profile\n  fitness     View or override observed per-category model fitness\n  list        Show each category's winning source/model under the routing policy\n  prices      Show cached model pricing; --refresh fetches from source pricing endpoints\n\nFlags:\n  -h, --help   help for models\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n\nUse \"sonny models [command] --help\" for more information about a command.\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny models bakeoff",
      "path": [
        "models",
        "bakeoff"
      ],
      "summary": "Measure every model of a source on the same eval cases and promote the measured winner",
      "usage": "  sonny models bakeoff [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--apply",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "models.d drop-in to write its own source's measured fitness into",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--apply-scope",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "all: refuse when a model declaring the category was not measured; measured: write only this run's models, keep prior measurements and demote unmeasured priors below the lowest measured fitness (default \"all\")",
          "default_as_displayed": "\"all\"",
          "group": "Flags"
        },
        {
          "name": "--arm-case-concurrency",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "at most N cases in flight per arm (source/model), the SAME for every arm, so a slow model cannot take the shared slots and overload its own deployment into timeouts; 0 = unlimited (default 4)",
          "default_as_displayed": "4",
          "group": "Flags"
        },
        {
          "name": "--candidates",
          "shorthand": null,
          "type_as_displayed": "strings",
          "description": "models to measure, as model or source/model (default: every chat model of every --source)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--case-concurrency",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "cases in flight across ALL passes (a case waits for a slot before its timeout starts); 1 runs each pass's cases serially (default 1)",
          "default_as_displayed": "1",
          "group": "Flags"
        },
        {
          "name": "--category",
          "shorthand": null,
          "type_as_displayed": "strings",
          "description": "category to measure (required; repeatable or comma-separated -- categories sharing one measurement are measured once)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--concurrency",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "passes run concurrently across models and repeats (default 1)",
          "default_as_displayed": "1",
          "group": "Flags"
        },
        {
          "name": "--confidence",
          "shorthand": null,
          "type_as_displayed": "float",
          "description": "Wilson interval confidence in (0,1) (default 0.95)",
          "default_as_displayed": "0.95",
          "group": "Flags"
        },
        {
          "name": "--dir",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "additional pack directory the --file pack's includes/parent resolve against (like pack eval --dir)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--exclude",
          "shorthand": null,
          "type_as_displayed": "strings",
          "description": "models to leave out, as model or source/model",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--file",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "pack YAML whose prompt is evaluated (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for bakeoff",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--infra-retries",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "retries of a case that fails on infrastructure (429, 5xx, transport) before it is dropped for that arm (default 4)",
          "default_as_displayed": "4",
          "group": "Flags"
        },
        {
          "name": "--judge-model",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "grade every arm's judge-block cases with this shared judge (model or source/model; trusted); an ordered comma list primary,fallback,... re-asks a judge turn that fails on one judge (provider error such as a content-filter 400, timeout, refusal, or a reply still unreadable after its resample) on the next, the evidence's judge records the whole chain and the report counts judge_fallbacks per arm; unset, judged cases error for every arm alike",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--list-arms",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "print the (source, model, effort) arms and their request params, then exit without calling a model",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--max-infra-drop",
          "shorthand": null,
          "type_as_displayed": "float",
          "description": "largest share of an arm's case runs that may be dropped for infrastructure before --apply/--measured-out are refused (default 0.05)",
          "default_as_displayed": "0.05",
          "group": "Flags"
        },
        {
          "name": "--max-output-limits",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "JSON/YAML map of model -> output-token limit; a category's carried max_tokens never exceeds it (unknown models are carried unclamped)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--max-output-tokens",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "maximum tokens in each evaluated case response for an arm whose catalog row declares no max_tokens (a declared one is the routed cap and is used as is); 0 disables (default 4096)",
          "default_as_displayed": "4096",
          "group": "Flags"
        },
        {
          "name": "--measured-out",
          "shorthand": null,
          "type_as_displayed": "stringArray",
          "description": "SOURCE=FILE: record SOURCE's measured models into a measured overlay file (repeatable)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--min-samples",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "models with fewer measured samples are excluded (fitness 0) (default 1)",
          "default_as_displayed": "1",
          "group": "Flags"
        },
        {
          "name": "--models",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "primary catalog file (default: models.yaml discovery)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--out",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "write the JSON bakeoff result to this file",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--reasoning-capabilities",
          "shorthand": null,
          "type_as_displayed": "auto",
          "description": "reasoning-capability declarations file (sonny.reasoning-capabilities/v1, repeatable) that auto enumerates efforts from",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--reasoning-efforts",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "reasoning-effort arms per model: auto (every effort --reasoning-capabilities declares for it), off (one arm at the row's routed config), or a comma list (e.g. none,low,high) for every model (default \"auto\")",
          "default_as_displayed": "\"auto\"",
          "group": "Flags"
        },
        {
          "name": "--repeat",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "independent passes per model over every case (default 3)",
          "default_as_displayed": "3",
          "group": "Flags"
        },
        {
          "name": "--source",
          "shorthand": null,
          "type_as_displayed": "strings",
          "description": "catalog source(s) whose models are measured, repeatable or comma-separated (default: the source serving the category's current winner)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--source-case-concurrency",
          "shorthand": null,
          "type_as_displayed": "stringArray",
          "description": "SOURCE=N: at most N cases in flight against SOURCE across all its arms (repeatable), so one self-hosted server is not overloaded",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--suite-file",
          "shorthand": null,
          "type_as_displayed": "stringArray",
          "description": "eval suite YAML (repeatable; default: the pack's inline pack_eval_suite)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--timeout-as-failure",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "opt in to scoring a case the model did not answer within its timeout_seconds as that model's failure (never retried); by default response time is not measured: a timeout is retried with --timeout-retry-seconds, then dropped for that arm",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--timeout-retry-seconds",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "per-attempt budget, in seconds, for retrying a case that timed out (0 keeps the case's own timeout_seconds) (default 900)",
          "default_as_displayed": "900",
          "group": "Flags"
        },
        {
          "name": "--with-inline",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "also run the pack's inline pack_eval_suite alongside --suite-file",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "bakeoff runs the SAME recipe eval cases (--suite-file, or the pack's inline\npack_eval_suite) against every chat model of one or more catalog sources\n(--source, repeatable or comma-separated), --repeat times each, and ranks\nall of them in ONE table by the Wilson lower bound of their pass rate. Every\nmodel is scored by the same rule: there is no incumbent, prior or baseline\ninput, and errors count as failures for everyone. By default every chat\nmodel of each source that serves at least one category is enrolled, so new\nfleet models are measured without anyone adding them by hand. A\n--candidates id served by more than one source must be written source/model.\n\n--apply <models.d file> writes each measured model of that file's own\nsource(s) with its fitness, a complete evidence block and a tuning_ref\n(comments preserved). It refuses when a model declares the category there\nbut was not measured, so an unmeasured prior can never outrank measured\nmodels. --apply-scope measured (the default is all) instead writes only the\nmodels measured in this run and leaves every other declarer of the category\nalone when it already carries a prior measurement (reported as \"kept: prior\nmeasurement <tuning_ref>\"); an unmeasured prior is demoted strictly below the\ncategory's lowest measured fitness in the file, without evidence, and\nreported loudly. That is how a degraded model is --exclude'd from a\npromotion run and later re-measured alone (--candidates <model>) and merged.\nEvidence records the suite digest and judge in its evaluator; a kept\nmeasurement taken on another suite, judge or evaluator is merged with a\nWARNING that the two are not comparable. The output cap belongs to the category's workload: a measured entry\nwhose effective max_tokens would fall below the category's previous winner's\ngains settings.max_tokens at that cap (clamped by --max-output-limits).\n--measured-out SOURCE=FILE records SOURCE's measured models into a\nmeasured overlay (version 1, entries of model/category/fitness/tuning_ref/\nevidence) for a source whose drop-in is owned elsewhere. Neither write\nhappens when a model errored at the provider on every case. The exception\nis an effort arm the provider refused with a 400/422 configuration\nrejection on every case run: that model does not support that effort's\nconfiguration, so the arm is reported as UNSUPPORTED (stderr, the text\ntable and the report's \"unsupported\" list, with the provider's message),\nleft out of the ranking, and the other arms are still written.\n\n--category may be repeated: categories that share one measurement (same\nrecipe and suites) are measured once and ranked once per category, with\nper-category evidence; --apply/--measured-out write every listed category\nand --out holds a JSON array of results. Fitness measures reply quality\nonly: response time changes over time, so a case the model does not answer\nwithin its timeout_seconds is retried with --timeout-retry-seconds and, if it\nstill times out, dropped for that arm (--timeout-as-failure opts in to\nscoring it as a failure instead). Any other infrastructure failure (a provider 429,\n5xx, a transport error) is retried (--infra-retries; a 429 backs off on the\nrate-limited schedule) and, if it still fails, dropped for THAT arm only and\nreported as infra-dropped (the report's infra_drop_reasons counts each\narm's drops by reason_code). An unreadable or refusing shared judge, or an\nunresolved outcome over real reply text, is handled the same way.\n--judge-model may be an ordered comma list (primary,fallback,...): a judge\nturn that fails on one judge -- a provider error such as a content-filter\n400, a timeout, a refusal, or a reply still unreadable after its resample\n-- is re-asked on the next, and only when every judge fails is the case\nrun dropped. The evidence's judge records the whole chain, and the\nreport's judge_fallbacks counts each arm's case runs that needed one. An empty\nreply (no text, no provider or refusal signal) is retried too, but if it is\nstill empty it is that model's failure (empty_reply), never dropped. An arm\nwhose dropped share exceeds\n--max-infra-drop refuses --apply/--measured-out (--out is still written).\n--arm-case-concurrency gives every arm the same cap on cases in flight, so a\nslow model cannot take the shared slots and overload its own deployment;\n--source-case-concurrency caps the cases in flight against one source, so a\nsingle self-hosted server is not overloaded.\n\nReasoning effort is measured, not assumed: an arm is (source, model,\neffort). --reasoning-efforts auto (the default) measures each model at every\neffort its --reasoning-capabilities declaration lists (a model with no\ndeclared control keeps one arm at its row's routed config); off measures\none arm per model; a comma list measures those efforts on every model. Each\narm runs the category row's params with reasoning_effort set to its effort,\nthrough the catalog request path routing uses. A model's result for a\ncategory is its best arm; --apply writes that effort as the category's own\nsettings.reasoning_effort, so one row can carry different efforts for\ndifferent categories. Arms multiply the cost: models x efforts x cases x\n--repeat. --list-arms prints the arms without calling a model.\n\nUsage:\n  sonny models bakeoff [flags]\n\nFlags:\n      --apply string                          models.d drop-in to write its own source's measured fitness into\n      --apply-scope string                    all: refuse when a model declaring the category was not measured; measured: write only this run's models, keep prior measurements and demote unmeasured priors below the lowest measured fitness (default \"all\")\n      --arm-case-concurrency int              at most N cases in flight per arm (source/model), the SAME for every arm, so a slow model cannot take the shared slots and overload its own deployment into timeouts; 0 = unlimited (default 4)\n      --candidates strings                    models to measure, as model or source/model (default: every chat model of every --source)\n      --case-concurrency int                  cases in flight across ALL passes (a case waits for a slot before its timeout starts); 1 runs each pass's cases serially (default 1)\n      --category strings                      category to measure (required; repeatable or comma-separated -- categories sharing one measurement are measured once)\n      --concurrency int                       passes run concurrently across models and repeats (default 1)\n      --confidence float                      Wilson interval confidence in (0,1) (default 0.95)\n      --dir string                            additional pack directory the --file pack's includes/parent resolve against (like pack eval --dir)\n      --exclude strings                       models to leave out, as model or source/model\n      --file string                           pack YAML whose prompt is evaluated (required)\n      --format string                         text|json (default \"text\")\n  -h, --help                                  help for bakeoff\n      --infra-retries int                     retries of a case that fails on infrastructure (429, 5xx, transport) before it is dropped for that arm (default 4)\n      --judge-model string                    grade every arm's judge-block cases with this shared judge (model or source/model; trusted); an ordered comma list primary,fallback,... re-asks a judge turn that fails on one judge (provider error such as a content-filter 400, timeout, refusal, or a reply still unreadable after its resample) on the next, the evidence's judge records the whole chain and the report counts judge_fallbacks per arm; unset, judged cases error for every arm alike\n      --list-arms                             print the (source, model, effort) arms and their request params, then exit without calling a model\n      --max-infra-drop float                  largest share of an arm's case runs that may be dropped for infrastructure before --apply/--measured-out are refused (default 0.05)\n      --max-output-limits string              JSON/YAML map of model -> output-token limit; a category's carried max_tokens never exceeds it (unknown models are carried unclamped)\n      --max-output-tokens int                 maximum tokens in each evaluated case response for an arm whose catalog row declares no max_tokens (a declared one is the routed cap and is used as is); 0 disables (default 4096)\n      --measured-out stringArray              SOURCE=FILE: record SOURCE's measured models into a measured overlay file (repeatable)\n      --min-samples int                       models with fewer measured samples are excluded (fitness 0) (default 1)\n      --models string                         primary catalog file (default: models.yaml discovery)\n      --out string                            write the JSON bakeoff result to this file\n      --reasoning-capabilities auto           reasoning-capability declarations file (sonny.reasoning-capabilities/v1, repeatable) that auto enumerates efforts from\n      --reasoning-efforts string              reasoning-effort arms per model: auto (every effort --reasoning-capabilities declares for it), off (one arm at the row's routed config), or a comma list (e.g. none,low,high) for every model (default \"auto\")\n      --repeat int                            independent passes per model over every case (default 3)\n      --source strings                        catalog source(s) whose models are measured, repeatable or comma-separated (default: the source serving the category's current winner)\n      --source-case-concurrency stringArray   SOURCE=N: at most N cases in flight against SOURCE across all its arms (repeatable), so one self-hosted server is not overloaded\n      --suite-file stringArray                eval suite YAML (repeatable; default: the pack's inline pack_eval_suite)\n      --timeout-as-failure                    opt in to scoring a case the model did not answer within its timeout_seconds as that model's failure (never retried); by default response time is not measured: a timeout is retried with --timeout-retry-seconds, then dropped for that arm\n      --timeout-retry-seconds int             per-attempt budget, in seconds, for retrying a case that timed out (0 keeps the case's own timeout_seconds) (default 900)\n      --with-inline                           also run the pack's inline pack_eval_suite alongside --suite-file\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny models default",
      "path": [
        "models",
        "default"
      ],
      "summary": "Show or clear the remembered default model",
      "usage": "  sonny models default [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--clear",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "remove the remembered default model",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for default",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--show",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "print the current default model (if any)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Manage the model sonny starts on when a run names none (the default\nset with Tab in /models).\n\nExamples:\n  sonny models default --show    # print the current default (if any)\n  sonny models default --clear   # forget the default model\n\nClearing removes only the default model; a default provider is kept.\nWith no default, startup picks the highest-fitness model for the\npack's default profile category.\n\nUsage:\n  sonny models default [flags]\n\nFlags:\n      --clear   remove the remembered default model\n  -h, --help    help for default\n      --show    print the current default model (if any)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny models detail",
      "path": [
        "models",
        "detail"
      ],
      "summary": "Show one model with its per-category tuning, evidence, and capability decisions",
      "usage": "  sonny models detail <source>/<model> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "deprecated alias for --json (text|json); use --json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for detail",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "emit the machine-readable envelope instead of the text view",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--models",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "primary catalog file (default: models.yaml discovery)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Inspect a single configured (source, model) deployment: one model\nheader followed by one block per category it serves, each carrying the\ncategory's tuning reference, effective parameters and config digest,\ndeclared and observed fitness provenance, and \u2014 when the category\nrequests a reasoning value \u2014 the deployment's capability decision for it\n(supported, or unsupported with the deployment's actual supported values\nand declared aliases).\n\nUsage:\n  sonny models detail <source>/<model> [flags]\n\nFlags:\n      --format string   deprecated alias for --json (text|json); use --json (default \"text\")\n  -h, --help            help for detail\n      --json            emit the machine-readable envelope instead of the text view\n      --models string   primary catalog file (default: models.yaml discovery)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny models disable",
      "path": [
        "models",
        "disable"
      ],
      "summary": "Turn a model source off for this profile without deleting its definition or credential",
      "usage": "  sonny models disable <source id> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for disable",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "A disabled source keeps its definition and its stored credential but serves\nno model: routing, the model pickers and failover skip it until it is\nenabled again. The preference is recorded per profile in\ndisabled-sources.yaml beside models.yaml. A source a signed machine catalog\n(organization provisioning) defines is managed and cannot be turned off.\n\nUsage:\n  sonny models disable <source id> [flags]\n\nFlags:\n  -h, --help   help for disable\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny models enable",
      "path": [
        "models",
        "enable"
      ],
      "summary": "Turn a disabled model source back on for this profile",
      "usage": "  sonny models enable <source id> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for enable",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "A disabled source keeps its definition and its stored credential but serves\nno model: routing, the model pickers and failover skip it until it is\nenabled again. The preference is recorded per profile in\ndisabled-sources.yaml beside models.yaml. A source a signed machine catalog\n(organization provisioning) defines is managed and cannot be turned off.\n\nUsage:\n  sonny models enable <source id> [flags]\n\nFlags:\n  -h, --help   help for enable\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny models fitness",
      "path": [
        "models",
        "fitness"
      ],
      "summary": "View or override observed per-category model fitness",
      "usage": "  sonny models fitness [command]",
      "aliases": [],
      "children": [
        {
          "name": "set",
          "summary": "Record an explicit operator fitness override (0..1)"
        },
        {
          "name": "show",
          "summary": "List recorded fitness observations"
        }
      ],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for fitness",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "View or override observed per-category model fitness\n\nUsage:\n  sonny models fitness [command]\n\nAvailable Commands:\n  set         Record an explicit operator fitness override (0..1)\n  show        List recorded fitness observations\n\nFlags:\n  -h, --help   help for fitness\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n\nUse \"sonny models fitness [command] --help\" for more information about a command.\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny models fitness set",
      "path": [
        "models",
        "fitness",
        "set"
      ],
      "summary": "Record an explicit operator fitness override (0..1)",
      "usage": "  sonny models fitness set <category> <source> <model> <score> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for set",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--models",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "primary catalog file (default: models.yaml discovery)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Record an explicit operator fitness override (0..1)\n\nUsage:\n  sonny models fitness set <category> <source> <model> <score> [flags]\n\nFlags:\n  -h, --help            help for set\n      --models string   primary catalog file (default: models.yaml discovery)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny models fitness show",
      "path": [
        "models",
        "fitness",
        "show"
      ],
      "summary": "List recorded fitness observations",
      "usage": "  sonny models fitness show [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for show",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "List recorded fitness observations\n\nUsage:\n  sonny models fitness show [flags]\n\nFlags:\n  -h, --help   help for show\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny models list",
      "path": [
        "models",
        "list"
      ],
      "summary": "Show each category's winning source/model under the routing policy",
      "usage": "  sonny models list [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "deprecated alias for --json (text|json); use --json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for list",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "emit the machine-readable envelope instead of the table",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--models",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "primary catalog file (default: models.yaml discovery)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--no-check",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "skip probing source endpoints for model availability",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Show each category's winning source/model under the routing policy\n\nUsage:\n  sonny models list [flags]\n\nFlags:\n      --format string   deprecated alias for --json (text|json); use --json (default \"text\")\n  -h, --help            help for list\n      --json            emit the machine-readable envelope instead of the table\n      --models string   primary catalog file (default: models.yaml discovery)\n      --no-check        skip probing source endpoints for model availability\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny models prices",
      "path": [
        "models",
        "prices"
      ],
      "summary": "Show cached model pricing; --refresh fetches from source pricing endpoints",
      "usage": "  sonny models prices [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for prices",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--models",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "primary catalog file (default: models.yaml discovery)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--refresh",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "fetch fresh pricing from each source's pricing_url",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Show cached model pricing; --refresh fetches from source pricing endpoints\n\nUsage:\n  sonny models prices [flags]\n\nFlags:\n  -h, --help            help for prices\n      --models string   primary catalog file (default: models.yaml discovery)\n      --refresh         fetch fresh pricing from each source's pricing_url\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny policy",
      "path": [
        "policy"
      ],
      "summary": "Validate, inspect and control DPolicy decision policies",
      "usage": "  sonny policy [command]",
      "aliases": [],
      "children": [
        {
          "name": "eval",
          "summary": "Replay recorded or fixture observations through a policy without running anything"
        },
        {
          "name": "explain",
          "summary": "Explain a decision: its feature values, predicate results and artifact evidence"
        },
        {
          "name": "promote",
          "summary": "Validate a policy and make it the one new sessions run"
        },
        {
          "name": "proposals",
          "summary": "Report the proposal arm's cost and failure metrics"
        },
        {
          "name": "propose",
          "summary": "Check a model-written policy and hand it to the evolution inbox"
        },
        {
          "name": "registry",
          "summary": "Publish, qualify, review, promote and select registry policies"
        },
        {
          "name": "resolve",
          "summary": "Settle an effect parked for review with the outcome you established"
        },
        {
          "name": "resume",
          "summary": "Resume a stopped policy (or restore a revoked capability)"
        },
        {
          "name": "rollback",
          "summary": "Restore the previously promoted policy for new sessions"
        },
        {
          "name": "show",
          "summary": "Show the policy configuration, activation and the loaded policy"
        },
        {
          "name": "status",
          "summary": "Show every session's decisions, costs, skips and pending effects"
        },
        {
          "name": "stop",
          "summary": "Stop the policy (or revoke one capability) at the next decision boundary"
        },
        {
          "name": "validate",
          "summary": "Load a policy in the worker and check it against Sonny's actions and features"
        }
      ],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for policy",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "A decision policy (DPolicy) chooses the next semantic action of an agent\nturn -- inspect, gather, test, revise, review -- or finishes or abstains.\nSonny owns every effect: the policy names an action, and Sonny runs it\nthrough its own model routing, tool admission, approval and dispatch.\nConfigure it with the policy: section of .sonny.yaml; see docs/POLICIES.md.\n\nUsage:\n  sonny policy [command]\n\nAvailable Commands:\n  eval        Replay recorded or fixture observations through a policy without running anything\n  explain     Explain a decision: its feature values, predicate results and artifact evidence\n  promote     Validate a policy and make it the one new sessions run\n  proposals   Report the proposal arm's cost and failure metrics\n  propose     Check a model-written policy and hand it to the evolution inbox\n  registry    Publish, qualify, review, promote and select registry policies\n  resolve     Settle an effect parked for review with the outcome you established\n  resume      Resume a stopped policy (or restore a revoked capability)\n  rollback    Restore the previously promoted policy for new sessions\n  show        Show the policy configuration, activation and the loaded policy\n  status      Show every session's decisions, costs, skips and pending effects\n  stop        Stop the policy (or revoke one capability) at the next decision boundary\n  validate    Load a policy in the worker and check it against Sonny's actions and features\n\nFlags:\n  -h, --help   help for policy\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n\nUse \"sonny policy [command] --help\" for more information about a command.\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny policy eval",
      "path": [
        "policy",
        "eval"
      ],
      "summary": "Replay recorded or fixture observations through a policy without running anything",
      "usage": "  sonny policy eval [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "policy file format: source or ast_json (default \"source\")",
          "default_as_displayed": "\"source\"",
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for eval",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "print JSON",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--observations",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "replay a fixture of observation frames, one per line",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--policy",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "policy file (default: the configured source)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--recipe",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "replay the decision_policy a session of this pack runs, instead of a policy file",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--recipe-dir",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "with --pack: load packs from this directory instead of the configured tiers",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--session",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "replay this session's recorded decisions",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--target-profile",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "with --pack: the catalog target profile the session runs on (id or id@revision), resolved with catalog defaults and no provider params",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--target-profile-revision",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "with --pack: pin the target profile's revision",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--target-profiles",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "with --pack: the target-profile catalog (default: the configured one)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--variant",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "with --pack: the model variant the session installed (default: none, the base contract)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "eval decides each observation again with a policy (--policy, default the\nconfigured one) and reports what it decides. With --session it replays the\nsession's recorded decisions and says whether each agrees; with\n--observations it reads a hermetic fixture: one dpolicy-observation/0.1\nframe per line. A frame under another feature schema is reported as\nschema_mismatch, never decided. Nothing is dispatched.\n\nWith --recipe it replays instead the decision policy a session of that recipe\nruns: the pack's decision_policy composed for --variant on --target-profile\n(the catalog profile, with catalog defaults and no provider params) and\nloaded as a new session loads it, exactly as show composes it. --recipe and\n--policy are exclusive. With --session, every record --recipe replays must\nname the closure --recipe composes (show --session prints it), so --recipe\nnever replays a session's records through a closure the session did not\nrun: another closure is refused (pack_closure_mismatch) once the pack's\nmodules are read and verified, before the worker loads the policy. A\nqualified closure's model profile is its target's, so its records replay\nonly on the target they ran on: a record of a session that ran on another\ntarget than the catalog-default one --recipe composes on, such as one whose\nprovider profile set params, is refused (pack_target_mismatch), naming\nboth targets. An unqualified closure replays on any target.\n\nUsage:\n  sonny policy eval [flags]\n\nFlags:\n      --format string                    policy file format: source or ast_json (default \"source\")\n  -h, --help                             help for eval\n      --json                             print JSON\n      --observations string              replay a fixture of observation frames, one per line\n      --policy string                    policy file (default: the configured source)\n      --recipe string                    replay the decision_policy a session of this pack runs, instead of a policy file\n      --recipe-dir string                with --pack: load packs from this directory instead of the configured tiers\n      --session string                   replay this session's recorded decisions\n      --target-profile string            with --pack: the catalog target profile the session runs on (id or id@revision), resolved with catalog defaults and no provider params\n      --target-profile-revision string   with --pack: pin the target profile's revision\n      --target-profiles string           with --pack: the target-profile catalog (default: the configured one)\n      --variant string                   with --pack: the model variant the session installed (default: none, the base contract)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny policy explain",
      "path": [
        "policy",
        "explain"
      ],
      "summary": "Explain a decision: its feature values, predicate results and artifact evidence",
      "usage": "  sonny policy explain [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for explain",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "print JSON",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--key",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "decision key (default: the latest decision)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--session",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "session id (default: the only session with policy state)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Explain a decision: its feature values, predicate results and artifact evidence\n\nUsage:\n  sonny policy explain [flags]\n\nFlags:\n  -h, --help             help for explain\n      --json             print JSON\n      --key string       decision key (default: the latest decision)\n      --session string   session id (default: the only session with policy state)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny policy promote",
      "path": [
        "policy",
        "promote"
      ],
      "summary": "Validate a policy and make it the one new sessions run",
      "usage": "  sonny policy promote <file> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "policy file format: source or ast_json (default \"source\")",
          "default_as_displayed": "\"source\"",
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for promote",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--mode",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "shadow or active (default \"shadow\")",
          "default_as_displayed": "\"shadow\"",
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "promote loads the policy, checks it against Sonny's actions and features,\nand records it, pinned by its digest, as the activation new sessions use\nwherever the configuration names the source it replaces (this workspace's\npolicy.source). A session that already runs a policy keeps it; one that\nfell back at the workspace probe or the load tries the promoted policy at\nits next turn. The configured mode is the ceiling of the promoted one.\nrollback restores the previous activation.\n\nUsage:\n  sonny policy promote <file> [flags]\n\nFlags:\n      --format string   policy file format: source or ast_json (default \"source\")\n  -h, --help            help for promote\n      --mode string     shadow or active (default \"shadow\")\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny policy proposals",
      "path": [
        "policy",
        "proposals"
      ],
      "summary": "Report the proposal arm's cost and failure metrics",
      "usage": "  sonny policy proposals [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for proposals",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "print JSON",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "proposals reads the proposal ledger of the policy state directory and\nreports what an experiment report charges to the proposal arm: how many\nproposals were written, how many the check rejected and with which codes,\nand the tokens they cost in all and per checked proposal. A proposal whose\ncost was not given is counted apart and left out of the cost figures,\nnever counted as free. A damaged ledger line is counted, not hidden.\n\nUsage:\n  sonny policy proposals [flags]\n\nFlags:\n  -h, --help   help for proposals\n      --json   print JSON\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny policy propose",
      "path": [
        "policy",
        "propose"
      ],
      "summary": "Check a model-written policy and hand it to the evolution inbox",
      "usage": "  sonny policy propose <file|-> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--author-model",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "the model that wrote the policy (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--cost-tokens",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "the tokens the proposal cost to produce, charged to the proposal arm (unset: the cost is recorded as unknown)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for propose",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "print JSON",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--template",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "the authoring prompt, as pack-id@version (for example policy-author@1)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "propose checks a policy a model wrote (the file, or standard input for -)\nwith the host's own load -- the worker compiles it and Sonny's host gate\nchecks its actions and features -- then writes it, checked or rejected,\nto the proposal inbox (dpolicy-proposal-inbox/1, on the llm channel) of\nthe policy state directory and records it in the proposal ledger with\nthe tokens it cost (--cost-tokens; without it the cost is recorded as\nunknown, never as free). \"checked\" means the worker compiled it and\nSonny's host gate admits it. A recipe contract's gate (its allow-list and\nqualification) is not applied, so a session in recipe mode may still\nrefuse it. A rejected proposal prints one bounded diagnostic -- the\nworker's code and stage (or its limit), or the features and actions\nSonny's gate refused, with at most 160 bytes of detail -- and exits\ndenied_policy, so an authoring loop can retry. A check that could not\nrun writes and records nothing: it exits unavailable when the worker\ncould not judge the policy, and config when Sonny's own catalog or\nextractors fail. A proposal is never a review and never activates a\npolicy: an evolution job evaluates the inbox, and only an operator\npromotes. An inbox holding 10000 proposals takes no more until a job\ndrains it.\n\nUsage:\n  sonny policy propose <file|-> [flags]\n\nFlags:\n      --author-model string   the model that wrote the policy (required)\n      --cost-tokens int       the tokens the proposal cost to produce, charged to the proposal arm (unset: the cost is recorded as unknown)\n  -h, --help                  help for propose\n      --json                  print JSON\n      --template string       the authoring prompt, as pack-id@version (for example policy-author@1)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny policy registry",
      "path": [
        "policy",
        "registry"
      ],
      "summary": "Publish, qualify, review, promote and select registry policies",
      "usage": "  sonny policy registry [command]",
      "aliases": [],
      "children": [
        {
          "name": "diff",
          "summary": "Compare two versions' verified statements"
        },
        {
          "name": "list",
          "summary": "List the registry's policy names, or one name's versions"
        },
        {
          "name": "promote",
          "summary": "Move a channel's entry for the name to this version"
        },
        {
          "name": "publish",
          "summary": "Check a canonical AST and its imports on this host, then publish them as a new version"
        },
        {
          "name": "qualify",
          "summary": "Load a version on this host for a model target and record its held-out competence"
        },
        {
          "name": "review",
          "summary": "Replay a reviewer's predicted cases on the version and record the review"
        },
        {
          "name": "revoke",
          "summary": "Revoke a version's policy everywhere, and stop it on this node"
        },
        {
          "name": "rollback",
          "summary": "Restore a channel's previous version of the name"
        },
        {
          "name": "select",
          "summary": "Show what a new session on this host would select from the channel, and why"
        },
        {
          "name": "show",
          "summary": "Show a version: its verified statement, status, competence, reviews and revocations"
        }
      ],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for registry",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "registry works with the policy registry that policy.registry names (its\nbearer credential is SONNY_UPSTREAM_TOKEN). Every read verifies the\nregistry's signatures against policy.registry.trusted_keys, and every\nmodule against its digest, before anything is shown or loaded. A version\nis immutable: qualify, review, promote and revoke add records, and\nnothing is rewritten. See docs/POLICIES.md#registry-mode.\n\nUsage:\n  sonny policy registry [command]\n\nAvailable Commands:\n  diff        Compare two versions' verified statements\n  list        List the registry's policy names, or one name's versions\n  promote     Move a channel's entry for the name to this version\n  publish     Check a canonical AST and its imports on this host, then publish them as a new version\n  qualify     Load a version on this host for a model target and record its held-out competence\n  review      Replay a reviewer's predicted cases on the version and record the review\n  revoke      Revoke a version's policy everywhere, and stop it on this node\n  rollback    Restore a channel's previous version of the name\n  select      Show what a new session on this host would select from the channel, and why\n  show        Show a version: its verified statement, status, competence, reviews and revocations\n\nFlags:\n  -h, --help   help for registry\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n\nUse \"sonny policy registry [command] --help\" for more information about a command.\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny policy registry diff",
      "path": [
        "policy",
        "registry",
        "diff"
      ],
      "summary": "Compare two versions' verified statements",
      "usage": "  sonny policy registry diff <name>@<version> <name>@<version> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for diff",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "print JSON",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Compare two versions' verified statements\n\nUsage:\n  sonny policy registry diff <name>@<version> <name>@<version> [flags]\n\nFlags:\n  -h, --help   help for diff\n      --json   print JSON\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny policy registry list",
      "path": [
        "policy",
        "registry",
        "list"
      ],
      "summary": "List the registry's policy names, or one name's versions",
      "usage": "  sonny policy registry list [<name>] [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for list",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "print JSON",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "List the registry's policy names, or one name's versions\n\nUsage:\n  sonny policy registry list [<name>] [flags]\n\nFlags:\n  -h, --help   help for list\n      --json   print JSON\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny policy registry promote",
      "path": [
        "policy",
        "registry",
        "promote"
      ],
      "summary": "Move a channel's entry for the name to this version",
      "usage": "  sonny policy registry promote <name>@<version> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--channel",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "the channel (default: the configured one)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for promote",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--mode",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "shadow or active (default \"shadow\")",
          "default_as_displayed": "\"shadow\"",
          "group": "Flags"
        },
        {
          "name": "--reason",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "why (recorded in the channel's audit)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "promote moves the channel's entry for the version's name to the version,\nat --mode, by compare-and-set on the channel's generation: a move by\nsomeone else meanwhile is refused (conflict), never overwritten. The\nregistry refuses a promotion by the version's author or recalibrator, an\nactive entry for a version that is not trusted (reviewed and qualified),\nand a revoked or deprecated version. New sessions select from the moved\nchannel; a session that runs a policy keeps it.\n\nUsage:\n  sonny policy registry promote <name>@<version> [flags]\n\nFlags:\n      --channel string   the channel (default: the configured one)\n  -h, --help             help for promote\n      --mode string      shadow or active (default \"shadow\")\n      --reason string    why (recorded in the channel's audit)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny policy registry publish",
      "path": [
        "policy",
        "registry",
        "publish"
      ],
      "summary": "Check a canonical AST and its imports on this host, then publish them as a new version",
      "usage": "  sonny policy registry publish <root.ast.json> [<import.ast.json>...] [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--author-model",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "the model that wrote the version, for --source llm",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--category",
          "shorthand": null,
          "type_as_displayed": "strings",
          "description": "a descriptor category (repeatable)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for publish",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--name",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "the policy name",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--recipe",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "the pack closure digest the version belongs to (default: none)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--source",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "authorship: human, or the generator (llm, gan, solver, cart, grammar, mle) (default \"human\")",
          "default_as_displayed": "\"human\"",
          "group": "Flags"
        },
        {
          "name": "--task-scope",
          "shorthand": null,
          "type_as_displayed": "strings",
          "description": "a task the version is meant for (repeatable)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "publish loads the root canonical AST and the modules it imports on the\nconfigured worker, as a session would load them, refuses any that is not\nin its canonical form, and publishes them as the next version of --name.\nThe registry records who published it from the caller's credential: a\nhuman publisher may record human authorship (or a lower trust), a service\nonly a generated one. A new version is neither reviewed nor qualified.\n\nUsage:\n  sonny policy registry publish <root.ast.json> [<import.ast.json>...] [flags]\n\nFlags:\n      --author-model string   the model that wrote the version, for --source llm\n      --category strings      a descriptor category (repeatable)\n  -h, --help                  help for publish\n      --name string           the policy name\n      --recipe string         the pack closure digest the version belongs to (default: none)\n      --source string         authorship: human, or the generator (llm, gan, solver, cart, grammar, mle) (default \"human\")\n      --task-scope strings    a task the version is meant for (repeatable)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny policy registry qualify",
      "path": [
        "policy",
        "registry",
        "qualify"
      ],
      "summary": "Load a version on this host for a model target and record its held-out competence",
      "usage": "  sonny policy registry qualify <name>@<version> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--evaluator",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "who evaluated it",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--evidence",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "where the evaluation is recorded",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for qualify",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--not-after",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "when the record expires (RFC 3339; default never)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--partition",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "qualification or outer_validation (default \"qualification\")",
          "default_as_displayed": "\"qualification\"",
          "group": "Flags"
        },
        {
          "name": "--served-model",
          "shorthand": null,
          "type_as_displayed": "strings",
          "description": "a model that may serve the target (repeatable)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--successes",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "successful held-out trials",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--target",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "the model target's compatibility digest (sha256:jcs1:...; policy show --target-profile prints one)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--task-scope",
          "shorthand": null,
          "type_as_displayed": "strings",
          "description": "a task evaluated (repeatable; default the version's task scope)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--trials",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "held-out trials",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "qualify loads the version's closure, each module fetched by digest and\nverified, on this host for --target, the model target's compatibility\ndigest (in registry mode, sonny policy show --target-profile <profile>\nprints a catalog profile's, with catalog defaults and no provider\nparams), and records a competence record that names the manifest that\nload produced: the tool catalog, extractors, interpreter and model\nprofile it ran under. Selection admits the version only on a host whose\nload produces that manifest, so a changed tool schema makes it\nineligible until it is qualified again. Only held-out results count:\n--partition is qualification or outer_validation.\n\nUsage:\n  sonny policy registry qualify <name>@<version> [flags]\n\nFlags:\n      --evaluator string       who evaluated it\n      --evidence string        where the evaluation is recorded\n  -h, --help                   help for qualify\n      --not-after string       when the record expires (RFC 3339; default never)\n      --partition string       qualification or outer_validation (default \"qualification\")\n      --served-model strings   a model that may serve the target (repeatable)\n      --successes int          successful held-out trials\n      --target string          the model target's compatibility digest (sha256:jcs1:...; policy show --target-profile prints one)\n      --task-scope strings     a task evaluated (repeatable; default the version's task scope)\n      --trials int             held-out trials\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny policy registry review",
      "path": [
        "policy",
        "registry",
        "review"
      ],
      "summary": "Replay a reviewer's predicted cases on the version and record the review",
      "usage": "  sonny policy registry review <name>@<version> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--cases",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "the reviewer's cases, one JSON object per line",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for review",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "print JSON",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--limitation",
          "shorthand": null,
          "type_as_displayed": "strings",
          "description": "a known limitation (repeatable)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--scope",
          "shorthand": null,
          "type_as_displayed": "strings",
          "description": "a task the review covers (repeatable; at least one)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--verdict",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "approved or rejected",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "review loads the version on this host (unqualified) and decides each case\nof --cases, a file of one JSON object per line: {\"name\": ..., \"predicted\":\n..., \"observation\": <a dpolicy-observation/0.1 frame>}, where predicted is\nthe outcome as policy eval prints it. Each case records the prediction,\nwhat the version decided and the observation's digest. An approval needs\nevery prediction to match: one that does not is refused (denied_evidence)\nand nothing is recorded; record it as rejected instead. --scope names the\ntasks the review covers: selection runs the version only for a task its\nlatest review covers. The registry records the reviewer from the caller's\ncredential, and refuses a review by the version's author or recalibrator,\nor by anyone but a human reviewer.\n\nUsage:\n  sonny policy registry review <name>@<version> [flags]\n\nFlags:\n      --cases string         the reviewer's cases, one JSON object per line\n  -h, --help                 help for review\n      --json                 print JSON\n      --limitation strings   a known limitation (repeatable)\n      --scope strings        a task the review covers (repeatable; at least one)\n      --verdict string       approved or rejected\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny policy registry revoke",
      "path": [
        "policy",
        "registry",
        "revoke"
      ],
      "summary": "Revoke a version's policy everywhere, and stop it on this node",
      "usage": "  sonny policy registry revoke <name>@<version> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for revoke",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--reason",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "why (recorded, and the reason stopped sessions report)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "revoke revokes the version's AST in the registry: no channel selects it\nagain, under any name or version that shares it. On this node it then\nstops, at their next decision, the sessions that run it (a digest stop in\nevery state directory, as each registry read applies), and says so once\nthe configured channel's snapshot, read back fresh, lists the revocation.\nOther nodes stop theirs at their next registry read. When the revocation\nlands but this node cannot read it back, cannot write the stop, or reads a\nsnapshot that does not confirm it, revoke exits partial and names the\nmanual stop (sonny policy stop --digest).\n\nUsage:\n  sonny policy registry revoke <name>@<version> [flags]\n\nFlags:\n  -h, --help            help for revoke\n      --reason string   why (recorded, and the reason stopped sessions report)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny policy registry rollback",
      "path": [
        "policy",
        "registry",
        "rollback"
      ],
      "summary": "Restore a channel's previous version of the name",
      "usage": "  sonny policy registry rollback <name> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--channel",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "the channel (default: the configured one)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for rollback",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--reason",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "why (recorded in the channel's audit)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "rollback restores the channel's previous entry for the name (its version\nand mode), by compare-and-set on the channel's generation. Rolling back\nthe name's first promotion is refused (conflict). The registry checks the\nversion restored as it checks a promotion: restoring a version revoked or\ndeprecated since, or an active entry no longer trusted, is refused\n(unauthorized).\n\nUsage:\n  sonny policy registry rollback <name> [flags]\n\nFlags:\n      --channel string   the channel (default: the configured one)\n  -h, --help             help for rollback\n      --reason string    why (recorded in the channel's audit)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny policy registry select",
      "path": [
        "policy",
        "registry",
        "select"
      ],
      "summary": "Show what a new session on this host would select from the channel, and why",
      "usage": "  sonny policy registry select [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for select",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "print JSON",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--target",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "the model target's compatibility digest (default: none)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--task",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "the task (default: policy.registry.task)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "select reads the configured channel's signed snapshot, applies its\nrevocations on this node, and selects as a new session on this host would\nfor --task (default policy.registry.task) and --target (a model target's\ncompatibility digest; default none, which no qualified version matches):\nevery candidate with why it is eligible or excluded, every channel entry\nthe registry itself excluded (revoked, importing a revoked AST,\ndeprecated), the outcome, and the policy loaded as the session would load\nit, or the reason it would run none.\n\nUsage:\n  sonny policy registry select [flags]\n\nFlags:\n  -h, --help            help for select\n      --json            print JSON\n      --target string   the model target's compatibility digest (default: none)\n      --task string     the task (default: policy.registry.task)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny policy registry show",
      "path": [
        "policy",
        "registry",
        "show"
      ],
      "summary": "Show a version: its verified statement, status, competence, reviews and revocations",
      "usage": "  sonny policy registry show <name>@<version> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for show",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "print JSON",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Show a version: its verified statement, status, competence, reviews and revocations\n\nUsage:\n  sonny policy registry show <name>@<version> [flags]\n\nFlags:\n  -h, --help   help for show\n      --json   print JSON\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny policy resolve",
      "path": [
        "policy",
        "resolve"
      ],
      "summary": "Settle an effect parked for review with the outcome you established",
      "usage": "  sonny policy resolve [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--class",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "succeeded or failed (default \"failed\")",
          "default_as_displayed": "\"failed\"",
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for resolve",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--key",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "the entry's idempotency key (status lists them)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--session",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "session id",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Settle an effect parked for review with the outcome you established\n\nUsage:\n  sonny policy resolve [flags]\n\nFlags:\n      --class string     succeeded or failed (default \"failed\")\n  -h, --help             help for resolve\n      --key string       the entry's idempotency key (status lists them)\n      --session string   session id\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny policy resume",
      "path": [
        "policy",
        "resume"
      ],
      "summary": "Resume a stopped policy (or restore a revoked capability)",
      "usage": "  sonny policy resume [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--capability",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "restore this capability instead of resuming",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--digest",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "clear a stop on this policy AST digest",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for resume",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--session",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "one session (default: every session)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "resume clears what stop set: the session's own stop (--session), the stop\nfor every session (without flags; a session's own stop stays), a stop on a\npolicy AST digest (--digest), or a capability's revocation (--capability),\nin each state directory this configuration's sessions use. A session's own\nstop is cleared wherever it is set, including one set before the\nsession's first policy turn.\n\nUsage:\n  sonny policy resume [flags]\n\nFlags:\n      --capability string   restore this capability instead of resuming\n      --digest string       clear a stop on this policy AST digest\n  -h, --help                help for resume\n      --session string      one session (default: every session)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny policy rollback",
      "path": [
        "policy",
        "rollback"
      ],
      "summary": "Restore the previously promoted policy for new sessions",
      "usage": "  sonny policy rollback [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for rollback",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "rollback restores, for new sessions, the activation that the last promote\nfor this workspace's policy.source replaced; each configured source keeps\nits own history. Rolling back the first promotion is refused (conflict):\nthere is no earlier activation. To return to the configured source itself,\npromote the configured file.\n\nUsage:\n  sonny policy rollback [flags]\n\nFlags:\n  -h, --help   help for rollback\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny policy show",
      "path": [
        "policy",
        "show"
      ],
      "summary": "Show the policy configuration, activation and the loaded policy",
      "usage": "  sonny policy show [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for show",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "print JSON",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--recipe",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "pack mode: the pack a session runs, whose decision_policy show composes",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--recipe-dir",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "with --pack: load packs from this directory instead of the configured tiers",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--session",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "print what this session ran, from its latest decision record",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--target-profile",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "with --pack, or in registry mode: the catalog target profile the session runs on (id or id@revision), resolved with catalog defaults and no provider params",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--target-profile-revision",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "with --target-profile: pin the target profile's revision",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--target-profiles",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "with --target-profile: the target-profile catalog (default: the configured one)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--variant",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "with --pack: the model variant the session installed (default: none, the base contract)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "show prints the policy: block that applies here -- the operator's (--config,\nelse ~/.sonny.yaml) or a trusted project's own .sonny.yaml, with the\noperator's beside it -- the activation promoted for its configured source,\nthe revoked capabilities and, unless the mode is off, the policy a new\nsession in this directory would run (loaded with the activation's pin) and\nthe mode it runs it in, or the typed reason it would run none. When it\nwould run none but the policy itself loads, the policy is shown as the\nconfigured one, validated, not as one that runs.\n\nWhen policy.pack is session, each session runs its pack's decision_policy:\nname the recipe with --recipe (and the variant and target profile a session\nruns, --variant and --target-profile), and show composes and loads that\npack's policy as a new session would, explaining the contract, the variant\napplied or why none was, every slot's module and supplier, and the\nqualification it needs. --target-profile resolves the catalog profile with\ncatalog defaults and no provider params, and show labels the target so: a\nsession whose provider profile sets params runs on another target.\n\nWhen policy.registry is set, each new session selects its policy from the\nregistry for its task and model target (sonny policy registry select\nshows one selection), and show reports the workspace probe's reason, if\nany. --target-profile prints that catalog profile's model target: the\ncompatibility digest sonny policy registry qualify --target names, with\ncatalog defaults and no provider params, as in recipe mode. Only a session\nthat resolves a qualifiable model target can run a registry version.\n\nWith --session, show prints instead what that session ran, from its latest\ndecision record: the policy and manifest digests, the recipe closure, model\nprofile and target (compatibility digest), and the unsigned overrides.\n\nUsage:\n  sonny policy show [flags]\n\nFlags:\n  -h, --help                             help for show\n      --json                             print JSON\n      --recipe string                    pack mode: the pack a session runs, whose decision_policy show composes\n      --recipe-dir string                with --pack: load packs from this directory instead of the configured tiers\n      --session string                   print what this session ran, from its latest decision record\n      --target-profile string            with --pack, or in registry mode: the catalog target profile the session runs on (id or id@revision), resolved with catalog defaults and no provider params\n      --target-profile-revision string   with --target-profile: pin the target profile's revision\n      --target-profiles string           with --target-profile: the target-profile catalog (default: the configured one)\n      --variant string                   with --pack: the model variant the session installed (default: none, the base contract)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny policy status",
      "path": [
        "policy",
        "status"
      ],
      "summary": "Show every session's decisions, costs, skips and pending effects",
      "usage": "  sonny policy status [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for status",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "print JSON",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--session",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "one session (default: every session)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "status prints the durable policy state of every session in each state\ndirectory this configuration's sessions use (or of --session): episodes,\nentry states, dispatched, intended and skipped decisions, skipped turns,\nverifications, rejections, recoveries, every cost spent and reserved, and\nthe entries parked for review. A session whose state cannot be read in\nfull is reported with its error beside the others, and status then exits\nwith a configuration error.\n\nUsage:\n  sonny policy status [flags]\n\nFlags:\n  -h, --help             help for status\n      --json             print JSON\n      --session string   one session (default: every session)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny policy stop",
      "path": [
        "policy",
        "stop"
      ],
      "summary": "Stop the policy (or revoke one capability) at the next decision boundary",
      "usage": "  sonny policy stop [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--capability",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "revoke this capability instead of stopping",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--digest",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "stop every session running the policy with this AST digest",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for stop",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--reason",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "why (shown by status) (default \"stopped by the operator\")",
          "default_as_displayed": "\"stopped by the operator\"",
          "group": "Flags"
        },
        {
          "name": "--session",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "one session (default: every session)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "stop returns the session (or, without --session, every session) to Sonny's\nordinary runtime at the next decision boundary; a running action finishes\nfirst. With --capability it instead revokes one capability from the grant:\nthe next decision that needs it is refused (missing_capability). With\n--digest it stops every session, of every workspace sharing the state\ndirectory, that runs the policy with that AST digest. The controls reach\neach state directory this configuration's sessions use: the block's own\nand, beside a trusted project's block, the operator's. A session's own\nstop goes where the session's policy state is or, before its first policy\nturn, to every one of them.\n\nUsage:\n  sonny policy stop [flags]\n\nFlags:\n      --capability string   revoke this capability instead of stopping\n      --digest string       stop every session running the policy with this AST digest\n  -h, --help                help for stop\n      --reason string       why (shown by status) (default \"stopped by the operator\")\n      --session string      one session (default: every session)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny policy validate",
      "path": [
        "policy",
        "validate"
      ],
      "summary": "Load a policy in the worker and check it against Sonny's actions and features",
      "usage": "  sonny policy validate <file> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "policy file format: source or ast_json (default \"source\")",
          "default_as_displayed": "\"source\"",
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for validate",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "print JSON",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Load a policy in the worker and check it against Sonny's actions and features\n\nUsage:\n  sonny policy validate <file> [flags]\n\nFlags:\n      --format string   policy file format: source or ast_json (default \"source\")\n  -h, --help            help for validate\n      --json            print JSON\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny precommitci",
      "path": [
        "precommitci"
      ],
      "summary": "Run the authoritative CI pre-commit/commit-range gates (ENG-4429)",
      "usage": "  sonny precommitci [command]",
      "aliases": [],
      "children": [
        {
          "name": "run",
          "summary": "Select files/range per the pinned CI policy and run every mandatory gate"
        }
      ],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for precommitci",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Run the authoritative CI pre-commit/commit-range gates (ENG-4429)\n\nUsage:\n  sonny precommitci [command]\n\nAvailable Commands:\n  run         Select files/range per the pinned CI policy and run every mandatory gate\n\nFlags:\n  -h, --help   help for precommitci\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n\nUse \"sonny precommitci [command] --help\" for more information about a command.\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny precommitci run",
      "path": [
        "precommitci",
        "run"
      ],
      "summary": "Select files/range per the pinned CI policy and run every mandatory gate",
      "usage": "  sonny precommitci run [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--artifact-dir",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "directory to write junit.xml, provenance.json, and any gate-native reports (e.g. secret-scan.sarif.json) (default \"artifacts/precommitci\")",
          "default_as_displayed": "\"artifacts/precommitci\"",
          "group": "Flags"
        },
        {
          "name": "--base",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "range start: the merge-request target ref (changed-files mode) or the explicit push range start, e.g. $CI_COMMIT_BEFORE_SHA (all-files mode)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--head",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "range end (the commit this pipeline is validating) (default \"HEAD\")",
          "default_as_displayed": "\"HEAD\"",
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for run",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "also print the provenance record as JSON to stdout",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "run implements the ENG-4429 pinned policy exactly: changed files (diffed\nagainst the merge-base of --base/--head) for a merge-request pipeline,\nevery tracked file for a protected-branch push or a scheduled pipeline\n-- detected from GitLab's own CI_MERGE_REQUEST_IID / CI_PIPELINE_SOURCE /\nCI_COMMIT_REF_PROTECTED variables, so local and CI runs of this exact\ncommand agree.\n\nEvery ENG-4426 mandatory gate always runs (or the whole command fails --\na gate with a missing required binary, or with no wired executor,\nis never silently skipped). --artifact-dir receives a JUnit XML report,\na provenance.json (the resolved config/tool digest, commit range, and\nfile count), and -- for the secret-scan gate -- gitleaks' own native\nSARIF report.\n\nExit status is non-zero when any gate fails, when a required binary is\nmissing, or when --base/--head do not resolve (e.g. a shallow clone that\nnever fetched far enough back to find a merge base).\n\nUsage:\n  sonny precommitci run [flags]\n\nFlags:\n      --artifact-dir string   directory to write junit.xml, provenance.json, and any gate-native reports (e.g. secret-scan.sarif.json) (default \"artifacts/precommitci\")\n      --base string           range start: the merge-request target ref (changed-files mode) or the explicit push range start, e.g. $CI_COMMIT_BEFORE_SHA (all-files mode)\n      --head string           range end (the commit this pipeline is validating) (default \"HEAD\")\n  -h, --help                  help for run\n      --json                  also print the provenance record as JSON to stdout\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny prompt",
      "path": [
        "prompt"
      ],
      "summary": "Display the rendered system prompt for a recipe",
      "usage": "  sonny prompt [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "output format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for prompt",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--recipe-dir",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "directory containing pack YAML files",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--recipe-file",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "single pack YAML file to load",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Display the fully rendered system prompt for a recipe.\n\nThis command loads a recipe and displays the compiled system prompt that would\nbe sent to the LLM, including all composed fragments, responsibilities,\nguidelines, and constraints.\n\nExamples:\n  # Show prompt for default/embedded pack\n  sonny prompt\n\n  # Show prompt for a specific pack file\n  sonny prompt --pack-file ./my-pack.yaml\n\n  # Emit the full compiler Output as JSON\n  sonny prompt --pack-file ./my-pack.yaml --format json\n\nUsage:\n  sonny prompt [flags]\n\nFlags:\n      --format string        output format: text|json (default \"text\")\n  -h, --help                 help for prompt\n      --recipe-dir string    directory containing pack YAML files\n      --recipe-file string   single pack YAML file to load\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny recipe",
      "path": [
        "recipe"
      ],
      "summary": "Manage recipes and git-backed recipe sources",
      "usage": "  sonny recipe [command]",
      "aliases": [
        "recipe",
        "pack"
      ],
      "children": [
        {
          "name": "add",
          "summary": "Register and clone a new recipe source"
        },
        {
          "name": "approve-routing",
          "summary": "Trust a recipe source's model routing (endpoints and credential env var names)"
        },
        {
          "name": "artifact",
          "summary": "Inspect captured tool results without putting them in model context"
        },
        {
          "name": "default",
          "summary": "Show, set, or clear the persisted default prompt recipe"
        },
        {
          "name": "eval",
          "summary": "Run a recipe's eval suite through the configured provider"
        },
        {
          "name": "evidence",
          "summary": "Score two per-case ledgers into one paired evidence record and decide promotion"
        },
        {
          "name": "inspect",
          "summary": "Show resolved scope, sub-scopes, validation, and provenance for a recipe"
        },
        {
          "name": "list",
          "summary": "List tracked recipe sources (or --recipes to list prompt recipes)"
        },
        {
          "name": "migrate",
          "summary": "Rewrite a v1 prompt recipe as v2 (in-place by default)"
        },
        {
          "name": "optimize",
          "summary": "Evolve a recipe's system prompt against its eval suite"
        },
        {
          "name": "pin",
          "summary": "Pin a model-pack variant for a session, or as a pack-wide standing default"
        },
        {
          "name": "qualify",
          "summary": "Assemble and freeze a model-variant campaign's qualification document"
        },
        {
          "name": "reload",
          "summary": "Force-refetch one or all tracked recipe sources"
        },
        {
          "name": "remove",
          "summary": "Drop a recipe source and delete its cache directory"
        },
        {
          "name": "replay",
          "summary": "Reproduce a pinned variant decision from a lock and a snapshot"
        },
        {
          "name": "resolve",
          "summary": "Emit the fully-resolved, tool-aware compiled subject for a recipe"
        },
        {
          "name": "search",
          "summary": "BM25-rank loaded prompt recipes against a query"
        },
        {
          "name": "snapshot",
          "summary": "Write a replayable variant-resolution snapshot for one logical recipe"
        },
        {
          "name": "update",
          "summary": "Fetch + reset tracked sources to their upstream branch tip"
        },
        {
          "name": "validate",
          "summary": "Statically validate a recipe YAML file"
        },
        {
          "name": "variant",
          "summary": "Operate on one model recipe variant envelope file"
        },
        {
          "name": "variants",
          "summary": "List the model-pack variants discovery found for one logical recipe"
        }
      ],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for recipe",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Sonny tracks recipe repositories listed in pack-sources.yaml under $XDG_CONFIG_HOME/sonny. Use these subcommands to add, list, update, or remove tracked repos. Cloned repos live under $XDG_CACHE_HOME/sonny/pack-repos and are loaded by the standard recipe discovery pipeline on startup.\n\nUsage:\n  sonny recipe [command]\n\nAliases:\n  recipe, pack\n\nAvailable Commands:\n  add             Register and clone a new recipe source\n  approve-routing Trust a recipe source's model routing (endpoints and credential env var names)\n  artifact        Inspect captured tool results without putting them in model context\n  default         Show, set, or clear the persisted default prompt recipe\n  eval            Run a recipe's eval suite through the configured provider\n  evidence        Score two per-case ledgers into one paired evidence record and decide promotion\n  inspect         Show resolved scope, sub-scopes, validation, and provenance for a recipe\n  list            List tracked recipe sources (or --recipes to list prompt recipes)\n  migrate         Rewrite a v1 prompt recipe as v2 (in-place by default)\n  optimize        Evolve a recipe's system prompt against its eval suite\n  pin             Pin a model-pack variant for a session, or as a pack-wide standing default\n  qualify         Assemble and freeze a model-variant campaign's qualification document\n  reload          Force-refetch one or all tracked recipe sources\n  remove          Drop a recipe source and delete its cache directory\n  replay          Reproduce a pinned variant decision from a lock and a snapshot\n  resolve         Emit the fully-resolved, tool-aware compiled subject for a recipe\n  search          BM25-rank loaded prompt recipes against a query\n  snapshot        Write a replayable variant-resolution snapshot for one logical recipe\n  update          Fetch + reset tracked sources to their upstream branch tip\n  validate        Statically validate a recipe YAML file\n  variant         Operate on one model recipe variant envelope file\n  variants        List the model-pack variants discovery found for one logical recipe\n\nFlags:\n  -h, --help   help for recipe\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n\nUse \"sonny recipe [command] --help\" for more information about a command.\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny recipe add",
      "path": [
        "recipe",
        "add"
      ],
      "summary": "Register and clone a new recipe source",
      "usage": "  sonny recipe add <git-url|dir>[@<ref>] [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--approve-mcp",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "after cloning, record your approval of the MCP servers every pack from this source declares (inherited ones included), as sonny mcp approve pack does for each: a pack-source server launches only on such an approval",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--approve-routing",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "after cloning, trust the source's model routing (endpoints and credential env var names its catalogs declare) by copying it into <config-dir>/models.d/pack-<name>-routing.yaml; see sonny pack approve-routing",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--branch",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "branch to track (default \"main\")",
          "default_as_displayed": "\"main\"",
          "group": "Flags"
        },
        {
          "name": "--default-recipe",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "override this source's repository default primary pack; an explicitly empty value disables its default",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for add",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--mcp-auto-approve",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "connect this source's MCP servers without a prompt for the packs that name them, once sonny mcp approve registry <name> records your approval of their unchanged definitions; false writes mcp_auto_approve: false, so they get the stricter explicit-approval pinning (unset: on only for a source with --mcp-d) (default true)",
          "default_as_displayed": "true",
          "group": "Flags"
        },
        {
          "name": "--mcp-d",
          "shorthand": null,
          "type_as_displayed": "stringArray",
          "description": "mcp.yaml-style directory relative to the clone root whose *.yaml servers load for the packs whose mcp.allowed names them, overriding same-name mcp.yaml servers (repeat for multiple dirs)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--mcp-env-allow",
          "shorthand": null,
          "type_as_displayed": "strings",
          "description": "host environment variable NAME this source's MCP servers may read, e.g. the credentials its packs' servers reference (repeat, or comma-separate; persists mcp_env_allow in pack-sources.yaml)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--model-catalog",
          "shorthand": null,
          "type_as_displayed": "stringArray",
          "description": "model-catalog YAML path relative to the clone root (repeat for multiple files); replaces the default model-registry/models.yaml",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--models-d",
          "shorthand": null,
          "type_as_displayed": "stringArray",
          "description": "models.d-style directory relative to the clone root whose *.yaml drop-ins override same-id local sources (repeat for multiple dirs)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--name",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "override the directory name (defaults to repo basename)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--no-model-catalog",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "do not load the source's default model-registry/models.yaml (persists models_auto: false)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--pin",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "lock this source to a specific version: a semver tag (e.g. v1.2.3) or \"latest\" to resolve and record the current highest tag; may also be set inline as <url>@<ref>. Pinned sources are not auto-updated on startup; use \"sonny pack reload <name>\" to refresh.",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--skip-unresolved",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "with --approve-mcp: silently skip servers whose binary is not installed on this host",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--subdir",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "subdir of the repo containing pack YAML files",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--update-policy",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "update policy (on_startup|manual) (default \"on_startup\")",
          "default_as_displayed": "\"on_startup\"",
          "group": "Flags"
        },
        {
          "name": "--write-config",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "with --approve-mcp: also merge approved server definitions into <config-dir>/mcp.yaml so they are available globally",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--write-untrusted-references",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "with --write-config: also write $VAR references, refused env keys and egress policy beyond the server's own url host from servers of packs that are not verified-signed into mcp.yaml, where references expand against your environment",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Register and clone a new recipe source from git-url. A local directory (., ./dir, ~/dir or an absolute path) works too: a git repository is cloned on its checked-out branch, and any other directory is snapshotted into the cache and re-read on every sync or reload (the directory itself is never modified). Append @<ref> to the URL (e.g. https://example.com/packs.git@v1.2.3) to pin the source to a specific semver tag or to @latest for the newest available tag. Pinned sources are frozen: sonny will not auto-update them on startup; use `sonny recipe reload <name>` to refresh.\n\nUsage:\n  sonny recipe add <git-url|dir>[@<ref>] [flags]\n\nFlags:\n      --approve-mcp                  after cloning, record your approval of the MCP servers every pack from this source declares (inherited ones included), as sonny mcp approve pack does for each: a pack-source server launches only on such an approval\n      --approve-routing              after cloning, trust the source's model routing (endpoints and credential env var names its catalogs declare) by copying it into <config-dir>/models.d/pack-<name>-routing.yaml; see sonny pack approve-routing\n      --branch string                branch to track (default \"main\")\n      --default-recipe string        override this source's repository default primary pack; an explicitly empty value disables its default\n  -h, --help                         help for add\n      --mcp-auto-approve             connect this source's MCP servers without a prompt for the packs that name them, once sonny mcp approve registry <name> records your approval of their unchanged definitions; false writes mcp_auto_approve: false, so they get the stricter explicit-approval pinning (unset: on only for a source with --mcp-d) (default true)\n      --mcp-d stringArray            mcp.yaml-style directory relative to the clone root whose *.yaml servers load for the packs whose mcp.allowed names them, overriding same-name mcp.yaml servers (repeat for multiple dirs)\n      --mcp-env-allow strings        host environment variable NAME this source's MCP servers may read, e.g. the credentials its packs' servers reference (repeat, or comma-separate; persists mcp_env_allow in pack-sources.yaml)\n      --model-catalog stringArray    model-catalog YAML path relative to the clone root (repeat for multiple files); replaces the default model-registry/models.yaml\n      --models-d stringArray         models.d-style directory relative to the clone root whose *.yaml drop-ins override same-id local sources (repeat for multiple dirs)\n      --name string                  override the directory name (defaults to repo basename)\n      --no-model-catalog             do not load the source's default model-registry/models.yaml (persists models_auto: false)\n      --pin string                   lock this source to a specific version: a semver tag (e.g. v1.2.3) or \"latest\" to resolve and record the current highest tag; may also be set inline as <url>@<ref>. Pinned sources are not auto-updated on startup; use \"sonny pack reload <name>\" to refresh.\n      --skip-unresolved              with --approve-mcp: silently skip servers whose binary is not installed on this host\n      --subdir string                subdir of the repo containing pack YAML files\n      --update-policy string         update policy (on_startup|manual) (default \"on_startup\")\n      --write-config                 with --approve-mcp: also merge approved server definitions into <config-dir>/mcp.yaml so they are available globally\n      --write-untrusted-references   with --write-config: also write $VAR references, refused env keys and egress policy beyond the server's own url host from servers of packs that are not verified-signed into mcp.yaml, where references expand against your environment\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny recipe approve-routing",
      "path": [
        "recipe",
        "approve-routing"
      ],
      "summary": "Trust a recipe source's model routing (endpoints and credential env var names)",
      "usage": "  sonny recipe approve-routing <source> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for approve-routing",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--revoke",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "delete the approved routing file for <source>",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Recipe catalogs cannot choose provider endpoints or credential env vars, so their sources use each scheme's default endpoint and credential. approve-routing lists the base_url, api_key_env, env_prefix and secret_ref every catalog of <source> declares (names only, never values) and copies them into <config-dir>/models.d/pack-<source>-routing.yaml, which is your own configuration: recipe updates cannot change it. Re-run after a recipe update changes its routing; --revoke deletes the file.\n\nUsage:\n  sonny recipe approve-routing <source> [flags]\n\nFlags:\n  -h, --help     help for approve-routing\n      --revoke   delete the approved routing file for <source>\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny recipe artifact",
      "path": [
        "recipe",
        "artifact"
      ],
      "summary": "Inspect captured tool results without putting them in model context",
      "usage": "  sonny recipe artifact [command]",
      "aliases": [],
      "children": [
        {
          "name": "inspect",
          "summary": "Read a captured artifact for a person and record the inspection"
        }
      ],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for artifact",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Read tool results this host captured OUTSIDE the model's context.\n\nA captured artifact is the complete tool result; what the model saw was a\nbounded view of it. These subcommands let a person read the complete,\nauthorized artifact on their own screen. Doing so puts nothing into any\nmodel's context, and each read is recorded in its own append-only audit\nlog, separately from the rehydration records the artifact store keeps for\nreads that DO reach a model.\n\nUsage:\n  sonny recipe artifact [command]\n\nAvailable Commands:\n  inspect     Read a captured artifact for a person and record the inspection\n\nFlags:\n  -h, --help   help for artifact\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n\nUse \"sonny recipe artifact [command] --help\" for more information about a command.\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny recipe artifact inspect",
      "path": [
        "recipe",
        "artifact",
        "inspect"
      ],
      "summary": "Read a captured artifact for a person and record the inspection",
      "usage": "  sonny recipe artifact inspect <handle> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--artifact-version",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "the exact artifact version to read (required: a handle names a lineage, a version names bytes)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--audit-log",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "append the inspection record to this file instead of the host's default inspection log",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--end",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "stop before this record, 0-based and exclusive (use with --start)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--fields",
          "shorthand": null,
          "type_as_displayed": "strings",
          "description": "read these top-level members of the artifact",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for inspect",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "emit the selection and its audit record inside the machine envelope",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--start",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "first record to read, 0-based and inclusive (use with --end)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Read one captured artifact and append one inspection record.\n\nThe read is authorized from scratch on this call -- the subject is proved\nand the field allow-list applied at release time -- and it puts NOTHING\ninto any model's context. Exactly one record is appended to the audit log\n(--audit-log, by default artifact-inspections.jsonl in this host's state\ndirectory): who read, which handle and version, under which selector\nkind, when, how many bytes came back and whether the selection was\ncomplete. The record never carries the content itself, and its\nentered_model_context member can only be false.\n\nChoose what to read with --fields (named top-level members) or with\n--start/--end (a half-open record range). With neither, the whole\ncaptured record range is read when the artifact admits a range selector.\n\nAn inspection that cannot be audited is refused: if the record cannot be\nappended, nothing is printed.\n\nUsage:\n  sonny recipe artifact inspect <handle> [flags]\n\nFlags:\n      --artifact-version string   the exact artifact version to read (required: a handle names a lineage, a version names bytes)\n      --audit-log string          append the inspection record to this file instead of the host's default inspection log\n      --end int                   stop before this record, 0-based and exclusive (use with --start)\n      --fields strings            read these top-level members of the artifact\n  -h, --help                      help for inspect\n      --json                      emit the selection and its audit record inside the machine envelope\n      --start int                 first record to read, 0-based and inclusive (use with --end)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny recipe default",
      "path": [
        "recipe",
        "default"
      ],
      "summary": "Show, set, or clear the persisted default prompt recipe",
      "usage": "  sonny recipe default [recipe-id] [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--clear",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "remove the persisted default",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for default",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--show",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "print the current default pack (if any)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Manage the prompt recipe that sonny auto-selects on launch.\n\nExamples:\n  sonny recipe default crush       # set default to \"crush\"\n  sonny recipe default --show      # print current default (if any)\n  sonny recipe default --clear     # remove the persisted default\n\nThe default is persisted in the session DB and honored by 'sonny run'.\nIt overrides defaults declared in a downloaded repository's pack-repository.yaml.\nClearing it restores repository defaults; it does not change downloaded files.\nUse 'sonny run --pick-pack' to force the picker for one run without\nclearing the default.\n\nUsage:\n  sonny recipe default [recipe-id] [flags]\n\nFlags:\n      --clear   remove the persisted default\n  -h, --help    help for default\n      --show    print the current default pack (if any)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny recipe eval",
      "path": [
        "recipe",
        "eval"
      ],
      "summary": "Run a recipe's eval suite through the configured provider",
      "usage": "  sonny recipe eval <recipe-id> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--allow-draft-variants",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "allow a draft (not approved) variant to activate; for a qualification campaign's draft-time measurement only",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--allow-unapproved-profiles",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "allow a not-yet-approved target profile to activate; for a qualification campaign's draft-time measurement only",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--concurrency",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "run cases through the shared bounded scheduler with up to this many concurrent trials (<=1 is serial) (default 1)",
          "default_as_displayed": "1",
          "group": "Flags"
        },
        {
          "name": "--confirm",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "run this many independent passes and only report a fail confirmed in every pass (default 1)",
          "default_as_displayed": "1",
          "group": "Flags"
        },
        {
          "name": "--critic-wire-schema",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "for a pack that declares an analysis critic, send the composed analysiscritic wire schema (response_format json_schema, narrow scope) the analysis host would send live; --critic-wire-schema=false restores the prompt-only contract (default true)",
          "default_as_displayed": "true",
          "group": "Flags"
        },
        {
          "name": "--dir",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "additional pack directory",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--exit-on-fail",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "stop at first failure and exit nonzero",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--expect-refusal-case",
          "shorthand": null,
          "type_as_displayed": "strings",
          "description": "case IDs that must refuse (comma-separated)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--file",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "load a single pack YAML by file path",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "text|jsonl (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for eval",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--history-file",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "append-only eval history ledger (line-compatible with SkillOpt eval-runs.jsonl)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--judge-model",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "grade every judge block with this model on the run's provider instead of the target model (a case's own judge.model still wins); an ordered comma list primary,fallback,... re-asks a judge turn that fails on one model (provider error such as a content-filter 400, timeout, judge refusal, or a reply still unreadable after its resample) on the next, recording judge_model and judge_fallbacks per row; does not imply --trust-model-judge",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--max-output-tokens",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "maximum tokens in each evaluated case response (0 disables) (default 4096)",
          "default_as_displayed": "4096",
          "group": "Flags"
        },
        {
          "name": "--outage-backoff",
          "shorthand": null,
          "type_as_displayed": "duration",
          "description": "base backoff before an outage-retry pass, doubling per retry (default 2s)",
          "default_as_displayed": "2s",
          "group": "Flags"
        },
        {
          "name": "--outage-retries",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "retry a whole pass this many times when every case errors as an infrastructure failure (default 2)",
          "default_as_displayed": "2",
          "group": "Flags"
        },
        {
          "name": "--reasoning-effort",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "run every case at this reasoning effort through a provider runner that applies reasoning (empty = the routed default); a value the provider rejects fails the case with the provider's error",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--repeat",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "run each case this many times per pass and collapse the results (flakiness discipline) (default 1)",
          "default_as_displayed": "1",
          "group": "Flags"
        },
        {
          "name": "--suite-file",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "load cases from external YAML",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--system-prompt-override",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "replace the composed system prompt with this file's bytes on every case (the no_skill control); not combinable with --variant/--target-profile",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--target-profile",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "evaluate against this catalog target-profile id",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--target-profile-revision",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "pin the catalog profile revision",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--target-profiles",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "target-profile catalog path (default: <dir>/../model-registry/target-profiles.yaml)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--trust-model-judge",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "use model judge verdicts for local eval/optimization grading (the judge is the --judge-model model when given, else the target model); records remain advisory for runtime and release gates",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--variant",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "pin this model variant for every case, or empty for automatic routing",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "eval runs every case in the recipe's pack_eval_suite (or in --suite-file) through the provider used by chat. Production runners MUST intersect case tools_allowed with the recipe's existing allowed list and honor path constraints; --exit-on-fail makes the first non-pass case the overall exit code so CI gates surface real regressions.\n\nUsage:\n  sonny recipe eval <recipe-id> [flags]\n\nFlags:\n      --allow-draft-variants             allow a draft (not approved) variant to activate; for a qualification campaign's draft-time measurement only\n      --allow-unapproved-profiles        allow a not-yet-approved target profile to activate; for a qualification campaign's draft-time measurement only\n      --concurrency int                  run cases through the shared bounded scheduler with up to this many concurrent trials (<=1 is serial) (default 1)\n      --confirm int                      run this many independent passes and only report a fail confirmed in every pass (default 1)\n      --critic-wire-schema               for a pack that declares an analysis critic, send the composed analysiscritic wire schema (response_format json_schema, narrow scope) the analysis host would send live; --critic-wire-schema=false restores the prompt-only contract (default true)\n      --dir string                       additional pack directory\n      --exit-on-fail                     stop at first failure and exit nonzero\n      --expect-refusal-case strings      case IDs that must refuse (comma-separated)\n      --file string                      load a single pack YAML by file path\n      --format string                    text|jsonl (default \"text\")\n  -h, --help                             help for eval\n      --history-file string              append-only eval history ledger (line-compatible with SkillOpt eval-runs.jsonl)\n      --judge-model string               grade every judge block with this model on the run's provider instead of the target model (a case's own judge.model still wins); an ordered comma list primary,fallback,... re-asks a judge turn that fails on one model (provider error such as a content-filter 400, timeout, judge refusal, or a reply still unreadable after its resample) on the next, recording judge_model and judge_fallbacks per row; does not imply --trust-model-judge\n      --max-output-tokens int            maximum tokens in each evaluated case response (0 disables) (default 4096)\n      --outage-backoff duration          base backoff before an outage-retry pass, doubling per retry (default 2s)\n      --outage-retries int               retry a whole pass this many times when every case errors as an infrastructure failure (default 2)\n      --reasoning-effort string          run every case at this reasoning effort through a provider runner that applies reasoning (empty = the routed default); a value the provider rejects fails the case with the provider's error\n      --repeat int                       run each case this many times per pass and collapse the results (flakiness discipline) (default 1)\n      --suite-file string                load cases from external YAML\n      --system-prompt-override string    replace the composed system prompt with this file's bytes on every case (the no_skill control); not combinable with --variant/--target-profile\n      --target-profile string            evaluate against this catalog target-profile id\n      --target-profile-revision string   pin the catalog profile revision\n      --target-profiles string           target-profile catalog path (default: <dir>/../model-registry/target-profiles.yaml)\n      --trust-model-judge                use model judge verdicts for local eval/optimization grading (the judge is the --judge-model model when given, else the target model); records remain advisory for runtime and release gates\n      --variant string                   pin this model variant for every case, or empty for automatic routing\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny recipe evidence",
      "path": [
        "recipe",
        "evidence"
      ],
      "summary": "Score two per-case ledgers into one paired evidence record and decide promotion",
      "usage": "  sonny recipe evidence [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--baseline-ledger",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "baseline per-case JSONL ledger",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--baseline-tier",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "generic or family",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--baseline-variant",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "the baseline's model_variant_id (empty for the generic tier)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--bench",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "livemath, searchqa or docvqa",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--campaign",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "campaign id; must equal the matrix's campaign_id",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--candidate-ledger",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "candidate per-case JSONL ledger",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--candidate-tier",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "family or exact",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--candidate-variant",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "the candidate's model_variant_id",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--data",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "materialized data dir (default \"packs/skillopt/data\")",
          "default_as_displayed": "\"packs/skillopt/data\"",
          "group": "Flags"
        },
        {
          "name": "--family-release",
          "shorthand": null,
          "type_as_displayed": "stringArray",
          "description": "a release the family selector declares (repeatable); required for a family-tier candidate",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--family-weight-variant",
          "shorthand": null,
          "type_as_displayed": "stringArray",
          "description": "a weight variant the family selector declares (repeatable; empty means the axis is open)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for evidence",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--leave-one-target-out",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "this comparison held the target out of the optimization and measures transfer onto it",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--live",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "assert every scored case came from a real provider call",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--matrix",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "frozen matrix manifest (qualification/matrix/<c>.matrix.json)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--out",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "output record path (qualification/<c>/evidence/<name>.json)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--preregistration",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "frozen Phase 0 document; the matrix must pin its digest and its gate params",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--security-baseline-ledger",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "independently scored output-security baseline JSONL (required by frozen matrix)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--security-candidate-ledger",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "independently scored output-security candidate JSONL (required by frozen matrix)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--security-manifest",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "evaluator-only corpus manifest pinned by the frozen output-security requirement",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--split",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "the sealed split the partition names (test)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--target",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "profile_id@revision, which must be live in the matrix",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--target-release",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "the model release this target serves; required for a family-tier candidate",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--target-weight-variant",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "the target's weight variant, when its profile declares one",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "evidence pairs a baseline and a candidate eval ledger BY CASE ID, rescores both with the SkillOpt metric, computes every metric's paired delta and BCa interval under the frozen campaign matrix, and writes a sonny.variant-evidence/v1 record. promote, reject and blocked are all honest outcomes of a campaign that ran and all exit ZERO with the record on stdout; only an invalid input exits non-zero. Omitting --live makes the record live=false, which can never promote.\n\nUsage:\n  sonny recipe evidence [flags]\n\nFlags:\n      --baseline-ledger string              baseline per-case JSONL ledger\n      --baseline-tier string                generic or family\n      --baseline-variant string             the baseline's model_variant_id (empty for the generic tier)\n      --bench string                        livemath, searchqa or docvqa\n      --campaign string                     campaign id; must equal the matrix's campaign_id\n      --candidate-ledger string             candidate per-case JSONL ledger\n      --candidate-tier string               family or exact\n      --candidate-variant string            the candidate's model_variant_id\n      --data string                         materialized data dir (default \"packs/skillopt/data\")\n      --family-release stringArray          a release the family selector declares (repeatable); required for a family-tier candidate\n      --family-weight-variant stringArray   a weight variant the family selector declares (repeatable; empty means the axis is open)\n      --format string                       text|json (default \"text\")\n  -h, --help                                help for evidence\n      --leave-one-target-out                this comparison held the target out of the optimization and measures transfer onto it\n      --live                                assert every scored case came from a real provider call\n      --matrix string                       frozen matrix manifest (qualification/matrix/<c>.matrix.json)\n      --out string                          output record path (qualification/<c>/evidence/<name>.json)\n      --preregistration string              frozen Phase 0 document; the matrix must pin its digest and its gate params\n      --security-baseline-ledger string     independently scored output-security baseline JSONL (required by frozen matrix)\n      --security-candidate-ledger string    independently scored output-security candidate JSONL (required by frozen matrix)\n      --security-manifest string            evaluator-only corpus manifest pinned by the frozen output-security requirement\n      --split string                        the sealed split the partition names (test)\n      --target string                       profile_id@revision, which must be live in the matrix\n      --target-release string               the model release this target serves; required for a family-tier candidate\n      --target-weight-variant string        the target's weight variant, when its profile declares one\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny recipe inspect",
      "path": [
        "recipe",
        "inspect"
      ],
      "summary": "Show resolved scope, sub-scopes, validation, and provenance for a recipe",
      "usage": "  sonny recipe inspect <recipe-id> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--allow-draft-variants",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "allow a draft (not approved) variant's provenance to be inspected",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--diff",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "show scope diff between baseline and sub-pack; with --variant, diff the variant's components against base|<variant-id> instead",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--dir",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "additional pack directory",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--file",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "load a single pack YAML by file path",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "output format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for inspect",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--show-components",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "print the per-component provenance table",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--show-prompt",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "include rendered prompt (secrets masked)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--show-rules",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "include resolved tools/agents rules (post-inheritance)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--variant",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "inspect the compiled model variant instead of the base pack",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Show resolved scope, sub-scopes, validation, and provenance for a recipe\n\nUsage:\n  sonny recipe inspect <recipe-id> [flags]\n\nFlags:\n      --allow-draft-variants   allow a draft (not approved) variant's provenance to be inspected\n      --diff string            show scope diff between baseline and sub-pack; with --variant, diff the variant's components against base|<variant-id> instead\n      --dir string             additional pack directory\n      --file string            load a single pack YAML by file path\n      --format string          output format: text|json (default \"text\")\n  -h, --help                   help for inspect\n      --show-components        print the per-component provenance table\n      --show-prompt            include rendered prompt (secrets masked)\n      --show-rules             include resolved tools/agents rules (post-inheritance)\n      --variant string         inspect the compiled model variant instead of the base pack\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny recipe list",
      "path": [
        "recipe",
        "list"
      ],
      "summary": "List tracked recipe sources (or --recipes to list prompt recipes)",
      "usage": "  sonny recipe list [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--detail",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "short|full (only with --packs) (default \"short\")",
          "default_as_displayed": "\"short\"",
          "group": "Flags"
        },
        {
          "name": "--format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "deprecated alias for --json (text|json); use --json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for list",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "emit the machine-readable envelope instead of the listing",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--recipes",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "list loaded prompt packs instead of sources",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--tags",
          "shorthand": null,
          "type_as_displayed": "strings",
          "description": "filter to packs carrying ALL listed tags (only with --packs)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Without --recipes lists git-backed pack-sources from pack-sources.yaml. With --recipes walks the standard discovery dirs and lists every loaded prompt recipe with id + description + (when --detail=full) author/license/tags/provenance. --json emits the machine-readable envelope for either listing; --tags filters the recipe listing.\n\nUsage:\n  sonny recipe list [flags]\n\nFlags:\n      --detail string   short|full (only with --packs) (default \"short\")\n      --format string   deprecated alias for --json (text|json); use --json (default \"text\")\n  -h, --help            help for list\n      --json            emit the machine-readable envelope instead of the listing\n      --recipes         list loaded prompt packs instead of sources\n      --tags strings    filter to packs carrying ALL listed tags (only with --packs)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny recipe migrate",
      "path": [
        "recipe",
        "migrate"
      ],
      "summary": "Rewrite a v1 prompt recipe as v2 (in-place by default)",
      "usage": "  sonny recipe migrate <pack.yaml> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--check",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "report whether the file would be rewritten; exit non-zero if so",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for migrate",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--stdout",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "write migrated YAML to stdout instead of in place",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Promotes raw `secrets:` and `auto_models:` blocks into typed PackMeta fields. Idempotent on already-v2 input. Refuses any pack containing legacy shell-form `command.run:` secrets.\n\nUsage:\n  sonny recipe migrate <pack.yaml> [flags]\n\nFlags:\n      --check    report whether the file would be rewritten; exit non-zero if so\n  -h, --help     help for migrate\n      --stdout   write migrated YAML to stdout instead of in place\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny recipe optimize",
      "path": [
        "recipe",
        "optimize"
      ],
      "summary": "Evolve a recipe's system prompt against its eval suite",
      "usage": "  sonny recipe optimize <recipe-id> [flags]\n  sonny recipe optimize [command]",
      "aliases": [],
      "children": [
        {
          "name": "matrix",
          "summary": "Run the bounded target x tier x benchmark qualification matrix"
        }
      ],
      "flags": [
        {
          "name": "--allow-draft-variants",
          "shorthand": null,
          "type_as_displayed": "pack variant approve",
          "description": "allow --export-variant to write a draft (not approved) variant instead of refusing it; for a qualification campaign's draft-time export/measurement only. The exported variant is still recorded trust.status: draft and still requires a separate pack variant approve; this never relaxes a runtime or release activation gate",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--apply",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "rewrite the source pack file with the best result",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--assertion-overlap-ignore-pattern",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "regexp matched against each lowercased assertion literal; a match is excluded from both sides of the --max-assertion-overlap ratio (for answer-choice-shaped literals, e.g. a multiple-choice benchmark's label regexes). Preregister it per benchmark; it never relaxes the holdout case-id check",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--concurrency",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "run each eval pass's cases through the shared bounded scheduler with up to this many concurrent trials (<=1 is serial) (default 1)",
          "default_as_displayed": "1",
          "group": "Flags"
        },
        {
          "name": "--confirm",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "independent eval passes a failure must be confirmed in (default 1)",
          "default_as_displayed": "1",
          "group": "Flags"
        },
        {
          "name": "--control-file",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "JSON control file polled between phases (default: <out>/control.json; pause/stop/rounds/proposal_retries/optimizer_timeout)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--dir",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "directory holding <pack-id>.yaml",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--dry-run",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "print the plan and call estimate; make no model calls",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--expect-refusal-case",
          "shorthand": null,
          "type_as_displayed": "strings",
          "description": "case IDs that must refuse (comma-separated; applies to training and holdout)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--export-campaign",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "campaign id the exported variant's provenance manifest records (required with --export-variant)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--export-family-evidence-ref",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "qualification record a family-tier export's family_scope points at (required with --export-selector-tier family)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--export-family-release",
          "shorthand": null,
          "type_as_displayed": "strings",
          "description": "release a family-tier export declares evidence for (repeatable; default: the resolved target profile's own model release)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--export-harness-revision",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "revision of the harness performing the export, recorded in the provenance manifest (default: sonny@<build commit>; required with --export-variant when the binary carries no commit)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--export-selector-tier",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "selector tier the exported variant declares: exact (the default) or family (family also requires --export-family-evidence-ref and refuses --parent-variant)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--export-variant",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "export the best candidate as <pack>.<variant-id>.yaml plus its owned fragments instead of rewriting the source pack (mutually exclusive with --apply)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--file",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "pack YAML file to optimize (must be writable)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for optimize",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--holdout-require",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "what --apply needs from the holdout verdict: no-regression (improved|no-gain|within-noise) or improved (default \"no-regression\")",
          "default_as_displayed": "\"no-regression\"",
          "group": "Flags"
        },
        {
          "name": "--holdout-suite-file",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "disjoint eval-suite YAML evaluated only for the final baseline-vs-best verdict (skipped when no round was accepted); gates --apply per --holdout-require",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--judge-model",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "grade every judge block with this model on the run's provider instead of the target model (a case's own judge.model still wins); an ordered comma list primary,fallback,... re-asks a judge turn that fails on one model (provider error such as a content-filter 400, timeout, judge refusal, or a reply still unreadable after its resample) on the next, recording judge_model and judge_fallbacks per row; does not imply --trust-model-judge",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--margin-cases",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "holdout gain floor, in case units (default 2)",
          "default_as_displayed": "2",
          "group": "Flags"
        },
        {
          "name": "--max-assertion-overlap",
          "shorthand": null,
          "type_as_displayed": "float",
          "description": "maximum fraction of distinct holdout assertion literals reused from training (0 disables the independence preflight) (default 0.34)",
          "default_as_displayed": "0.34",
          "group": "Flags"
        },
        {
          "name": "--max-calls",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "refuse a run whose worst-case model-call count exceeds this ceiling (0 disables) (default 5000)",
          "default_as_displayed": "5000",
          "group": "Flags"
        },
        {
          "name": "--max-changed-chars",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "edit-size cap a --export-variant proposal is validated against: len(target)+len(content) summed over its operations (0 uses the exporter's default of 4000). Required with --export-campaign; declare it in the preregistration's edit_policy",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--max-infra-frac",
          "shorthand": null,
          "type_as_displayed": "float",
          "description": "maximum fraction of infrastructure errors before a verdict is called invalid (default 0.2)",
          "default_as_displayed": "0.2",
          "group": "Flags"
        },
        {
          "name": "--max-output-tokens",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "maximum tokens in each evaluated case response (0 disables) (default 4096)",
          "default_as_displayed": "4096",
          "group": "Flags"
        },
        {
          "name": "--min-delta",
          "shorthand": null,
          "type_as_displayed": "float",
          "description": "minimum hard-score gain a candidate must clear (default 0.01)",
          "default_as_displayed": "0.01",
          "group": "Flags"
        },
        {
          "name": "--min-holdout-cases",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "minimum measured holdout cases below which the verdict is split-too-small (default 25)",
          "default_as_displayed": "25",
          "group": "Flags"
        },
        {
          "name": "--optimizer-model",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "model for the optimizer role (default: the target model)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--optimizer-provider",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "provider for the optimizer role (default: the target provider)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--optimizer-timeout",
          "shorthand": null,
          "type_as_displayed": "duration",
          "description": "deadline for each optimizer proposal call (0 disables) (default 4m0s)",
          "default_as_displayed": "4m0s",
          "group": "Flags"
        },
        {
          "name": "--out",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "artifact directory (default .sonny/optimize/<pack-id>)",
          "default_as_displayed": ".sonny/optimize/<pack-id>",
          "group": "Flags"
        },
        {
          "name": "--parent-variant",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "family variant id the exported exact variant extends",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--progress-file",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "append optimization phase events as JSONL (default: <out>/progress.jsonl)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--progress-stderr",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "also render compact progress events on stderr (progress JSONL is always written to --progress-file)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--proposal-retries",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "bounded retries for malformed optimizer replies (default 2)",
          "default_as_displayed": "2",
          "group": "Flags"
        },
        {
          "name": "--repeat",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "eval repeats per pass (flakiness discipline) (default 1)",
          "default_as_displayed": "1",
          "group": "Flags"
        },
        {
          "name": "--rounds",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "optimization rounds to run (default 3)",
          "default_as_displayed": "3",
          "group": "Flags"
        },
        {
          "name": "--stop-on-invalid",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "stop after the first unmeasured candidate round and skip holdout/apply",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--suite-file",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "eval suite YAML to optimize against (overrides the pack's inline pack_eval_suite)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--target-profile",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "catalog target-profile id the variant is trained for (required with --export-variant)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--target-profile-revision",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "pin the catalog profile revision",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--target-profiles",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "target-profile catalog path (default: <dir>/../model-registry/target-profiles.yaml)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--trust-model-judge",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "use model judge verdicts for local eval/optimization grading (the judge is the --judge-model model when given, else the target model); records remain advisory for runtime and release gates",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--variant-root",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "authorized variant output root (default: the directory holding the pack file)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "optimize runs a bounded SkillOpt-style loop: evaluate the recipe, ask an optimizer model for a patch proposal against the mutable system-prompt components, re-evaluate the candidate, and keep it only when a noise-aware gate says it genuinely beat the current pack. Rejected edits persist in <out>/history.jsonl and feed back into later rounds. The source file is rewritten only with --apply.\n\nUse --suite-file to gate against an external eval suite instead of the pack's inline pack_eval_suite -- e.g. a held-out suite you never optimize against, to avoid overfitting the prompt to the cases that grade it.\n\nA round's gate verdict is one of three outcomes, not two: accepted, genuinely rejected (the candidate was measured and scored no better), or invalid (no candidate gate verdict exists because a proposal could not be parsed/validated/applied, or its eval hit an infrastructure error). Invalid rounds are counted separately (the report's \"invalid\" field) and, unlike rejections, do NOT seed the rejected-edits buffer: an edit that was never tried must never be taught to future rounds as \"did not work\".\n\nUsage:\n  sonny recipe optimize <recipe-id> [flags]\n  sonny recipe optimize [command]\n\nAvailable Commands:\n  matrix      Run the bounded target x tier x benchmark qualification matrix\n\nFlags:\n      --allow-draft-variants pack variant approve   allow --export-variant to write a draft (not approved) variant instead of refusing it; for a qualification campaign's draft-time export/measurement only. The exported variant is still recorded trust.status: draft and still requires a separate pack variant approve; this never relaxes a runtime or release activation gate\n      --apply                                       rewrite the source pack file with the best result\n      --assertion-overlap-ignore-pattern string     regexp matched against each lowercased assertion literal; a match is excluded from both sides of the --max-assertion-overlap ratio (for answer-choice-shaped literals, e.g. a multiple-choice benchmark's label regexes). Preregister it per benchmark; it never relaxes the holdout case-id check\n      --concurrency int                             run each eval pass's cases through the shared bounded scheduler with up to this many concurrent trials (<=1 is serial) (default 1)\n      --confirm int                                 independent eval passes a failure must be confirmed in (default 1)\n      --control-file string                         JSON control file polled between phases (default: <out>/control.json; pause/stop/rounds/proposal_retries/optimizer_timeout)\n      --dir string                                  directory holding <pack-id>.yaml\n      --dry-run                                     print the plan and call estimate; make no model calls\n      --expect-refusal-case strings                 case IDs that must refuse (comma-separated; applies to training and holdout)\n      --export-campaign string                      campaign id the exported variant's provenance manifest records (required with --export-variant)\n      --export-family-evidence-ref string           qualification record a family-tier export's family_scope points at (required with --export-selector-tier family)\n      --export-family-release strings               release a family-tier export declares evidence for (repeatable; default: the resolved target profile's own model release)\n      --export-harness-revision string              revision of the harness performing the export, recorded in the provenance manifest (default: sonny@<build commit>; required with --export-variant when the binary carries no commit)\n      --export-selector-tier string                 selector tier the exported variant declares: exact (the default) or family (family also requires --export-family-evidence-ref and refuses --parent-variant)\n      --export-variant string                       export the best candidate as <pack>.<variant-id>.yaml plus its owned fragments instead of rewriting the source pack (mutually exclusive with --apply)\n      --file string                                 pack YAML file to optimize (must be writable)\n      --format string                               text|json (default \"text\")\n  -h, --help                                        help for optimize\n      --holdout-require string                      what --apply needs from the holdout verdict: no-regression (improved|no-gain|within-noise) or improved (default \"no-regression\")\n      --holdout-suite-file string                   disjoint eval-suite YAML evaluated only for the final baseline-vs-best verdict (skipped when no round was accepted); gates --apply per --holdout-require\n      --judge-model string                          grade every judge block with this model on the run's provider instead of the target model (a case's own judge.model still wins); an ordered comma list primary,fallback,... re-asks a judge turn that fails on one model (provider error such as a content-filter 400, timeout, judge refusal, or a reply still unreadable after its resample) on the next, recording judge_model and judge_fallbacks per row; does not imply --trust-model-judge\n      --margin-cases int                            holdout gain floor, in case units (default 2)\n      --max-assertion-overlap float                 maximum fraction of distinct holdout assertion literals reused from training (0 disables the independence preflight) (default 0.34)\n      --max-calls int                               refuse a run whose worst-case model-call count exceeds this ceiling (0 disables) (default 5000)\n      --max-changed-chars int                       edit-size cap a --export-variant proposal is validated against: len(target)+len(content) summed over its operations (0 uses the exporter's default of 4000). Required with --export-campaign; declare it in the preregistration's edit_policy\n      --max-infra-frac float                        maximum fraction of infrastructure errors before a verdict is called invalid (default 0.2)\n      --max-output-tokens int                       maximum tokens in each evaluated case response (0 disables) (default 4096)\n      --min-delta float                             minimum hard-score gain a candidate must clear (default 0.01)\n      --min-holdout-cases int                       minimum measured holdout cases below which the verdict is split-too-small (default 25)\n      --optimizer-model string                      model for the optimizer role (default: the target model)\n      --optimizer-provider string                   provider for the optimizer role (default: the target provider)\n      --optimizer-timeout duration                  deadline for each optimizer proposal call (0 disables) (default 4m0s)\n      --out string                                  artifact directory (default .sonny/optimize/<pack-id>)\n      --parent-variant string                       family variant id the exported exact variant extends\n      --progress-file string                        append optimization phase events as JSONL (default: <out>/progress.jsonl)\n      --progress-stderr                             also render compact progress events on stderr (progress JSONL is always written to --progress-file)\n      --proposal-retries int                        bounded retries for malformed optimizer replies (default 2)\n      --repeat int                                  eval repeats per pass (flakiness discipline) (default 1)\n      --rounds int                                  optimization rounds to run (default 3)\n      --stop-on-invalid                             stop after the first unmeasured candidate round and skip holdout/apply\n      --suite-file string                           eval suite YAML to optimize against (overrides the pack's inline pack_eval_suite)\n      --target-profile string                       catalog target-profile id the variant is trained for (required with --export-variant)\n      --target-profile-revision string              pin the catalog profile revision\n      --target-profiles string                      target-profile catalog path (default: <dir>/../model-registry/target-profiles.yaml)\n      --trust-model-judge                           use model judge verdicts for local eval/optimization grading (the judge is the --judge-model model when given, else the target model); records remain advisory for runtime and release gates\n      --variant-root string                         authorized variant output root (default: the directory holding the pack file)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n\nUse \"sonny recipe optimize [command] --help\" for more information about a command.\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny recipe optimize matrix",
      "path": [
        "recipe",
        "optimize",
        "matrix"
      ],
      "summary": "Run the bounded target x tier x benchmark qualification matrix",
      "usage": "  sonny recipe optimize matrix [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--capability-digest",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "host capability digest stamped onto every loaded target profile",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--concurrency",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "maximum concurrent cells dispatched through the shared bounded scheduler (default 1)",
          "default_as_displayed": "1",
          "group": "Flags"
        },
        {
          "name": "--dry-run",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "print the expanded cell plan with each cell's identity and budget share; make no model calls",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for matrix",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--live",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "declare that every cell reaches a real provider; without it the run manifest records live:false and can never support a promotion",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--matrix-file",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "frozen sonny.variant-matrix/v1 campaign plan to execute (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--out",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "artifact directory holding the checkpoint, the run manifest and one directory per cell (default packs/skillopt/results/campaign/<campaign>)",
          "default_as_displayed": "packs/skillopt/results/campaign/<campaign>",
          "group": "Flags"
        },
        {
          "name": "--preregistration-file",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "frozen preregistration the plan pins (default: <matrix-dir>/../preregistration/<campaign>.json)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--profile-catalog",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "target-profile catalog path (default: standard discovery relative to --pack-dir)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--recipe-dir",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "pack directory the target-profile catalog is discovered relative to",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "matrix reads the frozen sonny.variant-matrix/v1 campaign plan and the preregistration it pins, verifies the two agree, and runs every runnable (target x tier x benchmark x seed) cell through the shared bounded scheduler. Each cell gets its own candidate identity, its own output directory, its own checkpoint entry and its own result digest; nothing is averaged across targets. A blocked target and a pending tier are recorded as explicit non-results and make no provider call, and the predeclared no_skill control arm is recorded rather than folded into the generic tier. Budgets are hard stops, and --dry-run prints the whole cell plan without dispatching anything.\n\nNOTE: because this is a subcommand of `recipe optimize`, the recipe id \"matrix\" is reserved here.\n\nUsage:\n  sonny recipe optimize matrix [flags]\n\nFlags:\n      --capability-digest string      host capability digest stamped onto every loaded target profile\n      --concurrency int               maximum concurrent cells dispatched through the shared bounded scheduler (default 1)\n      --dry-run                       print the expanded cell plan with each cell's identity and budget share; make no model calls\n      --format string                 text|json (default \"text\")\n  -h, --help                          help for matrix\n      --live                          declare that every cell reaches a real provider; without it the run manifest records live:false and can never support a promotion\n      --matrix-file string            frozen sonny.variant-matrix/v1 campaign plan to execute (required)\n      --out string                    artifact directory holding the checkpoint, the run manifest and one directory per cell (default packs/skillopt/results/campaign/<campaign>)\n      --preregistration-file string   frozen preregistration the plan pins (default: <matrix-dir>/../preregistration/<campaign>.json)\n      --profile-catalog string        target-profile catalog path (default: standard discovery relative to --pack-dir)\n      --recipe-dir string             pack directory the target-profile catalog is discovered relative to\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny recipe pin",
      "path": [
        "recipe",
        "pin"
      ],
      "summary": "Pin a model-pack variant for a session, or as a pack-wide standing default",
      "usage": "  sonny recipe pin <recipe-id> [variant-id] [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--allow-draft-variants",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "allow a draft (not approved) variant to be pinned; for a qualification campaign's draft-time measurement only",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--allow-unapproved-profiles",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "allow a not-yet-approved target profile in the compatibility check; for a qualification campaign's draft-time measurement only",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--capability-digest",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "the host's capability-surface digest (default: the offline no-host-surface digest)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--clear",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "remove the pin instead of writing one",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--digest",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "additionally require this exact envelope digest",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--dir",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "pack directory to load, REPLACING standard discovery (not additive)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--file",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "load a single pack YAML by file path",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "output format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for pin",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--session",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "pin for one session id instead of a standing default",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--target-profile",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "check the pin's compatibility against this catalog target-profile id (required unless --clear)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--target-profile-revision",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "pin the catalog profile revision the compatibility check runs against",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--target-profiles",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "target-profile catalog path (default: <dir>/../model-registry/target-profiles.yaml)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Persists an explicit model-pack variant pin: for one session with\n--session <id>, or as a pack-wide standing default when --session is\nomitted.\n\nBefore writing, the pin is checked the same way an activation would check\nit -- against --target-profile, through the same offline resolver\n'pack resolve --explain' uses -- and a pin that would not resolve for that\ntarget is refused with its modelvariant error code and never written.\n\n--clear removes the pin instead of writing one; naming a variant id is\noptional with --clear.\n\nUsage:\n  sonny recipe pin <recipe-id> [variant-id] [flags]\n\nFlags:\n      --allow-draft-variants             allow a draft (not approved) variant to be pinned; for a qualification campaign's draft-time measurement only\n      --allow-unapproved-profiles        allow a not-yet-approved target profile in the compatibility check; for a qualification campaign's draft-time measurement only\n      --capability-digest string         the host's capability-surface digest (default: the offline no-host-surface digest)\n      --clear                            remove the pin instead of writing one\n      --digest string                    additionally require this exact envelope digest\n      --dir string                       pack directory to load, REPLACING standard discovery (not additive)\n      --file string                      load a single pack YAML by file path\n      --format string                    output format: text|json (default \"text\")\n  -h, --help                             help for pin\n      --session string                   pin for one session id instead of a standing default\n      --target-profile string            check the pin's compatibility against this catalog target-profile id (required unless --clear)\n      --target-profile-revision string   pin the catalog profile revision the compatibility check runs against\n      --target-profiles string           target-profile catalog path (default: <dir>/../model-registry/target-profiles.yaml)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny recipe qualify",
      "path": [
        "recipe",
        "qualify"
      ],
      "summary": "Assemble and freeze a model-variant campaign's qualification document",
      "usage": "  sonny recipe qualify [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--campaign",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "campaign id; must equal the matrix's campaign_id",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--cells-dir",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "directory of measured cell descriptors",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--compiler-version",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "the pack compiler version the campaign ran under (default \"pack.compile/v2\")",
          "default_as_displayed": "\"pack.compile/v2\"",
          "group": "Flags"
        },
        {
          "name": "--date",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "YYYY-MM-DD, used only in the printed ledger rows",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--evidence-dir",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "directory of sonny.variant-evidence/v1 records",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Flags"
        },
        {
          "name": "--freeze-preregistration",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "stand-alone mode: freeze a Phase 0 document in place and exit",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for qualify",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--ledger-rows",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "also print the packs/skillopt/README.md rows",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--matrix",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "frozen matrix manifest",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--notes",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "used only in the printed ledger rows",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--out",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "output document path (qualification/<c>/qualification.json)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--preregistration",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "frozen Phase 0 document",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--run-dir",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "used only in the printed ledger rows",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "qualify reads the frozen preregistration and matrix, the measured cell descriptors and the paired evidence records, and writes the frozen sonny.qualification/v1 campaign document. Every blocked target gets a reported row with the verdict \"unsupported\" and no measured cells. Every evidence record's digest is verified and bound to the frozen matrix before it is read, and a promotion is withheld unless the campaign's predeclared controls were measured for that target. promote, reject and blocked all exit ZERO with the document on stdout; only an invalid input exits non-zero. --freeze-preregistration is a stand-alone mode that freezes a Phase 0 document in place.\n\nUsage:\n  sonny recipe qualify [flags]\n\nFlags:\n      --campaign string                 campaign id; must equal the matrix's campaign_id\n      --cells-dir string                directory of measured cell descriptors\n      --compiler-version string         the pack compiler version the campaign ran under (default \"pack.compile/v2\")\n      --date string                     YYYY-MM-DD, used only in the printed ledger rows\n      --evidence-dir string             directory of sonny.variant-evidence/v1 records\n      --format string                   text|json (default \"text\")\n      --freeze-preregistration string   stand-alone mode: freeze a Phase 0 document in place and exit\n  -h, --help                            help for qualify\n      --ledger-rows                     also print the packs/skillopt/README.md rows\n      --matrix string                   frozen matrix manifest\n      --notes string                    used only in the printed ledger rows\n      --out string                      output document path (qualification/<c>/qualification.json)\n      --preregistration string          frozen Phase 0 document\n      --run-dir string                  used only in the printed ledger rows\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny recipe reload",
      "path": [
        "recipe",
        "reload"
      ],
      "summary": "Force-refetch one or all tracked recipe sources",
      "usage": "  sonny recipe reload [name] [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for reload",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "reload performs an unconditional git fetch+reset for the named source (or every source when name is omitted). It ignores UpdatePolicy so a manual-policy source still pulls down a new tip on demand.\n\nUsage:\n  sonny recipe reload [name] [flags]\n\nFlags:\n  -h, --help   help for reload\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny recipe remove",
      "path": [
        "recipe",
        "remove"
      ],
      "summary": "Drop a recipe source and delete its cache directory",
      "usage": "  sonny recipe remove <name> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for remove",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Drop a recipe source and delete its cache directory\n\nUsage:\n  sonny recipe remove <name> [flags]\n\nFlags:\n  -h, --help   help for remove\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny recipe replay",
      "path": [
        "recipe",
        "replay"
      ],
      "summary": "Reproduce a pinned variant decision from a lock and a snapshot",
      "usage": "  sonny recipe replay [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "output format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for replay",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--lock",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "saved route lock document (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--snapshot",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "saved snapshot document (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Verifies a saved route lock, rebuilds the saved snapshot from its captured\nbytes, and reproduces the pinned decision.\n\nIt REPRODUCES; it does not re-decide (amendment A-09). The rendered\ndocument is marked origin=replay, its candidate set and its chain are the\nLOCK's, and any input that has moved is reported as lock drift naming the\ninput rather than silently re-resolving to a new answer.\n\nUsage:\n  sonny recipe replay [flags]\n\nFlags:\n      --format string     output format: text|json (default \"text\")\n  -h, --help              help for replay\n      --lock string       saved route lock document (required)\n      --snapshot string   saved snapshot document (required)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny recipe resolve",
      "path": [
        "recipe",
        "resolve"
      ],
      "summary": "Emit the fully-resolved, tool-aware compiled subject for a recipe",
      "usage": "  sonny recipe resolve <recipe-id> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--allow-draft-variants",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "allow a draft (not approved) variant to be selected by this resolution; for a qualification campaign's draft-time measurement only",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--capability-digest",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "the host's capability-surface digest (default: the offline no-host-surface digest)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--connect",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "connect to enabled MCP servers and enumerate their tools (spawns processes)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--connect-timeout",
          "shorthand": null,
          "type_as_displayed": "duration",
          "description": "per-server MCP connect timeout (only used with --connect) (default 15s)",
          "default_as_displayed": "15s",
          "group": "Flags"
        },
        {
          "name": "--dir",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "pack directory to load, REPLACING standard discovery (not additive)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--explain",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "emit the full selection explanation (compiles nothing, calls no provider)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--file",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "load a single pack YAML by file path",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "output format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for resolve",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--lock-out",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "with --explain, write the resolution's redacted route lock here (replayable with pack replay)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--mcp-config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "MCP sidecar config path (default: standard discovery)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--snapshot",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "resolve offline against a saved snapshot file",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--subject-version",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "subject contract to emit: v1 (legacy shape) or v2 (target profile + component provenance) (default \"v1\")",
          "default_as_displayed": "\"v1\"",
          "group": "Flags"
        },
        {
          "name": "--target-profile",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "resolve against this catalog profile id",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--target-profile-revision",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "pin the catalog profile revision",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--target-profiles",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "target-profile catalog path (default: <dir>/../model-registry/target-profiles.yaml)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--variant",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "explicit variant pin, or auto for automatic routing (default \"auto\")",
          "default_as_displayed": "\"auto\"",
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Loads a recipe, builds its effective tool registry (native tools scoped\nby the pack's allowlist, optionally merged with MCP server tools), renders\nthe tool-aware system prompt exactly as an interactive session would, and\nemits the result as a machine-readable \"subject\": the rendered prompt,\nits components, the tools it was told about, and content-addressable\ndigests over each. This is the introspection contract external\nprompt-optimizers consume.\n\nWithout --connect, MCP tools are absent from the render and mcp_digest\nhashes only the resolved server configs (no processes are spawned).\nWith --connect, MCP servers are connected and their tools enumerated\n(subject to the operator's MCP allowlist).\n\nUsage:\n  sonny recipe resolve <recipe-id> [flags]\n\nFlags:\n      --allow-draft-variants             allow a draft (not approved) variant to be selected by this resolution; for a qualification campaign's draft-time measurement only\n      --capability-digest string         the host's capability-surface digest (default: the offline no-host-surface digest)\n      --connect                          connect to enabled MCP servers and enumerate their tools (spawns processes)\n      --connect-timeout duration         per-server MCP connect timeout (only used with --connect) (default 15s)\n      --dir string                       pack directory to load, REPLACING standard discovery (not additive)\n      --explain                          emit the full selection explanation (compiles nothing, calls no provider)\n      --file string                      load a single pack YAML by file path\n      --format string                    output format: text|json (default \"text\")\n  -h, --help                             help for resolve\n      --lock-out string                  with --explain, write the resolution's redacted route lock here (replayable with pack replay)\n      --mcp-config string                MCP sidecar config path (default: standard discovery)\n      --snapshot string                  resolve offline against a saved snapshot file\n      --subject-version string           subject contract to emit: v1 (legacy shape) or v2 (target profile + component provenance) (default \"v1\")\n      --target-profile string            resolve against this catalog profile id\n      --target-profile-revision string   pin the catalog profile revision\n      --target-profiles string           target-profile catalog path (default: <dir>/../model-registry/target-profiles.yaml)\n      --variant string                   explicit variant pin, or auto for automatic routing (default \"auto\")\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny recipe search",
      "path": [
        "recipe",
        "search"
      ],
      "summary": "BM25-rank loaded prompt recipes against a query",
      "usage": "  sonny recipe search <query> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--detail",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "short|full (default \"short\")",
          "default_as_displayed": "\"short\"",
          "group": "Flags"
        },
        {
          "name": "--format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for search",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--tags",
          "shorthand": null,
          "type_as_displayed": "strings",
          "description": "filter to packs carrying ALL listed tags before ranking",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "BM25-rank loaded prompt recipes against a query\n\nUsage:\n  sonny recipe search <query> [flags]\n\nFlags:\n      --detail string   short|full (default \"short\")\n      --format string   text|json (default \"text\")\n  -h, --help            help for search\n      --tags strings    filter to packs carrying ALL listed tags before ranking\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny recipe snapshot",
      "path": [
        "recipe",
        "snapshot"
      ],
      "summary": "Write a replayable variant-resolution snapshot for one logical recipe",
      "usage": "  sonny recipe snapshot <recipe-id> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--capability-digest",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "the host's capability-surface digest (default: the offline no-host-surface digest)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--dir",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "pack directory to load, REPLACING standard discovery (not additive)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--file",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "load a single pack YAML by file path",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "output format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for snapshot",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--out",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "snapshot document path (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--target-profiles",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "target-profile catalog path (default: <dir>/../model-registry/target-profiles.yaml)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Captures every input a variant resolution depends on -- the discovered\nvariant documents, the prompt fragments they reference, the base recipe\nclosure, the target-profile catalog and the effective policy -- into one\nportable document, and reports the snapshot digest it computed.\n\nThe document carries the captured BYTES, which is what makes it\nreplayable: recipe replay and recipe resolve --snapshot rebuild the snapshot\nfrom it and refuse any mismatch with the digest it states. It contains no\ntimestamp, no hostname, no endpoint, no credential and no absolute path.\n\nUsage:\n  sonny recipe snapshot <recipe-id> [flags]\n\nFlags:\n      --capability-digest string   the host's capability-surface digest (default: the offline no-host-surface digest)\n      --dir string                 pack directory to load, REPLACING standard discovery (not additive)\n      --file string                load a single pack YAML by file path\n      --format string              output format: text|json (default \"text\")\n  -h, --help                       help for snapshot\n      --out string                 snapshot document path (required)\n      --target-profiles string     target-profile catalog path (default: <dir>/../model-registry/target-profiles.yaml)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny recipe update",
      "path": [
        "recipe",
        "update"
      ],
      "summary": "Fetch + reset tracked sources to their upstream branch tip",
      "usage": "  sonny recipe update [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for update",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--name",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "limit update to one source (empty = update all on_startup sources)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Fetch + reset tracked sources to their upstream branch tip\n\nUsage:\n  sonny recipe update [flags]\n\nFlags:\n  -h, --help          help for update\n      --name string   limit update to one source (empty = update all on_startup sources)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny recipe validate",
      "path": [
        "recipe",
        "validate"
      ],
      "summary": "Statically validate a recipe YAML file",
      "usage": "  sonny recipe validate <file> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for validate",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--output",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "output format: text | jsonl (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Statically validate a recipe YAML file\n\nUsage:\n  sonny recipe validate <file> [flags]\n\nFlags:\n  -h, --help            help for validate\n      --output string   output format: text | jsonl (default \"text\")\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny recipe variant",
      "path": [
        "recipe",
        "variant"
      ],
      "summary": "Operate on one model recipe variant envelope file",
      "usage": "  sonny recipe variant [command]",
      "aliases": [],
      "children": [
        {
          "name": "approve",
          "summary": "Flip an exported variant envelope's trust.status from draft to approved"
        }
      ],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for variant",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Unlike `recipe variants <recipe-id>`, which lists everything discovery found for a logical recipe, `recipe variant` subcommands address exactly one pack_variant envelope file an operator names.\n\nUsage:\n  sonny recipe variant [command]\n\nAvailable Commands:\n  approve     Flip an exported variant envelope's trust.status from draft to approved\n\nFlags:\n  -h, --help   help for variant\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n\nUse \"sonny recipe variant [command] --help\" for more information about a command.\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny recipe variant approve",
      "path": [
        "recipe",
        "variant",
        "approve"
      ],
      "summary": "Flip an exported variant envelope's trust.status from draft to approved",
      "usage": "  sonny recipe variant approve [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--file",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "approve this envelope file directly",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "output format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for approve",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--recipe",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "logical pack id, with --variant-root",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--variant",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "model variant id, with --variant-root",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--variant-root",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "variant directory tree: resolves --pack/--variant to <root>/<pack>.<variant>.yaml, and is the tree scanned for exact children extending the approved variant",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Sets trust.status: approved on one exported pack_variant envelope so the\nruntime activator will serve it: internal/modelvariant's evaluateTrust\nadmits ONLY approved when require_approval is set (the shipped default),\nand the exporter always writes draft -- an exported variant is a proposal,\nnever born approved.\n\nThe envelope's own digest INCLUDES trust.status (VariantEnvelope.Digest\nstrips only trust.signature, trust.key_id and notes), so approving a\nvariant changes its digest, and every exact variant that extends it pins\nthat exact digest in extends.digest. This command therefore also finds\nevery exact child under --variant-root (or, with --file alone, under the\nfile's own directory) that extends the approved variant, re-pins its\nextends.digest to the new digest, and approves it too, so the chain stays\nresolvable with nothing left stale.\n\nAn already-approved target is not an error: nothing is written and the\ncommand reports it as already approved. A revoked target refuses: \u00a7C.10\ngives revocation no policy knob that relaxes it, and this command is not\none either.\n\nUsage:\n  sonny recipe variant approve [flags]\n\nFlags:\n      --file string           approve this envelope file directly\n      --format string         output format: text|json (default \"text\")\n  -h, --help                  help for approve\n      --recipe string         logical pack id, with --variant-root\n      --variant string        model variant id, with --variant-root\n      --variant-root string   variant directory tree: resolves --pack/--variant to <root>/<pack>.<variant>.yaml, and is the tree scanned for exact children extending the approved variant\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny recipe variants",
      "path": [
        "recipe",
        "variants"
      ],
      "summary": "List the model-pack variants discovery found for one logical recipe",
      "usage": "  sonny recipe variants <recipe-id> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--dir",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "pack directory to load, REPLACING standard discovery (not additive)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--file",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "load a single pack YAML by file path",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "output format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for variants",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--include-quarantined",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "include quarantined variants; they are the diagnostic this command exists for (default true)",
          "default_as_displayed": "true",
          "group": "Flags"
        },
        {
          "name": "--include-shadowed",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "include variants a higher tier displaced",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Lists every pack_variant document discovery found for the named logical\npack: its tier, its specificity class, its trust status, whether it is\nactive, shadowed or quarantined, and its envelope and selector digests.\n\nIt resolves nothing and activates nothing: no target profile is consulted,\nno variant is selected and no prompt is compiled. A recipe with no variants\nprints an empty list and exits zero.\n\n--dir REPLACES standard discovery (not additive), the same meaning it has\non recipe resolve: exactly the named directory is walked, so the digests\nprinted are the repository's own and not a machine's installed packs.\n\nUsage:\n  sonny recipe variants <recipe-id> [flags]\n\nFlags:\n      --dir string            pack directory to load, REPLACING standard discovery (not additive)\n      --file string           load a single pack YAML by file path\n      --format string         output format: text|json (default \"text\")\n  -h, --help                  help for variants\n      --include-quarantined   include quarantined variants; they are the diagnostic this command exists for (default true)\n      --include-shadowed      include variants a higher tier displaced\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny routing",
      "path": [
        "routing"
      ],
      "summary": "Inspect routing decisions and evaluation evidence",
      "usage": "  sonny routing [command]",
      "aliases": [],
      "children": [
        {
          "name": "canary",
          "summary": "Grade a read-only routing canary and write its evidence bundle"
        },
        {
          "name": "explain",
          "summary": "Explain one routing decision"
        }
      ],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for routing",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "routing exposes why a capability was served by the target it was served by.\n\nEvery value shown is identity-free: opaque manifest handles, eligibility\ncheck names, public scores, evidence counts, and the exact ordered tool\ndeclarations sent to the provider. No provider, model, endpoint, or\ncredential name is ever displayed.\n\nUsage:\n  sonny routing [command]\n\nAvailable Commands:\n  canary      Grade a read-only routing canary and write its evidence bundle\n  explain     Explain one routing decision\n\nFlags:\n  -h, --help   help for routing\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n\nUse \"sonny routing [command] --help\" for more information about a command.\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny routing canary",
      "path": [
        "routing",
        "canary"
      ],
      "summary": "Grade a read-only routing canary and write its evidence bundle",
      "usage": "  sonny routing canary [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for canary",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--log",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "shadow log path",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--out",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "write the evidence bundle to this path",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--read-only",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "required: grade a read-only canary",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Grade a read-only routing canary and write its evidence bundle\n\nUsage:\n  sonny routing canary [flags]\n\nFlags:\n  -h, --help         help for canary\n      --log string   shadow log path\n      --out string   write the evidence bundle to this path\n      --read-only    required: grade a read-only canary\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny routing explain",
      "path": [
        "routing",
        "explain"
      ],
      "summary": "Explain one routing decision",
      "usage": "  sonny routing explain [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "output format (text or json) (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for explain",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--log",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "explanation log path (default: state dir)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--ref",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "explanation ref (default: the most recent decision)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Explain one routing decision\n\nUsage:\n  sonny routing explain [flags]\n\nFlags:\n      --format string   output format (text or json) (default \"text\")\n  -h, --help            help for explain\n      --log string      explanation log path (default: state dir)\n      --ref string      explanation ref (default: the most recent decision)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny run",
      "path": [
        "run"
      ],
      "summary": "Run interactive chat with a prompt recipe",
      "usage": "  sonny run [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--continue",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "Resume the most recent session",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--control-db",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "Path to the control-plane SQLite database (default: $SONNY_CONTROL_DB, then a control.db sibling of the session DB). Only opened/migrated when the control plane is in use (this flag, $SONNY_CONTROL_DB, --mesh-self, or --mesh-addr)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--critic",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "Comma-separated list of critic agents to run (code_quality,security,architecture,performance,testing,documentation)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--critic-recipe",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "Critic pack ID or path to a pack YAML file (default \"critic\")",
          "default_as_displayed": "\"critic\"",
          "group": "Flags"
        },
        {
          "name": "--dangerously-auto-approve-tools",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "DANGEROUS: approve every tool call automatically, with no prompt. Denied tools stay denied and isolation is unaffected. Refused when policy forbids it",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--dangerously-bypass-all",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "DANGEROUS: --dangerously-auto-approve-tools and --dangerously-bypass-isolation together",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--dangerously-bypass-isolation",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "DANGEROUS: run tools on the host with no isolation realm. Refused when a trusted isolation.yaml sets minimum_mode",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--dir",
          "shorthand": "-d",
          "type_as_displayed": "strings",
          "description": "directory containing pack YAML files (repeatable; env: SONNY_DIR)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--eval",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "run critic and sentiment evaluations on conversation",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--eval-model",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "model for evaluations (fast/cheap recommended) (default \"gpt-4o-mini\")",
          "default_as_displayed": "\"gpt-4o-mini\"",
          "group": "Flags"
        },
        {
          "name": "--eval-provider",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "provider for evaluation model (default \"openai\")",
          "default_as_displayed": "\"openai\"",
          "group": "Flags"
        },
        {
          "name": "--file",
          "shorthand": "-f",
          "type_as_displayed": "string",
          "description": "single pack YAML file to load",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--headless-mcp",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "connect the allowlisted MCP servers from --mcp-config in a headless --prompt run without an isolation realm; refused when trusted policy forbids it, same as the interactive session",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for run",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--hyper-client-id",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "OAuth client ID for Hyperbolic (required for /login hyper)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--init-models",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "Write the example model-category catalog to the user config dir and exit",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--isolation-assurance",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "minimum assurance override: guarded, native, docker, or vm",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--isolation-backend",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "isolation backend override: auto, native, docker, or vm",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--isolation-machine",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "trusted Docker broker configuration (default: user config isolation-docker.yaml)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--isolation-mode",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "isolation mode override: required, preferred, or off",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--isolation-policy",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "trusted isolation policy file (default: user config isolation.yaml)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--mcp-config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "Path to the MCP server config (default: the profile config directory's mcp.yaml)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--mesh-addr",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "gRPC address of the mesh node to observe (default: SONNY_MESH_ADDR env)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--mesh-peer",
          "shorthand": null,
          "type_as_displayed": "strings",
          "description": "gRPC endpoint of a mesh node to show in the UI Connect dialog (repeatable)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--mesh-self",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "expose this chat session over an in-process mesh.Node so remote clients can attach",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--mesh-self-grpc",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "gRPC listen address for the in-process mesh node (--mesh-self) (default \":50052\")",
          "default_as_displayed": "\":50052\"",
          "group": "Flags"
        },
        {
          "name": "--mesh-self-synapse",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "synapse listen address for the in-process mesh node (--mesh-self) (default \":50053\")",
          "default_as_displayed": "\":50053\"",
          "group": "Flags"
        },
        {
          "name": "--models",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "Path to the user model-category catalog (default: $SONNY_MODELS_FILE, then <config-dir>/models.yaml; see 'sonny config path')",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--new",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "start a fresh session instead of restoring the last one",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--no-tools",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "disable all tools for a headless completion",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--no-trace",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "disable conversation tracing (default: on; env: SONNY_TRACE=0)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--permissions",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "Prompt for approval before write/exec tool calls (default off; reads always auto-allow)",
          "default_as_displayed": "off; reads always auto-allow",
          "group": "Flags"
        },
        {
          "name": "--pick-recipe",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "force the prompt-pack picker even when a default is set",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--policy-binding",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "path to the decision-policy binding a controller dispatched this worker with (a file path, never the binding itself)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--prompt",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "run a single headless turn with this text and exit (implies --simple); used to spawn sonny as a one-shot sub-agent",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--recipe",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "select an already-discovered pack by its id (skips the picker)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--recipe-dir",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "DEPRECATED: alias for --dir (single dir)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--recipe-file",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "DEPRECATED: alias for --file",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--result-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "write the headless turn's result (final reply, usage, tool calls, trace ids) as JSON to this path; requires --prompt",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--session",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "Resume a specific session by UUID; fails fast if id is unknown",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--session-db",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "Path to the session SQLite database (default: $XDG_DATA_HOME/sonny/sessions.db)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--show-prompt",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "show rendered system prompt and exit",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--simple",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "use simple chat mode (no TUI)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--supervisor-deployment",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "absolute protected JSON deployment for durable interactive supervision (env: SONNY_SUPERVISOR_DEPLOYMENT)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--task-ref",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "external work-item reference (Jira/GitLab issue URL) governing this session",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--telemetry",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "path to JSONL file for logging interactions",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--trace-ca",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "CA certificate for trace upload",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--trace-cert",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client certificate for trace upload",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--trace-dir",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "directory for saving conversation traces (default: <data-dir>/traces)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--trace-key",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client key for trace upload",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--trace-server",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "trace aggregation server address (default \"localhost:50051\")",
          "default_as_displayed": "\"localhost:50051\"",
          "group": "Flags"
        },
        {
          "name": "--trace-upload",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable automatic trace upload to aggregation server",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--training-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "export metadata-bearing training data (openai_chat, openai_tools, sharegpt, sharegpt_tool, or chatml)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--training-include-tools",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "include tool calls in training export",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--var",
          "shorthand": null,
          "type_as_displayed": "stringArray",
          "description": "Set pack variable (key=value), repeatable",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--variant-constraint",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "path to the model-variant constraint packet a parent dispatched this worker with (a file path, never the packet itself)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Run an interactive chat session with a recipe.\n\nThis command starts an interactive session where you can chat with the LLM\nusing the configured prompt pack. The session supports tool execution,\nLSP integration, and agent management.\n\nExamples:\n  # Run with packs discovered from default locations\n  sonny run\n\n  # Run with one or more pack directories (repeatable)\n  sonny run --dir ./packs --dir <data-dir>/packs\n\n  # Run with a specific pack file\n  sonny run --file ./my-pack.yaml\n\n  # Run with a specific provider and model\n  sonny run --provider anthropic --model claude-sonnet-4-20250514\n\n  # Run in simple mode (no TUI)\n  sonny run --simple\n\nUsage:\n  sonny run [flags]\n\nFlags:\n      --continue                         Resume the most recent session\n      --control-db string                Path to the control-plane SQLite database (default: $SONNY_CONTROL_DB, then a control.db sibling of the session DB). Only opened/migrated when the control plane is in use (this flag, $SONNY_CONTROL_DB, --mesh-self, or --mesh-addr)\n      --critic string                    Comma-separated list of critic agents to run (code_quality,security,architecture,performance,testing,documentation)\n      --critic-recipe string             Critic pack ID or path to a pack YAML file (default \"critic\")\n      --dangerously-auto-approve-tools   DANGEROUS: approve every tool call automatically, with no prompt. Denied tools stay denied and isolation is unaffected. Refused when policy forbids it\n      --dangerously-bypass-all           DANGEROUS: --dangerously-auto-approve-tools and --dangerously-bypass-isolation together\n      --dangerously-bypass-isolation     DANGEROUS: run tools on the host with no isolation realm. Refused when a trusted isolation.yaml sets minimum_mode\n  -d, --dir strings                      directory containing pack YAML files (repeatable; env: SONNY_DIR)\n      --eval                             run critic and sentiment evaluations on conversation\n      --eval-model string                model for evaluations (fast/cheap recommended) (default \"gpt-4o-mini\")\n      --eval-provider string             provider for evaluation model (default \"openai\")\n  -f, --file string                      single pack YAML file to load\n      --headless-mcp                     connect the allowlisted MCP servers from --mcp-config in a headless --prompt run without an isolation realm; refused when trusted policy forbids it, same as the interactive session\n  -h, --help                             help for run\n      --hyper-client-id string           OAuth client ID for Hyperbolic (required for /login hyper)\n      --init-models                      Write the example model-category catalog to the user config dir and exit\n      --isolation-assurance string       minimum assurance override: guarded, native, docker, or vm\n      --isolation-backend string         isolation backend override: auto, native, docker, or vm\n      --isolation-machine string         trusted Docker broker configuration (default: user config isolation-docker.yaml)\n      --isolation-mode string            isolation mode override: required, preferred, or off\n      --isolation-policy string          trusted isolation policy file (default: user config isolation.yaml)\n      --mcp-config string                Path to the MCP server config (default: the profile config directory's mcp.yaml)\n      --mesh-addr string                 gRPC address of the mesh node to observe (default: SONNY_MESH_ADDR env)\n      --mesh-peer strings                gRPC endpoint of a mesh node to show in the UI Connect dialog (repeatable)\n      --mesh-self                        expose this chat session over an in-process mesh.Node so remote clients can attach\n      --mesh-self-grpc string            gRPC listen address for the in-process mesh node (--mesh-self) (default \":50052\")\n      --mesh-self-synapse string         synapse listen address for the in-process mesh node (--mesh-self) (default \":50053\")\n      --models string                    Path to the user model-category catalog (default: $SONNY_MODELS_FILE, then <config-dir>/models.yaml; see 'sonny config path')\n      --new                              start a fresh session instead of restoring the last one\n      --no-tools                         disable all tools for a headless completion\n      --no-trace                         disable conversation tracing (default: on; env: SONNY_TRACE=0)\n      --permissions                      Prompt for approval before write/exec tool calls (default off; reads always auto-allow)\n      --pick-recipe                      force the prompt-pack picker even when a default is set\n      --policy-binding string            path to the decision-policy binding a controller dispatched this worker with (a file path, never the binding itself)\n      --prompt string                    run a single headless turn with this text and exit (implies --simple); used to spawn sonny as a one-shot sub-agent\n      --recipe string                    select an already-discovered pack by its id (skips the picker)\n      --recipe-dir string                DEPRECATED: alias for --dir (single dir)\n      --recipe-file string               DEPRECATED: alias for --file\n      --result-json string               write the headless turn's result (final reply, usage, tool calls, trace ids) as JSON to this path; requires --prompt\n      --session string                   Resume a specific session by UUID; fails fast if id is unknown\n      --session-db string                Path to the session SQLite database (default: $XDG_DATA_HOME/sonny/sessions.db)\n      --show-prompt                      show rendered system prompt and exit\n      --simple                           use simple chat mode (no TUI)\n      --supervisor-deployment string     absolute protected JSON deployment for durable interactive supervision (env: SONNY_SUPERVISOR_DEPLOYMENT)\n      --task-ref string                  external work-item reference (Jira/GitLab issue URL) governing this session\n      --telemetry string                 path to JSONL file for logging interactions\n      --trace-ca string                  CA certificate for trace upload\n      --trace-cert string                client certificate for trace upload\n      --trace-dir string                 directory for saving conversation traces (default: <data-dir>/traces)\n      --trace-key string                 client key for trace upload\n      --trace-server string              trace aggregation server address (default \"localhost:50051\")\n      --trace-upload                     enable automatic trace upload to aggregation server\n      --training-format string           export metadata-bearing training data (openai_chat, openai_tools, sharegpt, sharegpt_tool, or chatml)\n      --training-include-tools           include tool calls in training export\n      --var stringArray                  Set pack variable (key=value), repeatable\n      --variant-constraint string        path to the model-variant constraint packet a parent dispatched this worker with (a file path, never the packet itself)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny session",
      "path": [
        "session"
      ],
      "summary": "Run deterministic full-session evaluation and optimization",
      "usage": "  sonny session [command]",
      "aliases": [],
      "children": [
        {
          "name": "eval",
          "summary": "Evaluate, replay, minimize, and promote full-session regressions"
        },
        {
          "name": "optimize",
          "summary": "Run paired full-session gates for an explicit prompt candidate"
        }
      ],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for session",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Run deterministic full-session evaluation and optimization\n\nUsage:\n  sonny session [command]\n\nAvailable Commands:\n  eval        Evaluate, replay, minimize, and promote full-session regressions\n  optimize    Run paired full-session gates for an explicit prompt candidate\n\nFlags:\n  -h, --help   help for session\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n\nUse \"sonny session [command] --help\" for more information about a command.\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny session eval",
      "path": [
        "session",
        "eval"
      ],
      "summary": "Evaluate, replay, minimize, and promote full-session regressions",
      "usage": "  sonny session eval [command]",
      "aliases": [],
      "children": [
        {
          "name": "generate-suite",
          "summary": "Generate the canonical virtual and native context-boundary suite"
        },
        {
          "name": "ingest-traces",
          "summary": "Join and privacy-validate production trace segments"
        },
        {
          "name": "minimize",
          "summary": "Deterministically minimize a trace while preserving its failure signature"
        },
        {
          "name": "promote-fixture",
          "summary": "Seal a reviewed complete trace as a content-addressed regression fixture"
        },
        {
          "name": "regression-request",
          "summary": "Produce paired baseline/candidate evidence for the regression gate"
        },
        {
          "name": "replay",
          "summary": "Replay an admitted trace scenario through the production session adapter"
        },
        {
          "name": "run",
          "summary": "Run a versioned multi-turn scenario through Sonny's production session engine"
        },
        {
          "name": "run-suite",
          "summary": "Run every canonical suite scenario through the production session engine"
        }
      ],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for eval",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Evaluate, replay, minimize, and promote full-session regressions\n\nUsage:\n  sonny session eval [command]\n\nAvailable Commands:\n  generate-suite     Generate the canonical virtual and native context-boundary suite\n  ingest-traces      Join and privacy-validate production trace segments\n  minimize           Deterministically minimize a trace while preserving its failure signature\n  promote-fixture    Seal a reviewed complete trace as a content-addressed regression fixture\n  regression-request Produce paired baseline/candidate evidence for the regression gate\n  replay             Replay an admitted trace scenario through the production session adapter\n  run                Run a versioned multi-turn scenario through Sonny's production session engine\n  run-suite          Run every canonical suite scenario through the production session engine\n\nFlags:\n  -h, --help   help for eval\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n\nUse \"sonny session eval [command] --help\" for more information about a command.\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny session eval generate-suite",
      "path": [
        "session",
        "eval",
        "generate-suite"
      ],
      "summary": "Generate the canonical virtual and native context-boundary suite",
      "usage": "  sonny session eval generate-suite [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--advertised-input",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "advertised input tokens (default 32768)",
          "default_as_displayed": "32768",
          "group": "Flags"
        },
        {
          "name": "--force",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "replace an existing --out file",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for generate-suite",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--id",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "suite identifier (default \"canonical-session\")",
          "default_as_displayed": "\"canonical-session\"",
          "group": "Flags"
        },
        {
          "name": "--out",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "write suite JSON to this file",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--output-reserve",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "reserved output tokens (default 4096)",
          "default_as_displayed": "4096",
          "group": "Flags"
        },
        {
          "name": "--safety-tokens",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "safety margin tokens (default 1024)",
          "default_as_displayed": "1024",
          "group": "Flags"
        },
        {
          "name": "--system-tokens",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "compiled system prompt tokens (default 2048)",
          "default_as_displayed": "2048",
          "group": "Flags"
        },
        {
          "name": "--tool-tokens",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "tool schema tokens (default 2048)",
          "default_as_displayed": "2048",
          "group": "Flags"
        },
        {
          "name": "--workspace",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "materialized dir: workspace fixture (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Generate the canonical virtual and native context-boundary suite\n\nUsage:\n  sonny session eval generate-suite [flags]\n\nFlags:\n      --advertised-input int   advertised input tokens (default 32768)\n      --force                  replace an existing --out file\n  -h, --help                   help for generate-suite\n      --id string              suite identifier (default \"canonical-session\")\n      --out string             write suite JSON to this file\n      --output-reserve int     reserved output tokens (default 4096)\n      --safety-tokens int      safety margin tokens (default 1024)\n      --system-tokens int      compiled system prompt tokens (default 2048)\n      --tool-tokens int        tool schema tokens (default 2048)\n      --workspace string       materialized dir: workspace fixture (required)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny session eval ingest-traces",
      "path": [
        "session",
        "eval",
        "ingest-traces"
      ],
      "summary": "Join and privacy-validate production trace segments",
      "usage": "  sonny session eval ingest-traces [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--dry-run",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "validate without writing --out",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--force",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "replace an existing --out file",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for ingest-traces",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--out",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "write stable JSON output to this file",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--trace",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "trace JSONL file or persistent-session directory (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Join and privacy-validate production trace segments\n\nUsage:\n  sonny session eval ingest-traces [flags]\n\nFlags:\n      --dry-run        validate without writing --out\n      --force          replace an existing --out file\n  -h, --help           help for ingest-traces\n      --out string     write stable JSON output to this file\n      --trace string   trace JSONL file or persistent-session directory (required)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny session eval minimize",
      "path": [
        "session",
        "eval",
        "minimize"
      ],
      "summary": "Deterministically minimize a trace while preserving its failure signature",
      "usage": "  sonny session eval minimize [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--dry-run",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "validate and minimize in memory without writing --out",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--force",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "replace an existing --out file",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for minimize",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--out",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "write minimized stable JSON output to this file",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--trace",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "trace JSONL file or persistent-session directory (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Deterministically minimize a trace while preserving its failure signature\n\nUsage:\n  sonny session eval minimize [flags]\n\nFlags:\n      --dry-run        validate and minimize in memory without writing --out\n      --force          replace an existing --out file\n  -h, --help           help for minimize\n      --out string     write minimized stable JSON output to this file\n      --trace string   trace JSONL file or persistent-session directory (required)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny session eval promote-fixture",
      "path": [
        "session",
        "eval",
        "promote-fixture"
      ],
      "summary": "Seal a reviewed complete trace as a content-addressed regression fixture",
      "usage": "  sonny session eval promote-fixture [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--dry-run",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "validate and compute identity without writing",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--force",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "replace an existing --out file",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for promote-fixture",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--out",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "fixture output path (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--result",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "expected SessionResult JSON (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--reviewed-by",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "human reviewer identity (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--scenario",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "reviewed scenario JSON or YAML (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--trace",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "complete source trace file or directory (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Seal a reviewed complete trace as a content-addressed regression fixture\n\nUsage:\n  sonny session eval promote-fixture [flags]\n\nFlags:\n      --dry-run              validate and compute identity without writing\n      --force                replace an existing --out file\n  -h, --help                 help for promote-fixture\n      --out string           fixture output path (required)\n      --result string        expected SessionResult JSON (required)\n      --reviewed-by string   human reviewer identity (required)\n      --scenario string      reviewed scenario JSON or YAML (required)\n      --trace string         complete source trace file or directory (required)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny session eval regression-request",
      "path": [
        "session",
        "eval",
        "regression-request"
      ],
      "summary": "Produce paired baseline/candidate evidence for the regression gate",
      "usage": "  sonny session eval regression-request <recipe-id> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--baseline-root",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "baseline checkout root (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--candidate-root",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "candidate checkout root (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--force",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "replace an existing request output",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for regression-request",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--impact-plan",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "sealed regression impact plan (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--input-price-per-mtok",
          "shorthand": null,
          "type_as_displayed": "float",
          "description": "approved normalized input price per million tokens (default -1)",
          "default_as_displayed": "-1",
          "group": "Flags"
        },
        {
          "name": "--max-cost-delta-micros",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "maximum allowed mean candidate cost increase in micros (default -1)",
          "default_as_displayed": "-1",
          "group": "Flags"
        },
        {
          "name": "--max-latency-delta-ms",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "maximum allowed mean candidate latency increase in milliseconds (default -1)",
          "default_as_displayed": "-1",
          "group": "Flags"
        },
        {
          "name": "--max-token-delta",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "maximum allowed mean candidate token increase (default -1)",
          "default_as_displayed": "-1",
          "group": "Flags"
        },
        {
          "name": "--max-tool-call-delta",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "maximum allowed mean candidate tool-call increase (default -1)",
          "default_as_displayed": "-1",
          "group": "Flags"
        },
        {
          "name": "--min-pairs",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "minimum measured pairs required by the gate (default 25)",
          "default_as_displayed": "25",
          "group": "Flags"
        },
        {
          "name": "--out",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "regressiongate.Request output path (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--output-price-per-mtok",
          "shorthand": null,
          "type_as_displayed": "float",
          "description": "approved normalized output price per million tokens (default -1)",
          "default_as_displayed": "-1",
          "group": "Flags"
        },
        {
          "name": "--repeat",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "paired replicates per scenario (default 2)",
          "default_as_displayed": "2",
          "group": "Flags"
        },
        {
          "name": "--suite",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "baseline-produced full-session suite (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Produce paired baseline/candidate evidence for the regression gate\n\nUsage:\n  sonny session eval regression-request <recipe-id> [flags]\n\nFlags:\n      --baseline-root string          baseline checkout root (required)\n      --candidate-root string         candidate checkout root (required)\n      --force                         replace an existing request output\n  -h, --help                          help for regression-request\n      --impact-plan string            sealed regression impact plan (required)\n      --input-price-per-mtok float    approved normalized input price per million tokens (default -1)\n      --max-cost-delta-micros int     maximum allowed mean candidate cost increase in micros (default -1)\n      --max-latency-delta-ms int      maximum allowed mean candidate latency increase in milliseconds (default -1)\n      --max-token-delta int           maximum allowed mean candidate token increase (default -1)\n      --max-tool-call-delta int       maximum allowed mean candidate tool-call increase (default -1)\n      --min-pairs int                 minimum measured pairs required by the gate (default 25)\n      --out string                    regressiongate.Request output path (required)\n      --output-price-per-mtok float   approved normalized output price per million tokens (default -1)\n      --repeat int                    paired replicates per scenario (default 2)\n      --suite string                  baseline-produced full-session suite (required)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny session eval replay",
      "path": [
        "session",
        "eval",
        "replay"
      ],
      "summary": "Replay an admitted trace scenario through the production session adapter",
      "usage": "  sonny session eval replay <recipe-id> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--dir",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "additional pack directory",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--dry-run",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "validate trace/scenario without provider calls or writes",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--expected-result",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "optional prior SessionResult JSON for exact divergence comparison",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--file",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "load the pack from one YAML file",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--force",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "replace an existing --out file",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for replay",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--out",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "write stable JSON output to this file",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--scenario",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "reviewed scenario JSON or YAML (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--trace",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "source trace file or directory (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--workspace",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "materialized workspace directory overriding workspace_fixture",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Replay an admitted trace scenario through the production session adapter\n\nUsage:\n  sonny session eval replay <recipe-id> [flags]\n\nFlags:\n      --dir string               additional pack directory\n      --dry-run                  validate trace/scenario without provider calls or writes\n      --expected-result string   optional prior SessionResult JSON for exact divergence comparison\n      --file string              load the pack from one YAML file\n      --force                    replace an existing --out file\n  -h, --help                     help for replay\n      --out string               write stable JSON output to this file\n      --scenario string          reviewed scenario JSON or YAML (required)\n      --trace string             source trace file or directory (required)\n      --workspace string         materialized workspace directory overriding workspace_fixture\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny session eval run",
      "path": [
        "session",
        "eval",
        "run"
      ],
      "summary": "Run a versioned multi-turn scenario through Sonny's production session engine",
      "usage": "  sonny session eval run <recipe-id> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--dir",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "additional pack directory",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--dry-run",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "validate and digest inputs without provider calls or writes",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--file",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "load the pack from one YAML file",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--force",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "replace an existing --out file",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for run",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--hosted",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "run the scenario on a hosted session of a private daemon with local agent messaging on, so proceed_workers runs real native workers; every turn must be request_expectation: no_request and is graded on host facts (SONNY-4187)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--out",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "write the stable JSON report to this file",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--scenario",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "scenario JSON or YAML file (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--workspace",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "materialized workspace directory overriding workspace_fixture",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Run a versioned multi-turn scenario through Sonny's production session engine\n\nUsage:\n  sonny session eval run <recipe-id> [flags]\n\nFlags:\n      --dir string         additional pack directory\n      --dry-run            validate and digest inputs without provider calls or writes\n      --file string        load the pack from one YAML file\n      --force              replace an existing --out file\n  -h, --help               help for run\n      --hosted             run the scenario on a hosted session of a private daemon with local agent messaging on, so proceed_workers runs real native workers; every turn must be request_expectation: no_request and is graded on host facts (SONNY-4187)\n      --out string         write the stable JSON report to this file\n      --scenario string    scenario JSON or YAML file (required)\n      --workspace string   materialized workspace directory overriding workspace_fixture\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny session eval run-suite",
      "path": [
        "session",
        "eval",
        "run-suite"
      ],
      "summary": "Run every canonical suite scenario through the production session engine",
      "usage": "  sonny session eval run-suite <recipe-id> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--dir",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "additional pack directory",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--dry-run",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "validate suite and pack without provider calls",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--file",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "load the pack from one YAML file",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--force",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "replace an existing --out file",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for run-suite",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--out",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "write stable JSON report to this file",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--suite",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "canonical suite JSON file (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Run every canonical suite scenario through the production session engine\n\nUsage:\n  sonny session eval run-suite <recipe-id> [flags]\n\nFlags:\n      --dir string     additional pack directory\n      --dry-run        validate suite and pack without provider calls\n      --file string    load the pack from one YAML file\n      --force          replace an existing --out file\n  -h, --help           help for run-suite\n      --out string     write stable JSON report to this file\n      --suite string   canonical suite JSON file (required)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny session optimize",
      "path": [
        "session",
        "optimize"
      ],
      "summary": "Run paired full-session gates for an explicit prompt candidate",
      "usage": "  sonny session optimize <recipe-id> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--candidate-file",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "candidate pack YAML (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--concurrency",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "run scenario/replicate paired trials through the shared bounded scheduler with up to this many concurrent trials (<=1 is serial) (default 1)",
          "default_as_displayed": "1",
          "group": "Flags"
        },
        {
          "name": "--dir",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "additional baseline pack directory",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--dry-run",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "validate candidate/scenarios without provider calls or writes",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--file",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "baseline pack YAML",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--force",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "replace an existing --out file",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for optimize",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--journal",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "durable arm journal for cancellation-safe resume",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--min-pairs",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "minimum valid pairs required by the gate (default 10)",
          "default_as_displayed": "10",
          "group": "Flags"
        },
        {
          "name": "--out",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "write stable JSON output to this file",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--repeat",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "paired replicates per scenario (default 10)",
          "default_as_displayed": "10",
          "group": "Flags"
        },
        {
          "name": "--scenario",
          "shorthand": null,
          "type_as_displayed": "strings",
          "description": "scenario JSON/YAML file; repeat for a suite (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--workspace",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "materialized workspace overriding every fixture",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Run paired full-session gates for an explicit prompt candidate\n\nUsage:\n  sonny session optimize <recipe-id> [flags]\n\nFlags:\n      --candidate-file string   candidate pack YAML (required)\n      --concurrency int         run scenario/replicate paired trials through the shared bounded scheduler with up to this many concurrent trials (<=1 is serial) (default 1)\n      --dir string              additional baseline pack directory\n      --dry-run                 validate candidate/scenarios without provider calls or writes\n      --file string             baseline pack YAML\n      --force                   replace an existing --out file\n  -h, --help                    help for optimize\n      --journal string          durable arm journal for cancellation-safe resume\n      --min-pairs int           minimum valid pairs required by the gate (default 10)\n      --out string              write stable JSON output to this file\n      --repeat int              paired replicates per scenario (default 10)\n      --scenario strings        scenario JSON/YAML file; repeat for a suite (required)\n      --workspace string        materialized workspace overriding every fixture\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny supervisor",
      "path": [
        "supervisor"
      ],
      "summary": "Manage the supervisor daemon: ensure, serve, status, stop",
      "usage": "  sonny supervisor [command]",
      "aliases": [],
      "children": [
        {
          "name": "ensure",
          "summary": "Discover or safely start the shared user supervisor"
        },
        {
          "name": "offline",
          "summary": "Issue, inspect, and reconcile signed offline bundles"
        },
        {
          "name": "serve",
          "summary": "Run the supervisor daemon in the foreground"
        },
        {
          "name": "status",
          "summary": "Print the supervisor daemon's health snapshot as JSON"
        },
        {
          "name": "stop",
          "summary": "Stop the supervisor daemon"
        }
      ],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for supervisor",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Manage the supervisor daemon: ensure, serve, status, stop\n\nUsage:\n  sonny supervisor [command]\n\nAvailable Commands:\n  ensure      Discover or safely start the shared user supervisor\n  offline     Issue, inspect, and reconcile signed offline bundles\n  serve       Run the supervisor daemon in the foreground\n  status      Print the supervisor daemon's health snapshot as JSON\n  stop        Stop the supervisor daemon\n\nFlags:\n  -h, --help   help for supervisor\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n\nUse \"sonny supervisor [command] --help\" for more information about a command.\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny supervisor ensure",
      "path": [
        "supervisor",
        "ensure"
      ],
      "summary": "Discover or safely start the shared user supervisor",
      "usage": "  sonny supervisor ensure [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--endpoint",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "supervisor socket (unix) or pipe (windows) path (default: sockpath.Endpoint())",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for ensure",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--tenant",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "tenant this connection speaks for (default \"default\")",
          "default_as_displayed": "\"default\"",
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "ensure authenticates a compatible local supervisor and prints its resolved endpoint and executable. If the endpoint is unavailable, it serializes startup with other native clients, re-verifies the installed Sonny executable, starts one detached user supervisor, and waits for authenticated readiness. It never resolves a binary from PATH.\n\nUsage:\n  sonny supervisor ensure [flags]\n\nFlags:\n      --endpoint string   supervisor socket (unix) or pipe (windows) path (default: sockpath.Endpoint())\n  -h, --help              help for ensure\n      --tenant string     tenant this connection speaks for (default \"default\")\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny supervisor offline",
      "path": [
        "supervisor",
        "offline"
      ],
      "summary": "Issue, inspect, and reconcile signed offline bundles",
      "usage": "  sonny supervisor offline [command]",
      "aliases": [],
      "children": [
        {
          "name": "issue",
          "summary": "Sign a new offline bundle authorizing bounded disconnected work"
        },
        {
          "name": "reconcile",
          "summary": "Reconcile a local offline journal against its signed bundle"
        },
        {
          "name": "status",
          "summary": "Print a signed offline bundle's health as JSON, without any secret"
        }
      ],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for offline",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Issue, inspect, and reconcile signed offline bundles\n\nUsage:\n  sonny supervisor offline [command]\n\nAvailable Commands:\n  issue       Sign a new offline bundle authorizing bounded disconnected work\n  reconcile   Reconcile a local offline journal against its signed bundle\n  status      Print a signed offline bundle's health as JSON, without any secret\n\nFlags:\n  -h, --help   help for offline\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n\nUse \"sonny supervisor offline [command] --help\" for more information about a command.\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny supervisor offline issue",
      "path": [
        "supervisor",
        "offline",
        "issue"
      ],
      "summary": "Sign a new offline bundle authorizing bounded disconnected work",
      "usage": "  sonny supervisor offline issue [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--adapter-digest",
          "shorthand": null,
          "type_as_displayed": "stringArray",
          "description": "bind an adapter implementation as name=sha256:<64 hex digits> (repeatable)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--catalog-root",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "catalog root this bundle is pinned to (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--counter-high",
          "shorthand": null,
          "type_as_displayed": "uint",
          "description": "highest journal counter this bundle authorizes (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--counter-low",
          "shorthand": null,
          "type_as_displayed": "uint",
          "description": "lowest journal counter this bundle authorizes (default 1)",
          "default_as_displayed": "1",
          "group": "Flags"
        },
        {
          "name": "--device-id",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "device this bundle authorizes (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--effect",
          "shorthand": null,
          "type_as_displayed": "stringArray",
          "description": "an effect this bundle authorizes (repeatable, at least one required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--expires-in",
          "shorthand": null,
          "type_as_displayed": "duration",
          "description": "how long after --not-before the bundle remains valid (default 24h0m0s)",
          "default_as_displayed": "24h0m0s",
          "group": "Flags"
        },
        {
          "name": "--freeze-epoch",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "freeze epoch this bundle is pinned to",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for issue",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--id",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "bundle id (default: a generated UUID)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--max-artifact-bytes",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "maximum bytes per journaled artifact",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--max-attempts",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "maximum attempts this bundle authorizes",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--max-cost-micros",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "maximum cost (in micros) this bundle authorizes",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--max-event-bytes",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "maximum bytes per journaled event",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--max-tokens",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "maximum tokens this bundle authorizes",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--not-before",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "RFC3339 time before which the bundle is not valid (default: now)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--out",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "path to write the signed bundle JSON (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--parent-grant-ref",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "the online execution grant this bundle narrows (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--policy-root",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "policy root this bundle is pinned to (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--resource",
          "shorthand": null,
          "type_as_displayed": "stringArray",
          "description": "a resource this bundle authorizes (repeatable)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--signing-key",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "path to a raw 64-byte ed25519 private key (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--snapshot-root",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "snapshot root this bundle is pinned to (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--tenant",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "tenant this bundle is issued for (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--tool-digest",
          "shorthand": null,
          "type_as_displayed": "stringArray",
          "description": "bind a tool implementation as name=sha256:<64 hex digits> (repeatable)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--worker-id",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "worker this bundle authorizes",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "issue builds a Bundle from its flags, refuses it outright if it claims any effect ENG-4527 prohibits offline or exceeds a matching identity parent grant, signs it with --signing-key, and writes the signed bundle as JSON to --out. Nothing is written when issuance is refused. --tool-digest and --adapter-digest bind implementations by digest: they are written into the bundle before it is signed, so a bound digest cannot be edited afterwards, and reconcile refuses a journaled claim whose handler attestation is missing, names an implementation the bundle did not bind, or carries a different digest.\n\nUsage:\n  sonny supervisor offline issue [flags]\n\nFlags:\n      --adapter-digest stringArray   bind an adapter implementation as name=sha256:<64 hex digits> (repeatable)\n      --catalog-root string          catalog root this bundle is pinned to (required)\n      --counter-high uint            highest journal counter this bundle authorizes (required)\n      --counter-low uint             lowest journal counter this bundle authorizes (default 1)\n      --device-id string             device this bundle authorizes (required)\n      --effect stringArray           an effect this bundle authorizes (repeatable, at least one required)\n      --expires-in duration          how long after --not-before the bundle remains valid (default 24h0m0s)\n      --freeze-epoch string          freeze epoch this bundle is pinned to\n  -h, --help                         help for issue\n      --id string                    bundle id (default: a generated UUID)\n      --max-artifact-bytes int       maximum bytes per journaled artifact\n      --max-attempts int             maximum attempts this bundle authorizes\n      --max-cost-micros int          maximum cost (in micros) this bundle authorizes\n      --max-event-bytes int          maximum bytes per journaled event\n      --max-tokens int               maximum tokens this bundle authorizes\n      --not-before string            RFC3339 time before which the bundle is not valid (default: now)\n      --out string                   path to write the signed bundle JSON (required)\n      --parent-grant-ref string      the online execution grant this bundle narrows (required)\n      --policy-root string           policy root this bundle is pinned to (required)\n      --resource stringArray         a resource this bundle authorizes (repeatable)\n      --signing-key string           path to a raw 64-byte ed25519 private key (required)\n      --snapshot-root string         snapshot root this bundle is pinned to (required)\n      --tenant string                tenant this bundle is issued for (required)\n      --tool-digest stringArray      bind a tool implementation as name=sha256:<64 hex digits> (repeatable)\n      --worker-id string             worker this bundle authorizes\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny supervisor offline reconcile",
      "path": [
        "supervisor",
        "offline",
        "reconcile"
      ],
      "summary": "Reconcile a local offline journal against its signed bundle",
      "usage": "  sonny supervisor offline reconcile [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--accept-missing-head",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "with --repair, recreate a missing journal head sidecar, naming the verified tail as <counter>:<hash>",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--accept-missing-head-reason",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "why the head sidecar is missing; recorded with --accept-missing-head",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--bundle",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "path to a signed offline bundle JSON file (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--catalog-root",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "current catalog root (default: the bundle's own)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--device-key",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "path to the journal's raw 64-byte ed25519 device key (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--encryption-key",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "path to the journal's raw 32-byte AES-256 key (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--freeze-epoch",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "current freeze epoch (default: the bundle's own)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for reconcile",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--journal-dir",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "path to the local journal directory (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--parent-expires-at",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "RFC3339 expiry of the online parent grant (default: not enforced)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--parent-revoked",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "treat the online parent grant as revoked",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--policy-root",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "current policy root (default: the bundle's own)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--repair",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "open the journal writable and repair a crash state (head sidecar one entry behind, torn final line)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--snapshot-root",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "current snapshot root (default: the bundle's own)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--trusted-key",
          "shorthand": null,
          "type_as_displayed": "stringArray",
          "description": "path to a raw 32-byte ed25519 public key that may have signed the bundle (repeatable, at least one required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "reconcile opens the local journal, verifies the signed bundle against --trusted-key, and imports every journaled claim as evidence -- never as authorization (ENG-4527). It exits non-zero and prints one task per claim it could not resolve on its own (a forbidden effect, an online-history conflict, or content roots that are no longer current).\n\nUsage:\n  sonny supervisor offline reconcile [flags]\n\nFlags:\n      --accept-missing-head string          with --repair, recreate a missing journal head sidecar, naming the verified tail as <counter>:<hash>\n      --accept-missing-head-reason string   why the head sidecar is missing; recorded with --accept-missing-head\n      --bundle string                       path to a signed offline bundle JSON file (required)\n      --catalog-root string                 current catalog root (default: the bundle's own)\n      --device-key string                   path to the journal's raw 64-byte ed25519 device key (required)\n      --encryption-key string               path to the journal's raw 32-byte AES-256 key (required)\n      --freeze-epoch string                 current freeze epoch (default: the bundle's own)\n  -h, --help                                help for reconcile\n      --journal-dir string                  path to the local journal directory (required)\n      --parent-expires-at string            RFC3339 expiry of the online parent grant (default: not enforced)\n      --parent-revoked                      treat the online parent grant as revoked\n      --policy-root string                  current policy root (default: the bundle's own)\n      --repair                              open the journal writable and repair a crash state (head sidecar one entry behind, torn final line)\n      --snapshot-root string                current snapshot root (default: the bundle's own)\n      --trusted-key stringArray             path to a raw 32-byte ed25519 public key that may have signed the bundle (repeatable, at least one required)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny supervisor offline status",
      "path": [
        "supervisor",
        "offline",
        "status"
      ],
      "summary": "Print a signed offline bundle's health as JSON, without any secret",
      "usage": "  sonny supervisor offline status [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--bundle",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "path to a signed offline bundle JSON file (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for status",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Print a signed offline bundle's health as JSON, without any secret\n\nUsage:\n  sonny supervisor offline status [flags]\n\nFlags:\n      --bundle string   path to a signed offline bundle JSON file (required)\n  -h, --help            help for status\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny supervisor serve",
      "path": [
        "supervisor",
        "serve"
      ],
      "summary": "Run the supervisor daemon in the foreground",
      "usage": "  sonny supervisor serve [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--endpoint",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "supervisor socket (unix) or pipe (windows) path (default: sockpath.Endpoint())",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for serve",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--manifest",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "private versioned deployment manifest (required for the manifest and organization profiles)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--mesh-advertise-addr",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "SSH-enrolled local mesh advertised gRPC address",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--mesh-ca",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "SSH-enrolled local mesh root CA",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--mesh-cert",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "SSH-enrolled local mesh certificate chain",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--mesh-grpc",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "SSH-enrolled local mesh gRPC listen address (loopback only)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--mesh-key",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "SSH-enrolled local mesh private key",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--mesh-node-id",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "SSH-enrolled local mesh node ID",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--mesh-peer",
          "shorthand": null,
          "type_as_displayed": "strings",
          "description": "SSH-enrolled local mesh peer URL (repeatable)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--mesh-synapse-listen",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "SSH-enrolled local mesh Synapse listen address (loopback only)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--mesh-trust-domain",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "SSH-enrolled personal mesh trust domain",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--profile",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "trust profile: local, organization, or manifest (default: inferred, see --help)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "serve opens the control store, applies its migrations, builds the in-process supervisor.Runtime, binds the local IPC endpoint, and serves peer-bound connections until SIGINT/SIGTERM, then drains and closes.\n\n--profile selects how trust and the control store come up (SONNY-1354,\nextended by SONNY-3224/SONNY-3225):\n  local        no operator file, no network: a signed single-user\n               profile is bootstrapped under the data directory, and\n               a mesh adapter is composed in this same process.\n  organization an organization bundle is present and its signature\n               verifies against its own embedded key: the same\n               no-manifest-needed single-user composition the local\n               profile builds is used, no --manifest required. A\n               bundle that fails verification is a hard error, never\n               a silent fallback to local. --manifest is still\n               required when no bundle verifies (this combination is\n               detection/reporting only, and additionally requires the\n               manifest's tenant to match the bundle's).\n  manifest     today's behavior: serve exactly the deployment manifest\n               named by --manifest.\nThe default is manifest when --manifest is given, organization when an\norganization bundle is detected and verified and --manifest is not\ngiven, and local otherwise.\n\nUsage:\n  sonny supervisor serve [flags]\n\nFlags:\n      --endpoint string              supervisor socket (unix) or pipe (windows) path (default: sockpath.Endpoint())\n  -h, --help                         help for serve\n      --manifest string              private versioned deployment manifest (required for the manifest and organization profiles)\n      --mesh-advertise-addr string   SSH-enrolled local mesh advertised gRPC address\n      --mesh-ca string               SSH-enrolled local mesh root CA\n      --mesh-cert string             SSH-enrolled local mesh certificate chain\n      --mesh-grpc string             SSH-enrolled local mesh gRPC listen address (loopback only)\n      --mesh-key string              SSH-enrolled local mesh private key\n      --mesh-node-id string          SSH-enrolled local mesh node ID\n      --mesh-peer strings            SSH-enrolled local mesh peer URL (repeatable)\n      --mesh-synapse-listen string   SSH-enrolled local mesh Synapse listen address (loopback only)\n      --mesh-trust-domain string     SSH-enrolled personal mesh trust domain\n      --profile string               trust profile: local, organization, or manifest (default: inferred, see --help)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny supervisor status",
      "path": [
        "supervisor",
        "status"
      ],
      "summary": "Print the supervisor daemon's health snapshot as JSON",
      "usage": "  sonny supervisor status [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--endpoint",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "supervisor socket (unix) or pipe (windows) path (default: sockpath.Endpoint())",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for status",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--tenant",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "tenant this connection speaks for (default \"default\")",
          "default_as_displayed": "\"default\"",
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Print the supervisor daemon's health snapshot as JSON\n\nUsage:\n  sonny supervisor status [flags]\n\nFlags:\n      --endpoint string   supervisor socket (unix) or pipe (windows) path (default: sockpath.Endpoint())\n  -h, --help              help for status\n      --tenant string     tenant this connection speaks for (default \"default\")\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny supervisor stop",
      "path": [
        "supervisor",
        "stop"
      ],
      "summary": "Stop the supervisor daemon",
      "usage": "  sonny supervisor stop [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--endpoint",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "supervisor socket (unix) or pipe (windows) path (default: sockpath.Endpoint())",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for stop",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--tenant",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "tenant this connection speaks for (default \"default\")",
          "default_as_displayed": "\"default\"",
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "stop asks the authenticated local supervisor to shut down gracefully. The daemon acknowledges the request before it stops accepting work, then drains sessions and releases its endpoint. If nothing answers, stopping is a no-op (stop is idempotent).\n\nUsage:\n  sonny supervisor stop [flags]\n\nFlags:\n      --endpoint string   supervisor socket (unix) or pipe (windows) path (default: sockpath.Endpoint())\n  -h, --help              help for stop\n      --tenant string     tenant this connection speaks for (default \"default\")\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny tools",
      "path": [
        "tools"
      ],
      "summary": "List and manage available tools",
      "usage": "  sonny tools [command]",
      "aliases": [],
      "children": [
        {
          "name": "efficiency",
          "summary": "Report the resolved tool-efficiency status"
        },
        {
          "name": "inventory",
          "summary": "Print the core / searchable / retired tool contract recipes are written against"
        },
        {
          "name": "list",
          "summary": "List all available tools"
        }
      ],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for tools",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "List and manage tools available to the LLM.\n\nTools provide capabilities like file operations, search, shell commands,\nweb fetching, and more. This command shows what tools are available and\ntheir descriptions.\n\nUsage:\n  sonny tools [command]\n\nAvailable Commands:\n  efficiency  Report the resolved tool-efficiency status\n  inventory   Print the core / searchable / retired tool contract recipes are written against\n  list        List all available tools\n\nFlags:\n  -h, --help   help for tools\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n\nUse \"sonny tools [command] --help\" for more information about a command.\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny tools efficiency",
      "path": [
        "tools",
        "efficiency"
      ],
      "summary": "Report the resolved tool-efficiency status",
      "usage": "  sonny tools efficiency [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for efficiency",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "emit the full status document as JSON instead of the one-line summary",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--recipe-file",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "resolve the efficiency policy from this pack file instead of the host default",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Report the tool-efficiency policy this host resolves, and every fact the\none-line status printed during a turn has no room to show.\n\nWithout --json this prints that same one-line summary: the resolved\nprofile and its provenance, how many efficiency stages are active out of\nthe whole vocabulary, and the counts an operator watches.\n\nWith --json it emits the canonical status document -- the identical shape\nthe headless, daemon and mesh surfaces carry -- inside the standard CLI\nenvelope, including the per-stage provenance, per-view recovery and\ncall-site detail no text rendering carries.\n\nThis command runs OUTSIDE a turn. Nothing has called a provider, capped a\ntool list, admitted a result view, captured an artifact or recorded a\nwrite, so every one of those axes reports \"unknown\" rather than zero: a\ncap nobody measured is not a cap that withheld nothing. With --recipe-file\nthe policy is resolved from that recipe instead of from the host default,\nand its declared provider tool limit is carried into the --json\ndocument's tools object as the CONFIGURED bound -- the OBSERVED figure\nstill reports unknown until a turn actually measures it.\n\nUsage:\n  sonny tools efficiency [flags]\n\nFlags:\n  -h, --help                 help for efficiency\n      --json                 emit the full status document as JSON instead of the one-line summary\n      --recipe-file string   resolve the efficiency policy from this pack file instead of the host default\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny tools inventory",
      "path": [
        "tools",
        "inventory"
      ],
      "summary": "Print the core / searchable / retired tool contract recipes are written against",
      "usage": "  sonny tools inventory [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "output format: yaml or json (default \"yaml\")",
          "default_as_displayed": "\"yaml\"",
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for inventory",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Print the tool contract prompt recipes are written against, taken from the\nregistry an unrestricted interactive session builds (no MCP servers):\n\n  core        declared in every session's tools array (intersected with a\n              pack's tools.allowed)\n  unlocked    declared after the trigger tool first succeeds\n  searchable  reachable only through tool_search, then tool_exec with the\n              returned exec_name (local.<name>)\n  mcp         MCP rows (<server>.<tool>), also tool_search -> tool_exec\n  retired     removed or renamed names and what replaces each\n\nUsage:\n  sonny tools inventory [flags]\n\nFlags:\n      --format string   output format: yaml or json (default \"yaml\")\n  -h, --help            help for inventory\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny tools list",
      "path": [
        "tools",
        "list"
      ],
      "summary": "List all available tools",
      "usage": "  sonny tools list [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--category",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "list only tools in this category, subcategory, category.subcategory, or secondary category",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--connect-timeout",
          "shorthand": null,
          "type_as_displayed": "duration",
          "description": "per-server MCP connect timeout (only used with --mcp-config) (default 15s)",
          "default_as_displayed": "15s",
          "group": "Flags"
        },
        {
          "name": "--file-type",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "list only tools that work on this file type (an extension such as json, a file name, or any)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "deprecated alias for --json (text|json); use --json",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for list",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "emit full JSON Schema for each tool instead of a truncated table",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--mcp-config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "resolve and connect to these MCP servers, including their tools in the listing",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--recipe-file",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "narrow the list to the tools this pack allows",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "List all tools that are available for use by the LLM.\n\nThis includes file tools, search tools, shell tools, web tools,\nutility tools, agent tools, and LSP tools.\n\nWith --json, emit each tool's full schema as JSON Schema -- the shape a\nprovider's tools array carries -- so the manifest can be measured rather\nthan guessed at. With --recipe-file, narrow the list to what that recipe would\nactually send and report the provider's tool cap. With --mcp-config,\nresolve and connect to the configured MCP servers (merging --recipe-file's\ninline mcp.servers, same as \"sonny mcp list\") and include their live tools\nin the listing alongside the native ones.\n\nWith --category and --file-type, narrow the listing exactly the way the\nmodel's own tool_search tool narrows it. --category matches a category\n(workspace), a subcategory (file), the dotted pair (workspace.file), or a\nsecondary category (code). --file-type takes an extension (json), a dotted\nextension (.json), a file name (notes.md) or a path, and a tool that\ndeclares \"any\" matches every file type. The two combine. MCP tools carry\nno catalog classification, so either filter excludes them.\n\nUsage:\n  sonny tools list [flags]\n\nFlags:\n      --category string            list only tools in this category, subcategory, category.subcategory, or secondary category\n      --connect-timeout duration   per-server MCP connect timeout (only used with --mcp-config) (default 15s)\n      --file-type string           list only tools that work on this file type (an extension such as json, a file name, or any)\n      --format string              deprecated alias for --json (text|json); use --json\n  -h, --help                       help for list\n      --json                       emit full JSON Schema for each tool instead of a truncated table\n      --mcp-config string          resolve and connect to these MCP servers, including their tools in the listing\n      --recipe-file string         narrow the list to the tools this pack allows\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny trace",
      "path": [
        "trace"
      ],
      "summary": "Inspect conversation traces without opening the JSONL files by hand",
      "usage": "  sonny trace [command]",
      "aliases": [],
      "children": [
        {
          "name": "agents",
          "summary": "Sub-agents a trace spawned, as a tree"
        },
        {
          "name": "errors",
          "summary": "Everything that went wrong in a trace"
        },
        {
          "name": "events",
          "summary": "Stream a trace's events as JSON Lines for jq pipelines"
        },
        {
          "name": "html",
          "summary": "Self-contained HTML timeline and drill-down page for a trace"
        },
        {
          "name": "list",
          "summary": "List conversation traces, newest first"
        },
        {
          "name": "path",
          "summary": "Print the file path(s) a trace reference resolves to"
        },
        {
          "name": "show",
          "summary": "Show a trace as a per-turn timeline"
        },
        {
          "name": "status",
          "summary": "Metrics across one or many traces: tokens, errors, latency, models"
        },
        {
          "name": "summary",
          "summary": "Statistics for a trace, recomputed from its events"
        },
        {
          "name": "tail",
          "summary": "Follow a running conversation trace as it is written"
        },
        {
          "name": "tools",
          "summary": "Tool calls joined to their results"
        }
      ],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for trace",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--trace-dir",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "directory holding conversation traces, read-only (default: <data-dir>/traces)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Locate, parse, filter, and summarize the conversation traces sonny run\nwrites (one JSON Lines file per run under <data-dir>/traces/<session>/).\n\nEvery subcommand that takes a <ref> accepts a file path, a session\ndirectory, a trace id or a unique prefix of one (the UUID in the file\nname), or a session id prefix (the directory name). A session ref loads\nevery resume segment of that session in order.\n\nThe trace directory is read-only: nothing under it is ever created,\nmodified, or deleted. Pass --json for a machine-readable envelope.\n\nNote: `sonny canary` is a different, unrelated command -- the CANARY\nrequirement and gap traceability system.\n\nExamples:\n  # Newest traces, with session titles from sessions.db\n  sonny trace list\n\n  # Everything that went wrong in a trace, by id prefix\n  sonny trace errors 862e2758\n\n  # Tool calls on turn 3, as JSON\n  sonny trace tools 862e2758 --turn 3 --json\n\n  # Metrics across every trace from the last week, grouped by pack\n  sonny trace status --since 2026-09-06 --group-by pack\n\n  # Follow the newest (running) trace\n  sonny trace tail\n\n  # Sub-agent tree, following child trace files\n  sonny trace agents 0d6c4bf3 --follow\n\n  # Raw events for jq pipelines\n  sonny trace events 0d6c4bf3 --type tool_result | jq .tool_result.tool_name\n\nUsage:\n  sonny trace [command]\n\nAvailable Commands:\n  agents      Sub-agents a trace spawned, as a tree\n  errors      Everything that went wrong in a trace\n  events      Stream a trace's events as JSON Lines for jq pipelines\n  html        Self-contained HTML timeline and drill-down page for a trace\n  list        List conversation traces, newest first\n  path        Print the file path(s) a trace reference resolves to\n  show        Show a trace as a per-turn timeline\n  status      Metrics across one or many traces: tokens, errors, latency, models\n  summary     Statistics for a trace, recomputed from its events\n  tail        Follow a running conversation trace as it is written\n  tools       Tool calls joined to their results\n\nFlags:\n  -h, --help               help for trace\n      --trace-dir string   directory holding conversation traces, read-only (default: <data-dir>/traces)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n\nUse \"sonny trace [command] --help\" for more information about a command.\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny trace agents",
      "path": [
        "trace",
        "agents"
      ],
      "summary": "Sub-agents a trace spawned, as a tree",
      "usage": "  sonny trace agents <ref> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--follow",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "open each child's trace file and attach its sub-agents",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for agents",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "emit the machine-readable envelope",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--max-depth",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "how many levels of child traces --follow descends (default 8)",
          "default_as_displayed": "8",
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--trace-dir",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "directory holding conversation traces, read-only (default: <data-dir>/traces)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Show every sub-agent this trace spawned: agent name, process id, turn,\nthe child's own session id and trace file (from the agent_session\nevent), exit code, and output size. With --follow each child's trace file\nis opened and its own sub-agents are attached beneath it, recursively,\nup to --max-depth levels. A child trace that cannot be read is reported\ninline rather than failing the command.\n\nExamples:\n  sonny trace agents 0d6c4bf3\n  sonny trace agents 0d6c4bf3 --follow --max-depth 3 --json\n\nUsage:\n  sonny trace agents <ref> [flags]\n\nFlags:\n      --follow          open each child's trace file and attach its sub-agents\n  -h, --help            help for agents\n      --json            emit the machine-readable envelope\n      --max-depth int   how many levels of child traces --follow descends (default 8)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n      --trace-dir string       directory holding conversation traces, read-only (default: <data-dir>/traces)\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny trace errors",
      "path": [
        "trace",
        "errors"
      ],
      "summary": "Everything that went wrong in a trace",
      "usage": "  sonny trace errors <ref> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for errors",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "emit the machine-readable envelope",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--kind",
          "shorthand": null,
          "type_as_displayed": "stringArray",
          "description": "only failures of this kind (repeatable)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--turn",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "only these turns: N, N,M, or N-M",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--trace-dir",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "directory holding conversation traces, read-only (default: <data-dir>/traces)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "List failures across every event kind in one table: provider errors and\ncancellations, tool errors, weak failures (non-zero exit without a hard\nerror), cascade-skipped calls, MCP tool errors, error events, critic\nerrors, sub-agent spawn failures, and sub-agents that exited non-zero.\nEach row carries the file line, turn, failure class and code, and the\nmessage, so the row can be opened in the raw file directly.\n\nKinds for --kind: api_error, api_canceled, tool_error, tool_weak_failure,\ntool_skipped, mcp_tool_error, error_event, critic_error,\nagent_spawn_failure, agent_exit_nonzero.\n\nExamples:\n  sonny trace errors 862e2758\n  sonny trace errors 862e2758 --kind api_error --kind tool_error --json\n\nUsage:\n  sonny trace errors <ref> [flags]\n\nFlags:\n  -h, --help               help for errors\n      --json               emit the machine-readable envelope\n      --kind stringArray   only failures of this kind (repeatable)\n      --turn string        only these turns: N, N,M, or N-M\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n      --trace-dir string       directory holding conversation traces, read-only (default: <data-dir>/traces)\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny trace events",
      "path": [
        "trace",
        "events"
      ],
      "summary": "Stream a trace's events as JSON Lines for jq pipelines",
      "usage": "  sonny trace events <ref> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--errors",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "only events that record a failure",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--fields",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "comma-separated top-level event keys to keep (default: all)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--grep",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "only events whose JSON contains this text (case-insensitive)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for events",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--limit",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "maximum events to print (0 = all)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--since",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "only events at/after this time (RFC3339 or YYYY-MM-DD)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--tool",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "only tool events for this tool (mcp tools as server/tool)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--turn",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "only these turns: N, N,M, or N-M",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--type",
          "shorthand": null,
          "type_as_displayed": "stringArray",
          "description": "only events of this type (repeatable)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--until",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "only events at/before this time (RFC3339 or YYYY-MM-DD)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--trace-dir",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "directory holding conversation traces, read-only (default: <data-dir>/traces)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Print the selected events exactly as they appear on disk (the \"event\"\nobject of each record), one JSON object per line. This is the jq-friendly\nview: no envelope, no header record, no summary record.\n\n--fields keeps only the named top-level keys of each event (for example\nid,timestamp,type,turn,tool_result). Unknown keys are ignored.\n\nExamples:\n  sonny trace events 862e2758 --type tool_result | jq -r .tool_result.tool_name\n  sonny trace events 862e2758 --errors --fields id,turn,type,error\n  sonny trace events 862e2758 --turn 4 --grep spawn_agent\n\nUsage:\n  sonny trace events <ref> [flags]\n\nFlags:\n      --errors             only events that record a failure\n      --fields string      comma-separated top-level event keys to keep (default: all)\n      --grep string        only events whose JSON contains this text (case-insensitive)\n  -h, --help               help for events\n      --limit int          maximum events to print (0 = all)\n      --since string       only events at/after this time (RFC3339 or YYYY-MM-DD)\n      --tool string        only tool events for this tool (mcp tools as server/tool)\n      --turn string        only these turns: N, N,M, or N-M\n      --type stringArray   only events of this type (repeatable)\n      --until string       only events at/before this time (RFC3339 or YYYY-MM-DD)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n      --trace-dir string       directory holding conversation traces, read-only (default: <data-dir>/traces)\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny trace html",
      "path": [
        "trace",
        "html"
      ],
      "summary": "Self-contained HTML timeline and drill-down page for a trace",
      "usage": "  sonny trace html <ref> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--audience",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "who may read the page: operator, team or executive (default \"operator\")",
          "default_as_displayed": "\"operator\"",
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for html",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "emit the machine-readable envelope with the full view instead of the page",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--max-events",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "timeline rows to include; totals always cover every event (default 20000)",
          "default_as_displayed": "20000",
          "group": "Flags"
        },
        {
          "name": "--out",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "write the page to this file instead of stdout",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--trace-dir",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "directory holding conversation traces, read-only (default: <data-dir>/traces)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Render one trace as a single HTML file with a per-turn timeline, tool\ncall, failure, sub-agent and context-event drill-downs, and data coverage\nindicators for the recipe, context, tool and time dimensions. Every total on\nthe page is computed by the same code as sonny trace summary and sonny\ntrace status, so the numbers agree by construction.\n\nThe page has no scripts, fonts, images or network references and opens\noffline. --audience controls what it may contain: operator (everything the\nCLI shows), team (names, sizes, digests and outcomes but no user input,\nmessage content, tool parameters, tool results, agent arguments or paths)\nor executive (counts, timings and outcomes only). Lower audiences are\nenforced when the view is built, not when it is rendered.\n\nExamples:\n  sonny trace html 862e2758 --out trace.html\n  sonny trace html 862e2758 --audience team --out review.html\n  sonny trace html 862e2758 --json | jq .data.view.coverage\n\nUsage:\n  sonny trace html <ref> [flags]\n\nFlags:\n      --audience string   who may read the page: operator, team or executive (default \"operator\")\n  -h, --help              help for html\n      --json              emit the machine-readable envelope with the full view instead of the page\n      --max-events int    timeline rows to include; totals always cover every event (default 20000)\n      --out string        write the page to this file instead of stdout\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n      --trace-dir string       directory holding conversation traces, read-only (default: <data-dir>/traces)\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny trace list",
      "path": [
        "trace",
        "list"
      ],
      "summary": "List conversation traces, newest first",
      "usage": "  sonny trace list [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--errors",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "only traces with at least one failure",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for list",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "emit the machine-readable envelope instead of a table",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--limit",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "maximum rows (0 = no limit) (default 20)",
          "default_as_displayed": "20",
          "group": "Flags"
        },
        {
          "name": "--model",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "only traces whose header model equals this",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--no-sessions",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "skip the sessions.db title join",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--recipe",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "only traces run with this pack id",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--session",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "only traces of sessions whose id starts with this prefix",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--sessions-db",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "sessions database to join titles from (default: <data-dir>/sessions.db)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--since",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "only traces started on/after this time (RFC3339 or YYYY-MM-DD)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--until",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "only traces started on/before this time (RFC3339 or YYYY-MM-DD)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--trace-dir",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "directory holding conversation traces, read-only (default: <data-dir>/traces)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "List the trace files under the trace directory, newest first, with the\nrecipe, model, event/turn/failure counts, and (when sessions.db is\nreadable) the session title. Each file is parsed, so --limit bounds the\nwork; --limit 0 lists everything.\n\nFilters: --session <id prefix>, --pack <id>, --model <name>, --since and\n--until (RFC3339 or YYYY-MM-DD, matched against the file's start time),\nand --errors (only traces with at least one failure).\n\nExamples:\n  sonny trace list\n  sonny trace list --errors --since 2026-09-10\n  sonny trace list --pack architect --json --limit 0\n\nUsage:\n  sonny trace list [flags]\n\nFlags:\n      --errors               only traces with at least one failure\n  -h, --help                 help for list\n      --json                 emit the machine-readable envelope instead of a table\n      --limit int            maximum rows (0 = no limit) (default 20)\n      --model string         only traces whose header model equals this\n      --no-sessions          skip the sessions.db title join\n      --recipe string        only traces run with this pack id\n      --session string       only traces of sessions whose id starts with this prefix\n      --sessions-db string   sessions database to join titles from (default: <data-dir>/sessions.db)\n      --since string         only traces started on/after this time (RFC3339 or YYYY-MM-DD)\n      --until string         only traces started on/before this time (RFC3339 or YYYY-MM-DD)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n      --trace-dir string       directory holding conversation traces, read-only (default: <data-dir>/traces)\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny trace path",
      "path": [
        "trace",
        "path"
      ],
      "summary": "Print the file path(s) a trace reference resolves to",
      "usage": "  sonny trace path <ref> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for path",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "emit the machine-readable envelope instead of plain paths",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--trace-dir",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "directory holding conversation traces, read-only (default: <data-dir>/traces)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Resolve a trace reference (file, directory, trace id prefix, or session id\nprefix) and print the matching trace file paths, one per line, oldest\nfirst. A session reference prints every resume segment. Useful for\nscripting: less \"$(sonny trace path 862e2758)\".\n\nExamples:\n  sonny trace path 862e2758\n  sonny trace path 11111111-2222-4333-8444-555555555555 --json\n\nUsage:\n  sonny trace path <ref> [flags]\n\nFlags:\n  -h, --help   help for path\n      --json   emit the machine-readable envelope instead of plain paths\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n      --trace-dir string       directory holding conversation traces, read-only (default: <data-dir>/traces)\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny trace show",
      "path": [
        "trace",
        "show"
      ],
      "summary": "Show a trace as a per-turn timeline",
      "usage": "  sonny trace show <ref> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--errors",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "only events that record a failure",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--full",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "do not truncate event summaries",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--grep",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "only events whose JSON contains this text (case-insensitive)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for show",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "emit the machine-readable envelope",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--limit",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "maximum events to print (0 = all)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--raw",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "print selected events as raw JSON objects, one per line",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--since",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "only events at/after this time (RFC3339 or YYYY-MM-DD)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--tool",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "only tool events for this tool (mcp tools as server/tool)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--turn",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "only these turns: N, N,M, or N-M",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--type",
          "shorthand": null,
          "type_as_displayed": "stringArray",
          "description": "only events of this type (repeatable)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--until",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "only events at/before this time (RFC3339 or YYYY-MM-DD)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--trace-dir",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "directory holding conversation traces, read-only (default: <data-dir>/traces)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Print a trace's header, recomputed statistics, and every event as one\nline: file line number, wall-clock time, turn, type, and a short\nsummary. Filters narrow the event list; the header and statistics always\ndescribe the whole trace. --raw prints each selected event's JSON object\ninstead of the summary line; --full disables summary truncation.\n\nExamples:\n  sonny trace show 862e2758\n  sonny trace show 862e2758 --turn 3-5 --type tool_call --type tool_result\n  sonny trace show 862e2758 --errors --raw\n\nUsage:\n  sonny trace show <ref> [flags]\n\nFlags:\n      --errors             only events that record a failure\n      --full               do not truncate event summaries\n      --grep string        only events whose JSON contains this text (case-insensitive)\n  -h, --help               help for show\n      --json               emit the machine-readable envelope\n      --limit int          maximum events to print (0 = all)\n      --raw                print selected events as raw JSON objects, one per line\n      --since string       only events at/after this time (RFC3339 or YYYY-MM-DD)\n      --tool string        only tool events for this tool (mcp tools as server/tool)\n      --turn string        only these turns: N, N,M, or N-M\n      --type stringArray   only events of this type (repeatable)\n      --until string       only events at/before this time (RFC3339 or YYYY-MM-DD)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n      --trace-dir string       directory holding conversation traces, read-only (default: <data-dir>/traces)\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny trace status",
      "path": [
        "trace",
        "status"
      ],
      "summary": "Metrics across one or many traces: tokens, errors, latency, models",
      "usage": "  sonny trace status [ref ...] [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--errors",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "only traces with at least one failure",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--group-by",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "add a rollup per day, model, pack, provider, session",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for status",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "emit the machine-readable envelope",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--limit",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "keep only the N newest traces (0 = all)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--model",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "only traces whose header model equals this",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--per-trace",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "print the per-trace table (text only; JSON always includes it)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--provider",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "only traces whose header provider equals this",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--recipe",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "only traces run with this pack id",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--session",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "only traces of sessions whose id starts with this prefix",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--since",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "only traces started on/after this time (RFC3339 or YYYY-MM-DD)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--top",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "rows in the model and tool tables (text only; 0 = all) (default 10)",
          "default_as_displayed": "10",
          "group": "Flags"
        },
        {
          "name": "--until",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "only traces started on/before this time (RFC3339 or YYYY-MM-DD)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--trace-dir",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "directory holding conversation traces, read-only (default: <data-dir>/traces)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Aggregate metrics over a set of traces. With refs, each ref resolves like\nthe other subcommands; without refs, every trace under the trace\ndirectory is included. Either way, a persistent session is one trace: all\nof its segments (resumes) are grouped and merged together, even when refs\nname only some of them, so a session is never split or double-counted.\nFilters narrow the set either way: --since/--until on the session's\nearliest segment's start time (a bare YYYY-MM-DD --until rounds up to the\nend of that UTC day, so the named day is included), --session by id\nprefix, --recipe, --provider and --model by the trace header, --errors for\ntraces with at least one failure, --limit for the N newest.\n\nReported: trace/session/segment counts, turns, API requests and error,\ncancel and rate-limit counts with the error rate, tool calls with error\nand weak failure counts and rate, sub-agent spawns, prompt/completion\ntokens and tokens per request, API and tool latency (min, p50, p95, p99,\nmax, mean; nearest-rank), problems (malformed lines) and traces skipped\n(unreadable files), failures by kind, a per-model breakout (requests\njoined to responses by request id), the busiest tools, and one row per\ntrace. A trace's duration is the wall-clock span from its first to its\nlast event, so a resumed session's duration includes the idle time\nbetween segments. --group-by adds a rollup per pack, provider, model,\nsession, or day; a multi-segment session groups under its FIRST segment's\nday, not the day of its most recent resume.\n\nEvery selected trace file is parsed, so a large directory with no filters\ntakes a while; use --since or --limit to bound it.\n\nExamples:\n  sonny trace status\n  sonny trace status --since 2026-09-06 --group-by pack\n  sonny trace status 862e2758 0d6c4bf3 --json | jq .data.report.models\n  sonny trace status --errors --per-trace\n\nUsage:\n  sonny trace status [ref ...] [flags]\n\nFlags:\n      --errors            only traces with at least one failure\n      --group-by string   add a rollup per day, model, pack, provider, session\n  -h, --help              help for status\n      --json              emit the machine-readable envelope\n      --limit int         keep only the N newest traces (0 = all)\n      --model string      only traces whose header model equals this\n      --per-trace         print the per-trace table (text only; JSON always includes it)\n      --provider string   only traces whose header provider equals this\n      --recipe string     only traces run with this pack id\n      --session string    only traces of sessions whose id starts with this prefix\n      --since string      only traces started on/after this time (RFC3339 or YYYY-MM-DD)\n      --top int           rows in the model and tool tables (text only; 0 = all) (default 10)\n      --until string      only traces started on/before this time (RFC3339 or YYYY-MM-DD)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n      --trace-dir string       directory holding conversation traces, read-only (default: <data-dir>/traces)\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny trace summary",
      "path": [
        "trace",
        "summary"
      ],
      "summary": "Statistics for a trace, recomputed from its events",
      "usage": "  sonny trace summary <ref> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for summary",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "emit the machine-readable envelope",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--trace-dir",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "directory holding conversation traces, read-only (default: <data-dir>/traces)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Recompute turn, API, tool, token, latency, failure, and sub-agent\nstatistics from the events, so a trace whose writer never reached the\nsummary record (a crash, a kill, a still-running session) reports the\nsame numbers as a closed one. The writer's own summary record, when\npresent, is included under recorded_summary in --json output.\n\nExamples:\n  sonny trace summary 862e2758\n  sonny trace summary 11111111-2222 --json | jq .data.stats.tools_by_name\n\nUsage:\n  sonny trace summary <ref> [flags]\n\nFlags:\n  -h, --help   help for summary\n      --json   emit the machine-readable envelope\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n      --trace-dir string       directory holding conversation traces, read-only (default: <data-dir>/traces)\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny trace tail",
      "path": [
        "trace",
        "tail"
      ],
      "summary": "Follow a running conversation trace as it is written",
      "usage": "  sonny trace tail [ref] [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--errors",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "only events that record a failure",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--fields",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "comma-separated top-level event keys to keep (requires --json)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--grep",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "only events whose JSON contains this text (case-insensitive)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for tail",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--interval",
          "shorthand": null,
          "type_as_displayed": "duration",
          "description": "poll period while following (minimum 10ms) (default 250ms)",
          "default_as_displayed": "250ms",
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "print one raw event per line instead of the text timeline",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--lines",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "events of history to replay before following (-1 = all, 0 = none) (default 10)",
          "default_as_displayed": "10",
          "group": "Flags"
        },
        {
          "name": "--no-follow",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "print the replay and exit instead of following",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--session",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "treat ref as a session and follow its newest segment",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--since",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "only events at/after this time (RFC3339 or YYYY-MM-DD)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--stay",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "keep following after the summary record (segments of a followed session can still resume)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--tool",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "only tool events for this tool (mcp tools as server/tool)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--turn",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "only these turns: N, N,M, or N-M",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--type",
          "shorthand": null,
          "type_as_displayed": "stringArray",
          "description": "only events of this type (repeatable)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--until",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "only events at/before this time (RFC3339 or YYYY-MM-DD)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--trace-dir",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "directory holding conversation traces, read-only (default: <data-dir>/traces)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Print the newest events of a trace and, unless --no-follow is given,\nkeep printing new ones as the writer appends them.\n\nWith no ref, the most recently modified trace file is followed. A ref\nresolves like every other subcommand: a trace id/prefix follows that one\nfile (a later resume segment is NOT switched to unless --session is\ngiven); a session id/prefix follows the newest segment of that session,\nswitching to a newer segment when a resume writes one (requires --stay,\nsince a resume usually happens after this command would otherwise have\nalready exited on the first segment's summary).\n\n--lines controls how much history is replayed before following (default\n10; -1 replays everything; 0 replays nothing). --json prints one raw\nevent per line, as in `sonny trace events`; --fields keeps only the\nnamed top-level keys (requires --json).\n\nExamples:\n  sonny trace tail\n  sonny trace tail 862e2758\n  sonny trace tail 0d6c4bf3 --session --stay\n  sonny trace tail 862e2758 --no-follow --lines -1 --json\n\nUsage:\n  sonny trace tail [ref] [flags]\n\nFlags:\n      --errors              only events that record a failure\n      --fields string       comma-separated top-level event keys to keep (requires --json)\n      --grep string         only events whose JSON contains this text (case-insensitive)\n  -h, --help                help for tail\n      --interval duration   poll period while following (minimum 10ms) (default 250ms)\n      --json                print one raw event per line instead of the text timeline\n      --lines int           events of history to replay before following (-1 = all, 0 = none) (default 10)\n      --no-follow           print the replay and exit instead of following\n      --session             treat ref as a session and follow its newest segment\n      --since string        only events at/after this time (RFC3339 or YYYY-MM-DD)\n      --stay                keep following after the summary record (segments of a followed session can still resume)\n      --tool string         only tool events for this tool (mcp tools as server/tool)\n      --turn string         only these turns: N, N,M, or N-M\n      --type stringArray    only events of this type (repeatable)\n      --until string        only events at/before this time (RFC3339 or YYYY-MM-DD)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n      --trace-dir string       directory holding conversation traces, read-only (default: <data-dir>/traces)\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny trace tools",
      "path": [
        "trace",
        "tools"
      ],
      "summary": "Tool calls joined to their results",
      "usage": "  sonny trace tools <ref> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--errors",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "only events that record a failure",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--full",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "print complete parameters and results",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for tools",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "emit the machine-readable envelope",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--since",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "only events at/after this time (RFC3339 or YYYY-MM-DD)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--tool",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "only tool events for this tool (mcp tools as server/tool)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--turn",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "only these turns: N, N,M, or N-M",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--until",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "only events at/before this time (RFC3339 or YYYY-MM-DD)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--trace-dir",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "directory holding conversation traces, read-only (default: <data-dir>/traces)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "List every tool invocation (native and MCP) with its result: file line\nnumbers of the call and the result, turn, latency, exit code, error or\nweak-failure state, and the scheduler's parallel group. Calls that never\ngot a result show as unfinished. --full prints parameters and results;\n--errors keeps only failed, weak, skipped, or unfinished calls.\n\nExamples:\n  sonny trace tools 862e2758\n  sonny trace tools 862e2758 --tool run_command --full\n  sonny trace tools 862e2758 --turn 3 --errors --json\n\nUsage:\n  sonny trace tools <ref> [flags]\n\nFlags:\n      --errors         only events that record a failure\n      --full           print complete parameters and results\n  -h, --help           help for tools\n      --json           emit the machine-readable envelope\n      --since string   only events at/after this time (RFC3339 or YYYY-MM-DD)\n      --tool string    only tool events for this tool (mcp tools as server/tool)\n      --turn string    only these turns: N, N,M, or N-M\n      --until string   only events at/before this time (RFC3339 or YYYY-MM-DD)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n      --trace-dir string       directory holding conversation traces, read-only (default: <data-dir>/traces)\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny training",
      "path": [
        "training"
      ],
      "summary": "Aggregate and export conversation traces as training data",
      "usage": "  sonny training [command]",
      "aliases": [],
      "children": [
        {
          "name": "collect",
          "summary": "Collect conversations from local AI assistants into a redacted corpus JSONL"
        },
        {
          "name": "dataset",
          "summary": "Build train/test eval suites from a collected conversation corpus"
        },
        {
          "name": "export",
          "summary": "Export on-disk conversation traces to a training-data JSONL file"
        },
        {
          "name": "server",
          "summary": "Start the trace aggregation server"
        },
        {
          "name": "upload",
          "summary": "Upload traces to the aggregation server"
        }
      ],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for training",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Commands for turning sonny's conversation traces into training data.\n\nThe trace service collects conversation traces for training data aggregation.\nIt supports both server mode (receiving traces) and client mode (uploading\ntraces), plus offline export of traces already written to disk.\n\nNote: `sonny canary` is a different, unrelated command -- the CANARY\nrequirement and gap traceability system.\n\nExamples:\n  # Start the trace aggregation server\n  sonny training server --listen :50051 --storage-dir /var/lib/traces\n\n  # Upload traces to a remote server\n  sonny training upload ./traces/ --server traces.example.com:50051 --cert client.crt --key client.key --ca ca.crt\n\n  # Export traces already on disk as training records\n  sonny training export --out ./training.jsonl\n\nUsage:\n  sonny training [command]\n\nAvailable Commands:\n  collect     Collect conversations from local AI assistants into a redacted corpus JSONL\n  dataset     Build train/test eval suites from a collected conversation corpus\n  export      Export on-disk conversation traces to a training-data JSONL file\n  server      Start the trace aggregation server\n  upload      Upload traces to the aggregation server\n\nFlags:\n  -h, --help   help for training\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n\nUse \"sonny training [command] --help\" for more information about a command.\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny training collect",
      "path": [
        "training",
        "collect"
      ],
      "summary": "Collect conversations from local AI assistants into a redacted corpus JSONL",
      "usage": "  sonny training collect [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for collect",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--include-aider",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "include the aider source (walks all of $HOME)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--min-messages",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "drop sessions with fewer messages (default 2)",
          "default_as_displayed": "2",
          "group": "Flags"
        },
        {
          "name": "--out",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "output corpus JSONL path",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--sources",
          "shorthand": null,
          "type_as_displayed": "strings",
          "description": "sources to collect (default: all except aider)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Collects from: aider, claude, codex, continue, copilot, cursor, gemini, sonny.\naider is excluded unless --include-aider (its collector walks all of $HOME).\nSessions containing credential-shaped text are dropped wholesale; emails, IPs,\nand home paths are masked; tool/system turns are stripped.\n\nUsage:\n  sonny training collect [flags]\n\nFlags:\n  -h, --help               help for collect\n      --include-aider      include the aider source (walks all of $HOME)\n      --min-messages int   drop sessions with fewer messages (default 2)\n      --out string         output corpus JSONL path\n      --sources strings    sources to collect (default: all except aider)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny training dataset",
      "path": [
        "training",
        "dataset"
      ],
      "summary": "Build train/test eval suites from a collected conversation corpus",
      "usage": "  sonny training dataset [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--corpus",
          "shorthand": null,
          "type_as_displayed": "sonny training collect",
          "description": "corpus JSONL (from sonny training collect)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for dataset",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--limit",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "max windows harvested (default 125)",
          "default_as_displayed": "125",
          "group": "Flags"
        },
        {
          "name": "--out-dir",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "output directory for train.suite.yaml/test.suite.yaml/split_manifest.json",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--rules",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "behavior-rules YAML (default: embedded starter set)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--test-ratio",
          "shorthand": null,
          "type_as_displayed": "float",
          "description": "fraction of parents routed to the holdout test suite (default 0.4)",
          "default_as_displayed": "0.4",
          "group": "Flags"
        },
        {
          "name": "--turns",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "window size in turns (default 6)",
          "default_as_displayed": "6",
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Build train/test eval suites from a collected conversation corpus\n\nUsage:\n  sonny training dataset [flags]\n\nFlags:\n      --corpus sonny training collect   corpus JSONL (from sonny training collect)\n  -h, --help                            help for dataset\n      --limit int                       max windows harvested (default 125)\n      --out-dir string                  output directory for train.suite.yaml/test.suite.yaml/split_manifest.json\n      --rules string                    behavior-rules YAML (default: embedded starter set)\n      --test-ratio float                fraction of parents routed to the holdout test suite (default 0.4)\n      --turns int                       window size in turns (default 6)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny training export",
      "path": [
        "training",
        "export"
      ],
      "summary": "Export on-disk conversation traces to a training-data JSONL file",
      "usage": "  sonny training export [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--force",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "overwrite --out if it already exists",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "metadata-bearing training format (openai_chat, openai_tools, sharegpt, sharegpt_tool, or chatml) (default \"openai_chat\")",
          "default_as_displayed": "\"openai_chat\"",
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for export",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--include-tools",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "include tool calls in the export",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--keep-errors",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "export traces whose summary shows failures, labeling them with failure metadata instead of dropping them",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--out",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "output JSONL file (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--since",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "only export traces whose header start_time is on/after this RFC3339 timestamp",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--trace-dir",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "directory to scan recursively for conversation trace files (read-only) (default \"<owned-temp>/XDG_DATA_HOME/sonny/traces\")",
          "default_as_displayed": "\"<owned-temp>/XDG_DATA_HOME/sonny/traces\"",
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Export conversation traces already written to disk into a training\nJSONL file, without re-running them.\n\nEach *.jsonl trace file under --trace-dir becomes at most one training\nrecord -- never one per api_request event. Records are produced\nthrough the same TrainingExporter path \"sonny run\"'s live training\nexport uses, so on-disk and live export always emit byte-identical\nshapes and agree on conversation identity.\n\nExport is fail closed: every exported user turn needs exactly one terminal\nverified outcome with explicit consent, pinned redaction provenance, dataset\npartition, and parent-group identity. Unknown, partial, model-only, missing,\nduplicate, or unconsented outcomes are skipped. Because the outcome projection\nmust survive export, only openai_chat, openai_tools, sharegpt, sharegpt_tool,\nand chatml are accepted.\n\nThe trace directory is treated strictly read-only: nothing under it is\never created, modified, moved, or deleted.\n\nExamples:\n  # Export every trace under the default trace directory\n  sonny training export --out training.jsonl\n\n  # Export from an explicit directory\n  sonny training export --trace-dir ./traces --out training.jsonl\n\n  # Only traces started on/after a given time\n  sonny training export --out training.jsonl --since 2026-07-01T00:00:00Z\n\n  # Overwrite an existing output file\n  sonny training export --out training.jsonl --force\n\nUsage:\n  sonny training export [flags]\n\nFlags:\n      --force              overwrite --out if it already exists\n      --format string      metadata-bearing training format (openai_chat, openai_tools, sharegpt, sharegpt_tool, or chatml) (default \"openai_chat\")\n  -h, --help               help for export\n      --include-tools      include tool calls in the export\n      --keep-errors        export traces whose summary shows failures, labeling them with failure metadata instead of dropping them\n      --out string         output JSONL file (required)\n      --since string       only export traces whose header start_time is on/after this RFC3339 timestamp\n      --trace-dir string   directory to scan recursively for conversation trace files (read-only) (default \"<owned-temp>/XDG_DATA_HOME/sonny/traces\")\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny training server",
      "path": [
        "training",
        "server"
      ],
      "summary": "Start the trace aggregation server",
      "usage": "  sonny training server [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--allowed-cn",
          "shorthand": null,
          "type_as_displayed": "strings",
          "description": "allowed client certificate CNs (optional)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--ca",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "CA certificate for client verification",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--cert",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "server certificate file",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for server",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--key",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "server private key file",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--listen",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "gRPC listen address (default \"127.0.0.1:50051\")",
          "default_as_displayed": "\"127.0.0.1:50051\"",
          "group": "Flags"
        },
        {
          "name": "--storage-dir",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "directory for trace storage (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Start a gRPC server that receives and stores conversation traces.\n\nThe server can use mTLS for authentication. When certificates are provided,\nclients must present valid certificates signed by the configured CA.\n\nExamples:\n  # Start server with mTLS\n  sonny training server \\\n    --listen :50051 \\\n    --storage-dir /var/lib/sonny/traces \\\n    --cert server.crt \\\n    --key server.key \\\n    --ca ca.crt\n\n  # Start without TLS (development only)\n  sonny training server --listen 127.0.0.1:50051 --storage-dir ./traces\n\nUsage:\n  sonny training server [flags]\n\nFlags:\n      --allowed-cn strings   allowed client certificate CNs (optional)\n      --ca string            CA certificate for client verification\n      --cert string          server certificate file\n  -h, --help                 help for server\n      --key string           server private key file\n      --listen string        gRPC listen address (default \"127.0.0.1:50051\")\n      --storage-dir string   directory for trace storage (required)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny training upload",
      "path": [
        "training",
        "upload"
      ],
      "summary": "Upload traces to the aggregation server",
      "usage": "  sonny training upload [paths...] [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--batch-size",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "number of traces per batch (default 50)",
          "default_as_displayed": "50",
          "group": "Flags"
        },
        {
          "name": "--ca",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "CA certificate for server verification",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--cert",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client certificate file",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for upload",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--key",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "client private key file",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--queue-dir",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "directory for persistent upload queue (enables offline resilience)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--server",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "trace aggregation server address (default \"localhost:50051\")",
          "default_as_displayed": "\"localhost:50051\"",
          "group": "Flags"
        },
        {
          "name": "--timeout",
          "shorthand": null,
          "type_as_displayed": "duration",
          "description": "upload timeout per batch (default 30s)",
          "default_as_displayed": "30s",
          "group": "Flags"
        },
        {
          "name": "--watch",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "watch directory for new traces and upload automatically",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--workers",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "number of parallel upload workers (default 3)",
          "default_as_displayed": "3",
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Upload trace files to a remote aggregation server.\n\nSupports uploading individual files, directories, or glob patterns.\nWhen uploading directories, all .json files are uploaded.\n\nThe upload process uses batching and retry logic for reliability.\nFailed uploads are queued for retry with exponential backoff.\n\nExamples:\n  # Upload a single trace file\n  sonny training upload ./traces/trace_abc123.json\n\n  # Upload all traces from a directory\n  sonny training upload ./traces/\n\n  # Upload with mTLS authentication\n  sonny training upload ./traces/ \\\n    --server traces.example.com:50051 \\\n    --cert client.crt \\\n    --key client.key \\\n    --ca ca.crt\n\n  # Upload with custom batch size\n  sonny training upload ./traces/ --batch-size 100 --workers 5\n\n  # Watch directory and upload new traces automatically\n  sonny training upload ./traces/ --watch\n\nUsage:\n  sonny training upload [paths...] [flags]\n\nFlags:\n      --batch-size int     number of traces per batch (default 50)\n      --ca string          CA certificate for server verification\n      --cert string        client certificate file\n  -h, --help               help for upload\n      --key string         client private key file\n      --queue-dir string   directory for persistent upload queue (enables offline resilience)\n      --server string      trace aggregation server address (default \"localhost:50051\")\n      --timeout duration   upload timeout per batch (default 30s)\n      --watch              watch directory for new traces and upload automatically\n      --workers int        number of parallel upload workers (default 3)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny update",
      "path": [
        "update"
      ],
      "summary": "Manage signed Sonny application updates",
      "usage": "  sonny update [command]",
      "aliases": [],
      "children": [
        {
          "name": "apply",
          "summary": "Download, verify, and atomically activate an application update"
        },
        {
          "name": "automatic",
          "summary": "Run one policy-gated automatic application-update cycle"
        },
        {
          "name": "check",
          "summary": "Check signed metadata for an eligible application update"
        },
        {
          "name": "policy",
          "summary": "Show the effective application-update policy"
        },
        {
          "name": "recover",
          "summary": "Recover an interrupted application activation"
        }
      ],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for update",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "emit a machine-readable sanitized result",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Manage the Sonny application binary through threshold-signed metadata,\nverified supply-chain evidence, and atomic health-checked activation.\n\nThis command is intentionally separate from \"sonny recipe update\": application\nand prompt-pack updates have different trust roots and cannot update each\nother. Update policy is read only from the dedicated per-user or managed\nsystem policy file, never from project configuration or command-line trust\nflags.\n\nUsage:\n  sonny update [command]\n\nAvailable Commands:\n  apply       Download, verify, and atomically activate an application update\n  automatic   Run one policy-gated automatic application-update cycle\n  check       Check signed metadata for an eligible application update\n  policy      Show the effective application-update policy\n  recover     Recover an interrupted application activation\n\nFlags:\n  -h, --help   help for update\n      --json   emit a machine-readable sanitized result\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n\nUse \"sonny update [command] --help\" for more information about a command.\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny update apply",
      "path": [
        "update",
        "apply"
      ],
      "summary": "Download, verify, and atomically activate an application update",
      "usage": "  sonny update apply [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for apply",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "emit a machine-readable sanitized result",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Download, verify, and atomically activate an application update\n\nUsage:\n  sonny update apply [flags]\n\nFlags:\n  -h, --help   help for apply\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --json                   emit a machine-readable sanitized result\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny update automatic",
      "path": [
        "update",
        "automatic"
      ],
      "summary": "Run one policy-gated automatic application-update cycle",
      "usage": "  sonny update automatic [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for automatic",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "emit a machine-readable sanitized result",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Run one policy-gated automatic application-update cycle\n\nUsage:\n  sonny update automatic [flags]\n\nFlags:\n  -h, --help   help for automatic\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --json                   emit a machine-readable sanitized result\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny update check",
      "path": [
        "update",
        "check"
      ],
      "summary": "Check signed metadata for an eligible application update",
      "usage": "  sonny update check [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for check",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "emit a machine-readable sanitized result",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Check signed metadata for an eligible application update\n\nUsage:\n  sonny update check [flags]\n\nFlags:\n  -h, --help   help for check\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --json                   emit a machine-readable sanitized result\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny update policy",
      "path": [
        "update",
        "policy"
      ],
      "summary": "Show the effective application-update policy",
      "usage": "  sonny update policy [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for policy",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "emit a machine-readable sanitized result",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Show the effective application-update policy\n\nUsage:\n  sonny update policy [flags]\n\nFlags:\n  -h, --help   help for policy\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --json                   emit a machine-readable sanitized result\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny update recover",
      "path": [
        "update",
        "recover"
      ],
      "summary": "Recover an interrupted application activation",
      "usage": "  sonny update recover [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for recover",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "emit a machine-readable sanitized result",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Recover an interrupted application activation\n\nUsage:\n  sonny update recover [flags]\n\nFlags:\n  -h, --help   help for recover\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --json                   emit a machine-readable sanitized result\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny variant",
      "path": [
        "variant"
      ],
      "summary": "Sync and inspect upstream model-variant bundles",
      "usage": "  sonny variant [command]",
      "aliases": [],
      "children": [
        {
          "name": "stale",
          "summary": "Report the qualifications one upstream change invalidates"
        },
        {
          "name": "status",
          "summary": "Report the installed bundle, its freshness and the store's lock"
        },
        {
          "name": "sync",
          "summary": "Install one verified variant bundle atomically"
        }
      ],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for variant",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Install a verified, content-addressed variant bundle from the upstream registry into the local store, report what is installed and how fresh it is, and list the qualifications upstream drift invalidated.\n\nSelection itself always runs locally against the installed snapshot: no subcommand here resolves a variant, and only sync and stale --upstream talk to a registry at all.\n\nUsage:\n  sonny variant [command]\n\nAvailable Commands:\n  stale       Report the qualifications one upstream change invalidates\n  status      Report the installed bundle, its freshness and the store's lock\n  sync        Install one verified variant bundle atomically\n\nFlags:\n  -h, --help   help for variant\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n\nUse \"sonny variant [command] --help\" for more information about a command.\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny variant stale",
      "path": [
        "variant",
        "stale"
      ],
      "summary": "Report the qualifications one upstream change invalidates",
      "usage": "  sonny variant stale <recipe-id> [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--changed-fragment",
          "shorthand": null,
          "type_as_displayed": "stringArray",
          "description": "a changed fragment, by its tier-qualified rel path (repeatable)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--changed-profile",
          "shorthand": null,
          "type_as_displayed": "stringArray",
          "description": "a changed target-profile revision, as <profile-id>@<revision> (repeatable)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--changed-recipe",
          "shorthand": null,
          "type_as_displayed": "stringArray",
          "description": "a changed base pack, by logical pack id (repeatable)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--changed-variant",
          "shorthand": null,
          "type_as_displayed": "stringArray",
          "description": "a changed variant, as <pack-id>/<variant-id>; reports its descendants (repeatable)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--endpoint",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "upstream registry base URL; never echoed in any output",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for stale",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--insecure-http",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "allow a plain-http registry endpoint, and only when its host is loopback",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "emit the machine-readable document",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--max-age-seconds",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "refuse an installed snapshot older than this many seconds (0 leaves the age unbounded)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--now-unix",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "clock to evaluate install time and expiry against, in seconds since the Unix epoch (0 uses the host clock)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--profiles",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "target-profile catalog file (default: the documented catalog search order)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--require-revocation-check",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "treat an unchecked revocation feed as revoked instead of serving the installed snapshot with a stale marker",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--root",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "bundle store root (default <XDG data>/sonny/variant-bundles)",
          "default_as_displayed": "<XDG data>/sonny/variant-bundles",
          "group": "Flags"
        },
        {
          "name": "--trusted-key",
          "shorthand": null,
          "type_as_displayed": "stringArray",
          "description": "trust bundles signed by this Ed25519 public key, as <key-id>=<path to key file> (repeatable; base64, PEM or ssh-ed25519). A bundle whose manifest is not signed by a trusted key is refused",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--upstream",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "also read the registry's staleness feed and seed the walk from it",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Name what changed and this reports every (variant, target-profile) qualification cell it invalidates, including the extends descendants a shared ancestor drags with it.\n\nThe walk runs locally, over the ACTIVE bundle's discovered catalog and the target-profile catalog, through the same impact graph pack compilation uses. Which variants cover which profile revisions is decided by the resolver's own selector matcher, never by a name comparison. --upstream additionally reads the registry's staleness feed and seeds the walk with every cell it reports, so one upstream fact fans out into the local cells it really touches.\n\nUsage:\n  sonny variant stale <recipe-id> [flags]\n\nFlags:\n      --changed-fragment stringArray   a changed fragment, by its tier-qualified rel path (repeatable)\n      --changed-profile stringArray    a changed target-profile revision, as <profile-id>@<revision> (repeatable)\n      --changed-recipe stringArray     a changed base pack, by logical pack id (repeatable)\n      --changed-variant stringArray    a changed variant, as <pack-id>/<variant-id>; reports its descendants (repeatable)\n      --endpoint string                upstream registry base URL; never echoed in any output\n  -h, --help                           help for stale\n      --insecure-http                  allow a plain-http registry endpoint, and only when its host is loopback\n      --json                           emit the machine-readable document\n      --max-age-seconds int            refuse an installed snapshot older than this many seconds (0 leaves the age unbounded)\n      --now-unix int                   clock to evaluate install time and expiry against, in seconds since the Unix epoch (0 uses the host clock)\n      --profiles string                target-profile catalog file (default: the documented catalog search order)\n      --require-revocation-check       treat an unchecked revocation feed as revoked instead of serving the installed snapshot with a stale marker\n      --root string                    bundle store root (default <XDG data>/sonny/variant-bundles)\n      --trusted-key stringArray        trust bundles signed by this Ed25519 public key, as <key-id>=<path to key file> (repeatable; base64, PEM or ssh-ed25519). A bundle whose manifest is not signed by a trusted key is refused\n      --upstream                       also read the registry's staleness feed and seed the walk from it\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny variant status",
      "path": [
        "variant",
        "status"
      ],
      "summary": "Report the installed bundle, its freshness and the store's lock",
      "usage": "  sonny variant status [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for status",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "emit the machine-readable document",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--max-age-seconds",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "refuse an installed snapshot older than this many seconds (0 leaves the age unbounded)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--now-unix",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "clock to evaluate install time and expiry against, in seconds since the Unix epoch (0 uses the host clock)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--require-revocation-check",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "treat an unchecked revocation feed as revoked instead of serving the installed snapshot with a stale marker",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--root",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "bundle store root (default <XDG data>/sonny/variant-bundles)",
          "default_as_displayed": "<XDG data>/sonny/variant-bundles",
          "group": "Flags"
        },
        {
          "name": "--trusted-key",
          "shorthand": null,
          "type_as_displayed": "stringArray",
          "description": "trust bundles signed by this Ed25519 public key, as <key-id>=<path to key file> (repeatable; base64, PEM or ssh-ed25519). A bundle whose manifest is not signed by a trusted key is refused",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Report what the local store holds: the active bundle and when it was installed, every retained generation, the recorded revocation feed's revision and size, the snapshot's age against the configured cap, whether activation is blocked, and whether an install lock is held.\n\nIt reads only local state -- no registry is contacted and nothing is written -- and it never refuses: an expired, unchecked or revoked installation is reported as data, with exit status 0, because a command that refused to describe a broken installation would hide exactly what an operator called it to see.\n\nUsage:\n  sonny variant status [flags]\n\nFlags:\n  -h, --help                       help for status\n      --json                       emit the machine-readable document\n      --max-age-seconds int        refuse an installed snapshot older than this many seconds (0 leaves the age unbounded)\n      --now-unix int               clock to evaluate install time and expiry against, in seconds since the Unix epoch (0 uses the host clock)\n      --require-revocation-check   treat an unchecked revocation feed as revoked instead of serving the installed snapshot with a stale marker\n      --root string                bundle store root (default <XDG data>/sonny/variant-bundles)\n      --trusted-key stringArray    trust bundles signed by this Ed25519 public key, as <key-id>=<path to key file> (repeatable; base64, PEM or ssh-ed25519). A bundle whose manifest is not signed by a trusted key is refused\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny variant sync",
      "path": [
        "variant",
        "sync"
      ],
      "summary": "Install one verified variant bundle atomically",
      "usage": "  sonny variant sync [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--bundle",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "bundle id to install (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--channel",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "channel this node follows (default \"stable\")",
          "default_as_displayed": "\"stable\"",
          "group": "Flags"
        },
        {
          "name": "--dry-run",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "report what a sync would do and write nothing, here or at the registry",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--endpoint",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "upstream registry base URL; never echoed in any output",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for sync",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--insecure-http",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "allow a plain-http registry endpoint, and only when its host is loopback",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "emit the machine-readable document",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--manifest-digest",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "refuse any manifest but this one (sha256:jcs1:<hex>)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--max-age-seconds",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "refuse an installed snapshot older than this many seconds (0 leaves the age unbounded)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--namespace",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "tenant namespace this node acknowledges into",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--node-id",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "node identity reported in the acknowledgement",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--now-unix",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "clock to evaluate install time and expiry against, in seconds since the Unix epoch (0 uses the host clock)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--registry-name",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "display name for the registry, the only registry identity the documents carry",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--require-revocation-check",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "treat an unchecked revocation feed as revoked instead of serving the installed snapshot with a stale marker",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--retain",
          "shorthand": null,
          "type_as_displayed": "int",
          "description": "bundle generations to keep, counting the active one (0 keeps the store default of 3)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--root",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "bundle store root (default <XDG data>/sonny/variant-bundles)",
          "default_as_displayed": "<XDG data>/sonny/variant-bundles",
          "group": "Flags"
        },
        {
          "name": "--trusted-key",
          "shorthand": null,
          "type_as_displayed": "stringArray",
          "description": "trust bundles signed by this Ed25519 public key, as <key-id>=<path to key file> (repeatable; base64, PEM or ssh-ed25519). A bundle whose manifest is not signed by a trusted key is refused",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Fetch one bundle from the configured registry, verify its manifest and every blob against the digests the manifest declares, verify the manifest's Ed25519 signature against the keys named with --trusted-key, install it atomically, and acknowledge to the registry what this node is now running.\n\nThe install is fail-closed: the revocation feed is consulted first, and a revoked bundle, a digest mismatch, an unsigned manifest or one not signed by a trusted key, an oversize asset, a short closure or a held install lock refuses before anything becomes active. It is idempotent: re-syncing the bundle that is already active installs nothing and says so. --dry-run writes nothing at all, on this host or at the registry.\n\nUsage:\n  sonny variant sync [flags]\n\nFlags:\n      --bundle string              bundle id to install (required)\n      --channel string             channel this node follows (default \"stable\")\n      --dry-run                    report what a sync would do and write nothing, here or at the registry\n      --endpoint string            upstream registry base URL; never echoed in any output\n  -h, --help                       help for sync\n      --insecure-http              allow a plain-http registry endpoint, and only when its host is loopback\n      --json                       emit the machine-readable document\n      --manifest-digest string     refuse any manifest but this one (sha256:jcs1:<hex>)\n      --max-age-seconds int        refuse an installed snapshot older than this many seconds (0 leaves the age unbounded)\n      --namespace string           tenant namespace this node acknowledges into\n      --node-id string             node identity reported in the acknowledgement\n      --now-unix int               clock to evaluate install time and expiry against, in seconds since the Unix epoch (0 uses the host clock)\n      --registry-name string       display name for the registry, the only registry identity the documents carry\n      --require-revocation-check   treat an unchecked revocation feed as revoked instead of serving the installed snapshot with a stale marker\n      --retain int                 bundle generations to keep, counting the active one (0 keeps the store default of 3)\n      --root string                bundle store root (default <XDG data>/sonny/variant-bundles)\n      --trusted-key stringArray    trust bundles signed by this Ed25519 public key, as <key-id>=<path to key file> (repeatable; base64, PEM or ssh-ed25519). A bundle whose manifest is not signed by a trusted key is refused\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny version",
      "path": [
        "version"
      ],
      "summary": "Print version information, the license, the changelog, or SCA build info",
      "usage": "  sonny version [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--changelog",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "print the CHANGELOG",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for version",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--license",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "print the full LICENSE text",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--sbom",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "print the CycloneDX SBOM (JSON)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--storage",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "print the source cache's storage runtime report (JSON)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--third-party-licenses",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "print dependency licenses (CSV: module,url,spdx-id)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Print version information, the license, the changelog, or SCA build info\n\nUsage:\n  sonny version [flags]\n\nFlags:\n      --changelog              print the CHANGELOG\n  -h, --help                   help for version\n      --license                print the full LICENSE text\n      --sbom                   print the CycloneDX SBOM (JSON)\n      --storage                print the source cache's storage runtime report (JSON)\n      --third-party-licenses   print dependency licenses (CSV: module,url,spdx-id)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny workspace",
      "path": [
        "workspace"
      ],
      "summary": "Grant, revoke, or inspect workspace trust",
      "usage": "  sonny workspace [command]",
      "aliases": [],
      "children": [
        {
          "name": "release-legacy-agent",
          "summary": "Release workspaces a built-in agent client registered before the upgrade"
        },
        {
          "name": "status",
          "summary": "Show the trust state of the workspace at path (default: the current directory)"
        },
        {
          "name": "trust",
          "summary": "Grant trust to the workspace at path (default: the current directory)"
        },
        {
          "name": "untrust",
          "summary": "Revoke trust for the workspace at path (default: the current directory)"
        }
      ],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for workspace",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "A workspace -- a registered canonical directory -- gates its own executable\nconfiguration (hooks, MCP servers, LSP sessions, subagent binaries,\ncommand-form secrets, integrations, and project model catalogs) on\nwhether an operator has reviewed and trusted it. An unregistered or\nuntrusted workspace refuses all of these; see \"Workspace trust\" in\ndocs/config/precedence.md for the full gated-kinds table.\n\nUsage:\n  sonny workspace [command]\n\nAvailable Commands:\n  release-legacy-agent Release workspaces a built-in agent client registered before the upgrade\n  status               Show the trust state of the workspace at path (default: the current directory)\n  trust                Grant trust to the workspace at path (default: the current directory)\n  untrust              Revoke trust for the workspace at path (default: the current directory)\n\nFlags:\n  -h, --help   help for workspace\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n\nUse \"sonny workspace [command] --help\" for more information about a command.\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny workspace release-legacy-agent",
      "path": [
        "workspace",
        "release-legacy-agent"
      ],
      "summary": "Release workspaces a built-in agent client registered before the upgrade",
      "usage": "  sonny workspace release-legacy-agent [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--client-name",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "the built-in agent client: sonny-mcp, sonny-editor-host, sonny-supervisor-cli or sonny-mesh-peers-cli (required)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--endpoint",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "supervisor socket (unix) or pipe (windows) path (default: sockpath.Endpoint())",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for release-legacy-agent",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Since SONNY-4067 every agent-kind supervisor connection (no human-attach\nproof) has a durable identity ending in \"#agent\". Workspaces a built-in\nagent client registered before the upgrade stay owned by its old identity,\n\"<client_name>@<tenant>\", so their folders refuse to be registered again.\nThis command lists and releases them for one of the built-in clients that\nalways connect as agents: sonny-mcp, sonny-editor-host,\nsonny-supervisor-cli or sonny-mesh-peers-cli. Any other name is refused,\nthe desktop's and editor-rpc's included: a human connection holds that same\nun-suffixed shape today.\n\nStop the supervisor first (--endpoint names it when it is not at the\ndefault socket). The command refuses unless it runs at an interactive\nterminal, and asks you to confirm the listed folders by typing \"release\".\nIt never transfers anything to another identity: a released folder starts\nuntrusted and unbound, and sessions the old identity created stay in the\njournal.\n\nUsage:\n  sonny workspace release-legacy-agent [flags]\n\nFlags:\n      --client-name string   the built-in agent client: sonny-mcp, sonny-editor-host, sonny-supervisor-cli or sonny-mesh-peers-cli (required)\n      --endpoint string      supervisor socket (unix) or pipe (windows) path (default: sockpath.Endpoint())\n  -h, --help                 help for release-legacy-agent\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny workspace status",
      "path": [
        "workspace",
        "status"
      ],
      "summary": "Show the trust state of the workspace at path (default: the current directory)",
      "usage": "  sonny workspace status [path] [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for status",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Show the trust state of the workspace at path (default: the current directory)\n\nUsage:\n  sonny workspace status [path] [flags]\n\nFlags:\n  -h, --help   help for status\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny workspace trust",
      "path": [
        "workspace",
        "trust"
      ],
      "summary": "Grant trust to the workspace at path (default: the current directory)",
      "usage": "  sonny workspace trust [path] [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for trust",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Grant trust to the workspace at path (default: the current directory).\n\nTrust lets the workspace's own hooks, MCP servers, language servers and\nother executable configuration run, so it is meant for the operator: the\ncommand refuses unless stdin and stderr are an interactive terminal and no\nagent-session marker is set, then asks you to confirm the resolved absolute\nroot by typing \"trust\". There is no flag that skips the confirmation. This\nstops a plain agent or exec-tool call; it is not a hard boundary against a\nprocess of your own user that allocates a pseudo-terminal (see the\nhuman-attach ADR's residual risk). Revoking trust (\"sonny workspace\nuntrust\") is not gated.\n\nUsage:\n  sonny workspace trust [path] [flags]\n\nFlags:\n  -h, --help   help for trust\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny workspace untrust",
      "path": [
        "workspace",
        "untrust"
      ],
      "summary": "Revoke trust for the workspace at path (default: the current directory)",
      "usage": "  sonny workspace untrust [path] [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for untrust",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Revoke trust for the workspace at path (default: the current directory).\n\nEvery grant you own for the workspace is revoked -- your own, and every one\nthe desktop app filed under your local profile -- so \"sonny workspace status\"\nthen reports it untrusted. The command names each grant it removed. Revoking\nonly narrows what runs, so it is not gated on an interactive terminal.\n\nUsage:\n  sonny workspace untrust [path] [flags]\n\nFlags:\n  -h, --help   help for untrust\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny worktrees",
      "path": [
        "worktrees"
      ],
      "summary": "Manage the Git worktrees Sonny creates for delegated child agents",
      "usage": "  sonny worktrees [command]",
      "aliases": [],
      "children": [
        {
          "name": "prune",
          "summary": "Remove child-agent worktrees that hold no work, and list the ones kept"
        }
      ],
      "flags": [
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for worktrees",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "Manage the Git worktrees Sonny creates for delegated child agents\n\nUsage:\n  sonny worktrees [command]\n\nAvailable Commands:\n  prune       Remove child-agent worktrees that hold no work, and list the ones kept\n\nFlags:\n  -h, --help   help for worktrees\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n\nUse \"sonny worktrees [command] --help\" for more information about a command.\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    },
    {
      "command": "sonny worktrees prune",
      "path": [
        "worktrees",
        "prune"
      ],
      "summary": "Remove child-agent worktrees that hold no work, and list the ones kept",
      "usage": "  sonny worktrees prune [flags]",
      "aliases": [],
      "children": [],
      "flags": [
        {
          "name": "--control-db",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "SQLite control database (default: SONNY_CONTROL_DB, then the data directory)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--dir",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "a directory inside the checkout to prune (default: the current directory)",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--dry-run",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "report what would be removed without removing anything",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--help",
          "shorthand": "-h",
          "type_as_displayed": null,
          "description": "help for prune",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--json",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "emit the report as JSON",
          "default_as_displayed": null,
          "group": "Flags"
        },
        {
          "name": "--min-idle",
          "shorthand": null,
          "type_as_displayed": "duration",
          "description": "keep worktrees touched more recently than this (default 10m0s)",
          "default_as_displayed": "10m0s",
          "group": "Flags"
        },
        {
          "name": "--analysis-json",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--config",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "config file (default: .sonny.yaml in working directory)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--debug",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "enable debug mode",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--log-format",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log format: text|json (default \"text\")",
          "default_as_displayed": "\"text\"",
          "group": "Global Flags"
        },
        {
          "name": "--log-level",
          "shorthand": null,
          "type_as_displayed": "string",
          "description": "log level: debug|info|warn|error (default \"warn\")",
          "default_as_displayed": "\"warn\"",
          "group": "Global Flags"
        },
        {
          "name": "--model",
          "shorthand": "-m",
          "type_as_displayed": "string",
          "description": "model to use (overrides pack default)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--provider",
          "shorthand": "-p",
          "type_as_displayed": "string",
          "description": "LLM provider (openai, anthropic, ollama, etc.)",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--quiet-deprecations",
          "shorthand": null,
          "type_as_displayed": null,
          "description": "suppress schema and legacy recipe-name deprecation warnings",
          "default_as_displayed": null,
          "group": "Global Flags"
        },
        {
          "name": "--workdir",
          "shorthand": "-C",
          "type_as_displayed": "string",
          "description": "working directory (default \".\")",
          "default_as_displayed": "\".\"",
          "group": "Global Flags"
        }
      ],
      "help": "prune removes each child-agent worktree of the checkout and its\nsonny/child/<hash> branch whose work is provably empty: HEAD and branch still\nat the commit the child started from, and nothing modified, staged or\nuntracked except Sonny's own regenerated .sonny/init-manifest.yaml and\n.sonny/packs/generated/ files. Child worktrees live in the per-user cache\n(<cache>/sonny/worktrees/<repo>-<hash>/<suffix>, or SONNY_CHILD_WORKTREE_DIR);\nones an older Sonny created next to the checkout as <repo>-sonny-<hash> are\npruned too.\n\nA worktree is never removed while a live session holds its claim in the\ncontrol store (a running child, or an integration in progress), while it was\ntouched within --min-idle, or when it holds any commit or other change. Each\nkept worktree is listed with the reason.\n\nUsage:\n  sonny worktrees prune [flags]\n\nFlags:\n      --control-db string   SQLite control database (default: SONNY_CONTROL_DB, then the data directory)\n      --dir string          a directory inside the checkout to prune (default: the current directory)\n      --dry-run             report what would be removed without removing anything\n  -h, --help                help for prune\n      --json                emit the report as JSON\n      --min-idle duration   keep worktrees touched more recently than this (default 10m0s)\n\nGlobal Flags:\n      --analysis-json string   versioned analysis JSON patch; protected settings may only narrow (SONNY_ANALYSIS_JSON supplies the environment layer)\n      --config string          config file (default: .sonny.yaml in working directory)\n      --debug                  enable debug mode\n      --log-format string      log format: text|json (default \"text\")\n      --log-level string       log level: debug|info|warn|error (default \"warn\")\n  -m, --model string           model to use (overrides pack default)\n  -p, --provider string        LLM provider (openai, anthropic, ollama, etc.)\n      --quiet-deprecations     suppress schema and legacy recipe-name deprecation warnings\n  -C, --workdir string         working directory (default \".\")\n",
      "stderr": "",
      "exit": 0,
      "parser": "cobra"
    }
  ],
  "status": "passed",
  "cleanup": {
    "root_removed": true
  },
  "counts": {
    "commands": 365,
    "flags_including_inherited": 4947,
    "top_level": 43
  }
}
