{
 "tasks": [
  {
   "artifact_sha": "151d63776c9d27e441cea6fde6109789108c1227a75b67f2d33b99bb0dfe339b",
   "attempt": 1,
   "capability": "WORK",
   "created_at": 1794629295.8991792,
   "depends": [],
   "dispatched_at": 1794629295.9850183,
   "error": null,
   "exclude_field": null,
   "exclude_worker": null,
   "field": "analysis",
   "finished_at": 1794629295.9940631,
   "idem_key": "81cdcc26e12baf288345c8a51a72213cf0cb8304372d052bb675eb26bc1c0eb1",
   "kind": "EXECUTE",
   "lease_until": 1794629415.9850183,
   "max_attempts": 3,
   "mission_id": "msn-613387bd41",
   "node_id": "p4c101_data",
   "operation": "summarize_csv",
   "output_digest": "151d63776c9d27e441cea6fde6109789108c1227a75b67f2d33b99bb0dfe339b",
   "params": {
    "text": "sepal_length,sepal_width,petal_length,petal_width,species\r\n6.4,2.8,5.6,2.2,virginica\r\n4.8,3.0,1.4,0.1,setosa\r\n6.7,3.3,5.7,2.1,virginica\r\n6.1,3.0,4.6,1.4,versicolor\r\n5.6,2.8,4.9,2.0,virginica\r\n5.9,3.2,4.8,1.8,versicolor\r\n6.3,3.3,6.0,2.5,virginica\r\n5.7,2.9,4.2,1.3,versicolor\r\n5.2,2.7,3.9,1.4,versicolor\r\n5.1,3.4,1.5,0.2,setosa\r\n6.4,3.2,5.3,2.3,virginica\r\n6.3,3.4,5.6,2.4,virginica\r\n6.7,3.1,5.6,2.4,virginica\r\n5.0,2.3,3.3,1.0,versicolor\r\n6.9,3.1,5.1,2.3,virginica\r\n5.0,3.4,1.5,0.2,setosa\r\n5.4,3.7,1.5,0.2,setosa\r\n5.8,2.6,4.0,1.2,versicolor\r\n5.6,2.5,3.9,1.1,versicolor\r\n4.6,3.2,1.4,0.2,setosa\r\n5.8,2.6,4.0,1.2,versicolor\r\n5.7,2.8,4.1,1.3,versicolor\r\n5.1,3.8,1.9,0.4,setosa\r\n5.4,3.9,1.7,0.4,setosa\r\n4.6,3.1,1.5,0.2,setosa\r\n5.1,2.5,3.0,1.1,versicolor\r\n7.9,3.8,6.4,2.0,virginica\r\n4.4,2.9,1.4,0.2,setosa\r\n5.2,3.5,1.5,0.2,setosa\r\n4.9,2.5,4.5,1.7,virginica\r\n5.1,3.4,1.5,0.2,setosa\r\n4.7,3.2,1.6,0.2,setosa\r\n4.4,3.2,1.3,0.2,setosa\r\n4.9,3.6,1.4,0.1,setosa\r\n5.7,2.6,3.5,1.0,versicolor\r\n6.5,3.0,5.5,1.8,virginica\r\n4.8,3.1,1.6,0.2,setosa\r\n5.1,3.8,1.6,0.2,setosa\r\n7.7,3.8,6.7,2.2,virginica\r\n5.1,3.7,1.5,0.4,setosa\r\n"
   },
   "parent_task": null,
   "result": {
    "artifact_len": 342,
    "artifact_sha256": "151d63776c9d27e441cea6fde6109789108c1227a75b67f2d33b99bb0dfe339b",
    "attempt": 1,
    "error": null,
    "finished_at": 1794629295.9912565,
    "mission_id": "msn-613387bd41",
    "ok": true,
    "started_at": 1794629295.9889262,
    "task_id": "p4c101_data",
    "ticket_id": "tkt-a4c862cd192207d4",
    "worker_id": "w-f584f948cf"
   },
   "role": "worker",
   "side_effect": "local_artifact",
   "state": "VERIFIED",
   "task_id": "p4c101_data",
   "ticket_id": "tkt-a4c862cd192207d4",
   "timeout_s": 120.0,
   "updated_at": 1794629295.9940753,
   "verification": {
    "method": "recompute",
    "verification_id": "ver-4c07284c4a",
    "verified": true
   },
   "verify_of": null,
   "worker_id": "w-f584f948cf"
  },
  {
   "artifact_sha": "f4dd02fdb49055d2cdacd7fbf3748bdc0380477ba9d6d35d78284edec84d709e",
   "attempt": 1,
   "capability": "WORK",
   "created_at": 1794629295.8991792,
   "depends": [],
   "dispatched_at": 1794629295.987097,
   "error": null,
   "exclude_field": null,
   "exclude_worker": null,
   "field": "analysis",
   "finished_at": 1794629295.9970517,
   "idem_key": "0b58914261a97e1c767e267eacef295994090b83a7a2963572c60f3d2ce4f5a7",
   "kind": "EXECUTE",
   "lease_until": 1794629415.987097,
   "max_attempts": 3,
   "mission_id": "msn-613387bd41",
   "node_id": "p4c101_infra",
   "operation": "scan_text",
   "output_digest": "f4dd02fdb49055d2cdacd7fbf3748bdc0380477ba9d6d35d78284edec84d709e",
   "params": {
    "patterns": [
     "cpu_percent",
     "memory_percent",
     "disk_percent"
    ],
    "text": "{\"cpu_percent\": 92.7, \"cycle\": 101, \"disk_percent\": 50.5, \"load_1m\": 17.4833984375, \"memory_percent\": 84.4}"
   },
   "parent_task": null,
   "result": {
    "artifact_len": 203,
    "artifact_sha256": "f4dd02fdb49055d2cdacd7fbf3748bdc0380477ba9d6d35d78284edec84d709e",
    "attempt": 1,
    "error": null,
    "finished_at": 1794629295.9926648,
    "mission_id": "msn-613387bd41",
    "ok": true,
    "started_at": 1794629295.9893453,
    "task_id": "p4c101_infra",
    "ticket_id": "tkt-7db3fd369784d06d",
    "worker_id": "w-893ec8bed7"
   },
   "role": "worker",
   "side_effect": "local_artifact",
   "state": "VERIFIED",
   "task_id": "p4c101_infra",
   "ticket_id": "tkt-7db3fd369784d06d",
   "timeout_s": 120.0,
   "updated_at": 1794629295.9970627,
   "verification": {
    "method": "recompute",
    "verification_id": "ver-8144f50137",
    "verified": true
   },
   "verify_of": null,
   "worker_id": "w-893ec8bed7"
  },
  {
   "artifact_sha": "6b0e4dec07ed98b6f6c67fa9f582765504e8f3e4a03caf10e7da1476c272e22e",
   "attempt": 1,
   "capability": "WORK",
   "created_at": 1794629295.8991792,
   "depends": [],
   "dispatched_at": 1794629295.9565952,
   "error": null,
   "exclude_field": null,
   "exclude_worker": null,
   "field": "analysis",
   "finished_at": 1794629295.9816642,
   "idem_key": "1b0e50b81a5ca6982331fae661fa6da585ab0a10b9d24bdc4a4b42abb0e030fe",
   "kind": "EXECUTE",
   "lease_until": 1794629415.9565952,
   "max_attempts": 3,
   "mission_id": "msn-613387bd41",
   "node_id": "p4c101_literature",
   "operation": "extract_entities",
   "output_digest": "6b0e4dec07ed98b6f6c67fa9f582765504e8f3e4a03caf10e7da1476c272e22e",
   "params": {
    "text": "LocalAgent: Collaborative Agentic Verification for Fine-Grained Instance-Level Consistency\nMultimodal large language models (MLLMs) have made rapid progress in general visual understanding, yet they still struggle with fine-grained instance-level consistency verification, where the goal is to determine whether two images depict the exact same physical object under varying viewpoints, illumination, and backgrounds. This task requires both global semantic perception and precise examination of subtle local evidence, since semantically similar objects may differ only in small suspicious regions. To address this challenge, we propose LocalAgent, a collaborative agentic framework that integrates the complementary strengths of a generalist MLLM and lightweight specialist verifiers. The MLLM first reasons globally to identify suspicious local regions, which are then delegated to a Local Evidence Verifier (LEV) toolkit for fine-grained appearance and geometric matching. LEV comprises Local Appearance Consistency (LAC), which estimates appearance similarity under illumination and color changes, and Local Geometric Correspondence (LGC), which estimates spatial correspondence under viewpoint changes. LEV returns structured scalar evidence that the MLLM integrates for the final decision. We further introduce an auxiliary-capped reinforcement fine-tuning (RFT) strategy, in which answer correctness dominates auxiliary tool-use and format signals, enabling the policy to learn when verification is necessary. Experiments show that LocalAgent improves mean accuracy by 4.9% over the strongest CoT-RFT baseline while invoking a verifier on only 12.13% of samples and preserving the general multimodal capabilities of the underlying MLLM. The open-source repository is available at https://github.com/Firefly-zoo/LocalAgent-main."
   },
   "parent_task": null,
   "result": {
    "artifact_len": 423,
    "artifact_sha256": "6b0e4dec07ed98b6f6c67fa9f582765504e8f3e4a03caf10e7da1476c272e22e",
    "attempt": 1,
    "error": null,
    "finished_at": 1794629295.9760888,
    "mission_id": "msn-613387bd41",
    "ok": true,
    "started_at": 1794629295.9690907,
    "task_id": "p4c101_literature",
    "ticket_id": "tkt-1ab8bcb4f887e05d",
    "worker_id": "w-3bf4ec9944"
   },
   "role": "worker",
   "side_effect": "local_artifact",
   "state": "VERIFIED",
   "task_id": "p4c101_literature",
   "ticket_id": "tkt-1ab8bcb4f887e05d",
   "timeout_s": 120.0,
   "updated_at": 1794629295.9816847,
   "verification": {
    "method": "recompute",
    "verification_id": "ver-454c3e4451",
    "verified": true
   },
   "verify_of": null,
   "worker_id": "w-3bf4ec9944"
  },
  {
   "artifact_sha": "73d7a257d5d4ec2a3a4609d026996ec180911dc33bbf549f3179b4511a1a266b",
   "attempt": 1,
   "capability": "WORK",
   "created_at": 1794629295.8991792,
   "depends": [],
   "dispatched_at": 1794629295.9597292,
   "error": null,
   "exclude_field": null,
   "exclude_worker": null,
   "field": "analysis",
   "finished_at": 1794629295.9771457,
   "idem_key": "58cfb69cdde3725bb5bfbcebb6337f174742398be2a8d030bd86ab811566725d",
   "kind": "EXECUTE",
   "lease_until": 1794629415.9597292,
   "max_attempts": 3,
   "mission_id": "msn-613387bd41",
   "node_id": "p4c101_security",
   "operation": "scan_text",
   "output_digest": "73d7a257d5d4ec2a3a4609d026996ec180911dc33bbf549f3179b4511a1a266b",
   "params": {
    "patterns": [
     "except\\s+Exception:\\s*pass",
     "shell\\s*=\\s*True",
     "eval\\(",
     "pickle\\.loads",
     "verify\\s*=\\s*False"
    ],
    "text": "\"\"\"Durable coordinator state (SQLite, WAL). Everything the coordinator needs to resume is here.\n\nDurability note: `synchronous=NORMAL` with WAL survives process crashes (kill -9) with no committed-transaction\nloss. A power loss or kernel crash can lose the last few transactions; pass durable=\"full\" to close that gap at a\nthroughput cost. This file is the source of truth; ClawX is a projection of it, never the other way round.\n\"\"\"\nfrom __future__ import annotations\n\nimport json\nimport sqlite3\nimport time\nfrom typing import Any, Dict, Iterable, List, Mapping, Optional\n\nfrom .canon import sha\n\nSCHEMA = \"\"\"\nCREATE TABLE IF NOT EXISTS meta(k TEXT PRIMARY KEY, v TEXT);\nCREATE TABLE IF NOT EXISTS hosts(\n  host_id TEXT PRIMARY KEY, pub TEXT NOT NULL, state TEXT NOT NULL, slots INTEGER NOT NULL DEFAULT 0,\n  enrolled_at REAL, last_seen REAL, info TEXT NOT NULL DEFAULT '{}');\nCREATE TABLE IF NOT EXISTS workers(\n  worker_id TEXT PRIMARY KEY, host_id TEXT NOT NULL, mission_id TEXT NOT NULL, role TEXT NOT NULL,\n  field TEXT NOT NULL DEFAULT 'general', purpose TEXT NOT NULL DEFAULT '', parent_id TEXT, depth INTEGER NOT NULL DEFAULT 1,\n  pub TEXT, state TEXT NOT NULL, pid INTEGER, grant_id TEXT, cred TEXT,\n  created_at REAL, enrolled_at REAL, ended_at REAL, last_beat REAL, end_reason TEXT,\n  tasks_done INTEGER NOT NULL DEFAULT 0, tasks_failed INTEGER NOT NULL DEFAULT 0,\n  alive_s REAL NOT NULL DEFAULT 0, rss_kb INTEGER NOT NULL DEFAULT 0, current_task TEXT);\nCREATE INDEX IF NOT EXISTS workers_state ON workers(state, mission_id, role);\nCREATE TABLE IF NOT EXISTS grants(\n  grant_id TEXT PRIMARY KEY, mission_id TEXT NOT NULL, child_id TEXT NOT NULL, parent_id TEXT NOT NULL,\n  body TEXT NOT NULL, ops_used INTEGER NOT NULL DEFAULT 0, issued_at REAL, expires_at REAL,\n  superseded_by TEXT);\nCREATE INDEX IF NOT EXISTS grants_child ON grants(child_id);\nCREATE TABLE IF NOT EXISTS revocations(subject TEXT PRIMARY KEY, kind TEXT, at REAL, reason TEXT);\nCREATE TABLE IF NOT EXISTS missions(\n  mission_id TEXT PRIMARY KEY, tenant TEXT NOT NULL, principal TEXT NOT NULL, spec TEXT NOT NULL,\n  spec_digest TEXT NOT NULL, state TEXT NOT NULL, created_at REAL, updated_at REAL, deadline REAL,\n  usage TEXT NOT NULL DEFAULT '{}', last_progress_at REAL, escalations INTEGER NOT NULL DEFAULT 0,\n  determination TEXT);\nCREATE TABLE IF NOT EXISTS tasks(\n  task_id TEXT PRIMARY KEY, mission_id TEXT NOT NULL, node_id TEXT NOT NULL, kind TEXT NOT NULL,\n  state TEXT NOT NULL, operation TEXT NOT NULL, capability TEXT NOT NULL, side_effect TEXT NOT NULL,\n  role TEXT NOT NULL, field TEXT NOT NULL DEFAULT 'general', params TEXT NOT NULL, depends TEXT NOT NULL DEFAULT '[]', idem_key TEXT UNIQUE,\n  attempt INTEGER NOT NULL DEFAULT 0, max_attempts INTEGER NOT NULL DEFAULT 3, timeout_s REAL NOT NULL DEFAULT 60,\n  worker_id TEXT, lease_until REAL, ticket_id TEXT, result TEXT, output_digest TEXT, artifact_sha TEXT,\n  verification TEXT NOT NULL DEFAULT '{}', verify_of TEXT, parent_task TEXT, exclude_worker TEXT,\n  exclude_field TEXT, created_at REAL, updated_at REAL, dispatched_at REAL, finished_at REAL, error TEXT);\nCREATE INDEX IF NOT EXISTS tasks_state ON tasks(state, mission_id, role);\nCREATE INDEX IF NOT EXISTS tasks_mission ON tasks(mission_id, node_id);\nCREATE TABLE IF NOT EXISTS tickets(\n  ticket_id TEXT PRIMARY KEY, task_id TEXT NOT NULL, attempt INTEGER NOT NULL, worker_id TEXT NOT NULL,\n  body TEXT NOT NULL, sig TEXT NOT NULL, kid TEXT NOT NULL, issued_at REAL, expires_at REAL, state TEXT NOT NULL);\nCREATE TABLE IF NOT EXISTS decisions(\n  decision_id TEXT PRIMARY KEY, at REAL, mission_id TEXT, worker_id TEXT, task_id TEXT, kind TEXT,\n  outcome TEXT, reasons TEXT, op_digest TEXT);\nCREATE INDEX IF NOT EXISTS decisions_mission ON decisions(mission_id, outcome);\nCREATE TABLE IF NOT EXISTS replay(nonce TEXT PRIMARY KEY, at REAL);\nCREATE TABLE IF NOT EXISTS results(\n  task_id TEXT NOT NULL, attempt INTEGER NOT NULL, worker_id TEXT NOT NULL, body TEXT NOT NULL, sig TEXT NOT NULL,\n  accepted INTEGER NOT NULL, reason TEXT, at REAL, PRIMARY KEY(task_id, attempt, worker_id));\nCREATE TABLE IF NOT EXISTS verifications(\n  ver_id TEXT PRIMARY KEY, task_id TEXT NOT NULL, mission_id TEXT NOT NULL, method TEXT, verifier_id TEXT,\n  producer_id TEXT, passed INTEGER, detail TEXT, at REAL, sig TEXT, kid TEXT);\nCREATE TABLE IF NOT EXISTS model_calls(\n  call_id TEXT PRIMARY KEY, at REAL, mission_id TEXT, task_id TEXT, worker_id TEXT, provider TEXT, model TEXT,\n  execution_class TEXT, tokens_in INTEGER, tokens_out INTEGER, cost_usd REAL, latency_s REAL,\n  request_digest TEXT, response_digest TEXT, status TEXT, error TEXT, detail TEXT, ticket_id TEXT,\n  attempt INTEGER NOT NULL DEFAULT 0);\nCREATE UNIQUE INDEX IF NOT EXISTS model_calls_ticket ON model_calls(ticket_id) WHERE ticket_id IS NOT NULL;\nCREATE TABLE IF NOT EXISTS artifacts(\n  sha256 TEXT PRIMARY KEY, bytes INTEGER NOT NULL, media_type TEXT, path TEXT NOT NULL, created_at REAL);\nCREATE TABLE IF NOT EXISTS checkpoints(\n  checkpoint_id TEXT PRIMARY KEY, mission_id TEXT NOT NULL, at REAL, state_digest TEXT, body TEXT);\nCREATE INDEX IF NOT EXISTS checkpoints_mission ON checkpoints(mission_id, at);\nCREATE TABLE IF NOT EXISTS escalations(\n  esc_id TEXT PRIMARY KEY, mission_id TEXT NOT NULL, at REAL, reason TEXT, action TEXT, detail TEXT);\nCREATE TABLE IF NOT EXISTS memory_events(\n  mem_id TEXT PRIMARY KEY, mission_id TEXT, tenant TEXT, space TEXT, action TEXT, memory_id TEXT,\n  digest TEXT, status TEXT, at REAL, detail TEXT);\nCREATE INDEX IF NOT EXISTS memory_events_mission ON memory_events(mission_id, at);\nCREATE TABLE IF NOT EXISTS endurance(\n  run_id TEXT PRIMARY KEY, workers INTEGER, started_at REAL, stopped_at REAL, elapsed_s REAL,\n  aggregate_worker_seconds REAL, tasks_ok INTEGER, tasks_failed INTEGER, detail TEXT);\nCREATE TABLE IF NOT EXISTS events(\n  seq INTEGER PRIMARY KEY AUTOINCREMENT, at REAL, tenant TEXT, mission_id TEXT, type TEXT, actor TEXT,\n  body TEXT, prev TEXT, digest TEXT);\nCREATE INDEX IF NOT EXISTS events_mission ON events(mission_id, seq);\n\"\"\"\n\n\nclass Store:\n    def __init__(self, path: str, *, durable: str = \"normal\"):\n        self.path = path\n        self.db = sqlite3.connect(path, isolation_level=None, check_same_thread=False, timeout=30)\n        self.db.row_factory = sqlite3.Row\n        self.db.execute(\"PRAGMA journal_mode=WAL\")\n        self.db.execute(\"PRAGMA synchronous=\" + (\"FULL\" if durable == \"full\" else \"NORMAL\"))\n        self.db.execute(\"PRAGMA busy_timeout=30000\")\n        self.db.executescript(SCHEMA)\n        self._in_tx = False\n        r = self.db.execute(\"SELECT digest FROM events ORDER BY seq DESC LIMIT 1\").fetchone()\n        self._head = r[\"digest\"] if r else \"0\" * 64\n\n    # -- transactions: the coordinator batches one event-loop tick into one commit\n    def begin(self) -> None:\n        if not self._in_tx:\n            last = None\n            for _ in range(200):\n                try:\n                    self.db.execute(\"BEGIN IMMEDIATE\")\n                    self._in_tx = True\n                    return\n                except sqlite3.OperationalError as e:\n                    last = e\n                    if \"locked\" not in str(e).lower():\n                        raise\n                    time.sleep(0.05)\n            raise last if last else RuntimeError(\"database busy\")\n\n    def commit(self) -> None:\n        if self._in_tx:\n            self.db.execute(\"COMMIT\")\n            self._in_tx = False\n\n    def rollback(self) -> None:\n        if self._in_tx:\n            try:\n                self.db.execute(\"ROLLBACK\")\n            except Exception:  # noqa: BLE001\n                pass\n            self._in_tx = False\n\n    def close(self) -> None:\n        self.commit()\n        self.db.close()\n\n    def x(self, sql: str, args: Iterable[Any] = ()) -> sqlite3.Cursor:\n        self.begin()\n        return self.db.execute(sql, tuple(args))\n\n    def q(self, sql: str, args: Iterable[Any] = ()) -> List[sqlite3.Row]:\n        return self.db.execute(sql, tuple(args)).fetchall()\n\n    def one(self, sql: str, args: Iterable[Any] = ()) -> Optional[sqlite3.Row]:\n        return self.db.execute(sql, tuple(args)).fetchone()\n\n    def meta(self, k: str, default: Optional[str] = None) -> Optional[str]:\n        r = self.one(\"SELECT v FROM meta WHERE k=?\", (k,))\n        return r[\"v\"] if r else default\n\n    def set_meta(self, k: str, v: str) -> None:\n        self.x(\"INSERT INTO meta(k,v) VALUES(?,?) ON CONFLICT(k) DO UPDATE SET v=excluded.v\", (k, v))\n\n    # -- hash-chained event log (the accountability record)\n    def event(self, type: str, *, mission_id: str = \"\", tenant: str = \"\", actor: str = \"coordinator\",\n              body: Optional[Mapping[str, Any]] = None, at: Optional[float] = None) -> str:\n        at = time.time() if at is None else at\n        # another coordinator may have appended since this process opened the store; follow the durable head\n        r = self.db.execute(\"SELECT digest FROM events ORDER BY seq DESC LIMIT 1\").fetchone()\n        if r and r[\"digest\"] != self._head:\n            self._head = r[\"digest\"]\n        b = json.dumps(dict(body or {}), sort_keys=True, default=str)\n        digest = sha({\"at\": at, \"tenant\": tenant, \"mission_id\": mission_id, \"type\": type, \"actor\": actor,\n                      \"body\": json.loads(b), \"prev\": self._head})\n        self.x(\"INSERT INTO events(at,tenant,mission_id,type,actor,body,prev,digest) VALUES(?,?,?,?,?,?,?,?)\",\n               (at, tenant, mission_id, type, actor, b, self._head, digest))\n        self._head = digest\n        return digest\n\n    def events(self, mission_id: Optional[str] = None, *, after: int = 0, limit: int = 100000) -> List[Dict[str, Any]]:\n        if mission_id is None:\n            rows = self.q(\"SELECT * FROM events WHERE seq>? ORDER BY seq LIMIT ?\", (after, limit))\n        else:\n            rows = self.q(\"SELECT * FROM events WHERE mission_id=? AND seq>? ORDER BY seq LIMIT ?\",\n                          (mission_id, after, limit))\n        return [{**dict(r), \"body\": json.loads(r[\"body\"])} for r in rows]\n\n    def verify_chain(self) -> Dict[str, Any]:\n        prev = \"0\" * 64\n        n = 0\n        for r in self.db.execute(\"SELECT * FROM events ORDER BY seq\"):\n            want = sha({\"at\": r[\"at\"], \"tenant\": r[\"tenant\"], \"mission_id\": r[\"mission_id\"], \"type\": r[\"type\"],\n                        \"actor\": r[\"actor\"], \"body\": json.loads(r[\"body\"]), \"prev\": prev})\n            if r[\"prev\"] != prev or r[\"digest\"] != want:\n                return {\"ok\": False, \"broken_at_seq\": r[\"seq\"], \"count\": n}\n            prev = r[\"digest\"]\n            n += 1\n        return {\"ok\": True, \"count\": n, \"head\": prev}\n\n    @property\n    def head(self) -> str:\n        return self._head\n\n\ndef row(r: Optional[sqlite3.Row], *json_cols: str) -> Optional[Dict[str, Any]]:\n    if r is None:\n        return None\n    d = dict(r)\n    for c in json_cols:\n        if d.get(c) is not None:\n            d[c] = json.loads(d[c])\n    return d\n"
   },
   "parent_task": null,
   "result": {
    "artifact_len": 25,
    "artifact_sha256": "73d7a257d5d4ec2a3a4609d026996ec180911dc33bbf549f3179b4511a1a266b",
    "attempt": 1,
    "error": null,
    "finished_at": 1794629295.9748924,
    "mission_id": "msn-613387bd41",
    "ok": true,
    "started_at": 1794629295.966983,
    "task_id": "p4c101_security",
    "ticket_id": "tkt-dcd1091c828b02af",
    "worker_id": "w-dfdf29c689"
   },
   "role": "worker",
   "side_effect": "local_artifact",
   "state": "VERIFIED",
   "task_id": "p4c101_security",
   "ticket_id": "tkt-dcd1091c828b02af",
   "timeout_s": 120.0,
   "updated_at": 1794629295.9771564,
   "verification": {
    "method": "recompute",
    "verification_id": "ver-6c9ee659a7",
    "verified": true
   },
   "verify_of": null,
   "worker_id": "w-dfdf29c689"
  },
  {
   "artifact_sha": "73d7a257d5d4ec2a3a4609d026996ec180911dc33bbf549f3179b4511a1a266b",
   "attempt": 1,
   "capability": "WORK",
   "created_at": 1794629295.9788525,
   "depends": [],
   "dispatched_at": 1794629296.016041,
   "error": null,
   "exclude_field": "verification",
   "exclude_worker": "w-dfdf29c689",
   "field": "analysis",
   "finished_at": 1794629296.0271883,
   "idem_key": "verify:p4c101_security",
   "kind": "VERIFY",
   "lease_until": 1794629416.016041,
   "max_attempts": 3,
   "mission_id": "msn-613387bd41",
   "node_id": "t-8c74525ec0",
   "operation": "scan_text",
   "output_digest": "73d7a257d5d4ec2a3a4609d026996ec180911dc33bbf549f3179b4511a1a266b",
   "params": {
    "patterns": [
     "except\\s+Exception:\\s*pass",
     "shell\\s*=\\s*True",
     "eval\\(",
     "pickle\\.loads",
     "verify\\s*=\\s*False"
    ],
    "text": "\"\"\"Durable coordinator state (SQLite, WAL). Everything the coordinator needs to resume is here.\n\nDurability note: `synchronous=NORMAL` with WAL survives process crashes (kill -9) with no committed-transaction\nloss. A power loss or kernel crash can lose the last few transactions; pass durable=\"full\" to close that gap at a\nthroughput cost. This file is the source of truth; ClawX is a projection of it, never the other way round.\n\"\"\"\nfrom __future__ import annotations\n\nimport json\nimport sqlite3\nimport time\nfrom typing import Any, Dict, Iterable, List, Mapping, Optional\n\nfrom .canon import sha\n\nSCHEMA = \"\"\"\nCREATE TABLE IF NOT EXISTS meta(k TEXT PRIMARY KEY, v TEXT);\nCREATE TABLE IF NOT EXISTS hosts(\n  host_id TEXT PRIMARY KEY, pub TEXT NOT NULL, state TEXT NOT NULL, slots INTEGER NOT NULL DEFAULT 0,\n  enrolled_at REAL, last_seen REAL, info TEXT NOT NULL DEFAULT '{}');\nCREATE TABLE IF NOT EXISTS workers(\n  worker_id TEXT PRIMARY KEY, host_id TEXT NOT NULL, mission_id TEXT NOT NULL, role TEXT NOT NULL,\n  field TEXT NOT NULL DEFAULT 'general', purpose TEXT NOT NULL DEFAULT '', parent_id TEXT, depth INTEGER NOT NULL DEFAULT 1,\n  pub TEXT, state TEXT NOT NULL, pid INTEGER, grant_id TEXT, cred TEXT,\n  created_at REAL, enrolled_at REAL, ended_at REAL, last_beat REAL, end_reason TEXT,\n  tasks_done INTEGER NOT NULL DEFAULT 0, tasks_failed INTEGER NOT NULL DEFAULT 0,\n  alive_s REAL NOT NULL DEFAULT 0, rss_kb INTEGER NOT NULL DEFAULT 0, current_task TEXT);\nCREATE INDEX IF NOT EXISTS workers_state ON workers(state, mission_id, role);\nCREATE TABLE IF NOT EXISTS grants(\n  grant_id TEXT PRIMARY KEY, mission_id TEXT NOT NULL, child_id TEXT NOT NULL, parent_id TEXT NOT NULL,\n  body TEXT NOT NULL, ops_used INTEGER NOT NULL DEFAULT 0, issued_at REAL, expires_at REAL,\n  superseded_by TEXT);\nCREATE INDEX IF NOT EXISTS grants_child ON grants(child_id);\nCREATE TABLE IF NOT EXISTS revocations(subject TEXT PRIMARY KEY, kind TEXT, at REAL, reason TEXT);\nCREATE TABLE IF NOT EXISTS missions(\n  mission_id TEXT PRIMARY KEY, tenant TEXT NOT NULL, principal TEXT NOT NULL, spec TEXT NOT NULL,\n  spec_digest TEXT NOT NULL, state TEXT NOT NULL, created_at REAL, updated_at REAL, deadline REAL,\n  usage TEXT NOT NULL DEFAULT '{}', last_progress_at REAL, escalations INTEGER NOT NULL DEFAULT 0,\n  determination TEXT);\nCREATE TABLE IF NOT EXISTS tasks(\n  task_id TEXT PRIMARY KEY, mission_id TEXT NOT NULL, node_id TEXT NOT NULL, kind TEXT NOT NULL,\n  state TEXT NOT NULL, operation TEXT NOT NULL, capability TEXT NOT NULL, side_effect TEXT NOT NULL,\n  role TEXT NOT NULL, field TEXT NOT NULL DEFAULT 'general', params TEXT NOT NULL, depends TEXT NOT NULL DEFAULT '[]', idem_key TEXT UNIQUE,\n  attempt INTEGER NOT NULL DEFAULT 0, max_attempts INTEGER NOT NULL DEFAULT 3, timeout_s REAL NOT NULL DEFAULT 60,\n  worker_id TEXT, lease_until REAL, ticket_id TEXT, result TEXT, output_digest TEXT, artifact_sha TEXT,\n  verification TEXT NOT NULL DEFAULT '{}', verify_of TEXT, parent_task TEXT, exclude_worker TEXT,\n  exclude_field TEXT, created_at REAL, updated_at REAL, dispatched_at REAL, finished_at REAL, error TEXT);\nCREATE INDEX IF NOT EXISTS tasks_state ON tasks(state, mission_id, role);\nCREATE INDEX IF NOT EXISTS tasks_mission ON tasks(mission_id, node_id);\nCREATE TABLE IF NOT EXISTS tickets(\n  ticket_id TEXT PRIMARY KEY, task_id TEXT NOT NULL, attempt INTEGER NOT NULL, worker_id TEXT NOT NULL,\n  body TEXT NOT NULL, sig TEXT NOT NULL, kid TEXT NOT NULL, issued_at REAL, expires_at REAL, state TEXT NOT NULL);\nCREATE TABLE IF NOT EXISTS decisions(\n  decision_id TEXT PRIMARY KEY, at REAL, mission_id TEXT, worker_id TEXT, task_id TEXT, kind TEXT,\n  outcome TEXT, reasons TEXT, op_digest TEXT);\nCREATE INDEX IF NOT EXISTS decisions_mission ON decisions(mission_id, outcome);\nCREATE TABLE IF NOT EXISTS replay(nonce TEXT PRIMARY KEY, at REAL);\nCREATE TABLE IF NOT EXISTS results(\n  task_id TEXT NOT NULL, attempt INTEGER NOT NULL, worker_id TEXT NOT NULL, body TEXT NOT NULL, sig TEXT NOT NULL,\n  accepted INTEGER NOT NULL, reason TEXT, at REAL, PRIMARY KEY(task_id, attempt, worker_id));\nCREATE TABLE IF NOT EXISTS verifications(\n  ver_id TEXT PRIMARY KEY, task_id TEXT NOT NULL, mission_id TEXT NOT NULL, method TEXT, verifier_id TEXT,\n  producer_id TEXT, passed INTEGER, detail TEXT, at REAL, sig TEXT, kid TEXT);\nCREATE TABLE IF NOT EXISTS model_calls(\n  call_id TEXT PRIMARY KEY, at REAL, mission_id TEXT, task_id TEXT, worker_id TEXT, provider TEXT, model TEXT,\n  execution_class TEXT, tokens_in INTEGER, tokens_out INTEGER, cost_usd REAL, latency_s REAL,\n  request_digest TEXT, response_digest TEXT, status TEXT, error TEXT, detail TEXT, ticket_id TEXT,\n  attempt INTEGER NOT NULL DEFAULT 0);\nCREATE UNIQUE INDEX IF NOT EXISTS model_calls_ticket ON model_calls(ticket_id) WHERE ticket_id IS NOT NULL;\nCREATE TABLE IF NOT EXISTS artifacts(\n  sha256 TEXT PRIMARY KEY, bytes INTEGER NOT NULL, media_type TEXT, path TEXT NOT NULL, created_at REAL);\nCREATE TABLE IF NOT EXISTS checkpoints(\n  checkpoint_id TEXT PRIMARY KEY, mission_id TEXT NOT NULL, at REAL, state_digest TEXT, body TEXT);\nCREATE INDEX IF NOT EXISTS checkpoints_mission ON checkpoints(mission_id, at);\nCREATE TABLE IF NOT EXISTS escalations(\n  esc_id TEXT PRIMARY KEY, mission_id TEXT NOT NULL, at REAL, reason TEXT, action TEXT, detail TEXT);\nCREATE TABLE IF NOT EXISTS memory_events(\n  mem_id TEXT PRIMARY KEY, mission_id TEXT, tenant TEXT, space TEXT, action TEXT, memory_id TEXT,\n  digest TEXT, status TEXT, at REAL, detail TEXT);\nCREATE INDEX IF NOT EXISTS memory_events_mission ON memory_events(mission_id, at);\nCREATE TABLE IF NOT EXISTS endurance(\n  run_id TEXT PRIMARY KEY, workers INTEGER, started_at REAL, stopped_at REAL, elapsed_s REAL,\n  aggregate_worker_seconds REAL, tasks_ok INTEGER, tasks_failed INTEGER, detail TEXT);\nCREATE TABLE IF NOT EXISTS events(\n  seq INTEGER PRIMARY KEY AUTOINCREMENT, at REAL, tenant TEXT, mission_id TEXT, type TEXT, actor TEXT,\n  body TEXT, prev TEXT, digest TEXT);\nCREATE INDEX IF NOT EXISTS events_mission ON events(mission_id, seq);\n\"\"\"\n\n\nclass Store:\n    def __init__(self, path: str, *, durable: str = \"normal\"):\n        self.path = path\n        self.db = sqlite3.connect(path, isolation_level=None, check_same_thread=False, timeout=30)\n        self.db.row_factory = sqlite3.Row\n        self.db.execute(\"PRAGMA journal_mode=WAL\")\n        self.db.execute(\"PRAGMA synchronous=\" + (\"FULL\" if durable == \"full\" else \"NORMAL\"))\n        self.db.execute(\"PRAGMA busy_timeout=30000\")\n        self.db.executescript(SCHEMA)\n        self._in_tx = False\n        r = self.db.execute(\"SELECT digest FROM events ORDER BY seq DESC LIMIT 1\").fetchone()\n        self._head = r[\"digest\"] if r else \"0\" * 64\n\n    # -- transactions: the coordinator batches one event-loop tick into one commit\n    def begin(self) -> None:\n        if not self._in_tx:\n            last = None\n            for _ in range(200):\n                try:\n                    self.db.execute(\"BEGIN IMMEDIATE\")\n                    self._in_tx = True\n                    return\n                except sqlite3.OperationalError as e:\n                    last = e\n                    if \"locked\" not in str(e).lower():\n                        raise\n                    time.sleep(0.05)\n            raise last if last else RuntimeError(\"database busy\")\n\n    def commit(self) -> None:\n        if self._in_tx:\n            self.db.execute(\"COMMIT\")\n            self._in_tx = False\n\n    def rollback(self) -> None:\n        if self._in_tx:\n            try:\n                self.db.execute(\"ROLLBACK\")\n            except Exception:  # noqa: BLE001\n                pass\n            self._in_tx = False\n\n    def close(self) -> None:\n        self.commit()\n        self.db.close()\n\n    def x(self, sql: str, args: Iterable[Any] = ()) -> sqlite3.Cursor:\n        self.begin()\n        return self.db.execute(sql, tuple(args))\n\n    def q(self, sql: str, args: Iterable[Any] = ()) -> List[sqlite3.Row]:\n        return self.db.execute(sql, tuple(args)).fetchall()\n\n    def one(self, sql: str, args: Iterable[Any] = ()) -> Optional[sqlite3.Row]:\n        return self.db.execute(sql, tuple(args)).fetchone()\n\n    def meta(self, k: str, default: Optional[str] = None) -> Optional[str]:\n        r = self.one(\"SELECT v FROM meta WHERE k=?\", (k,))\n        return r[\"v\"] if r else default\n\n    def set_meta(self, k: str, v: str) -> None:\n        self.x(\"INSERT INTO meta(k,v) VALUES(?,?) ON CONFLICT(k) DO UPDATE SET v=excluded.v\", (k, v))\n\n    # -- hash-chained event log (the accountability record)\n    def event(self, type: str, *, mission_id: str = \"\", tenant: str = \"\", actor: str = \"coordinator\",\n              body: Optional[Mapping[str, Any]] = None, at: Optional[float] = None) -> str:\n        at = time.time() if at is None else at\n        # another coordinator may have appended since this process opened the store; follow the durable head\n        r = self.db.execute(\"SELECT digest FROM events ORDER BY seq DESC LIMIT 1\").fetchone()\n        if r and r[\"digest\"] != self._head:\n            self._head = r[\"digest\"]\n        b = json.dumps(dict(body or {}), sort_keys=True, default=str)\n        digest = sha({\"at\": at, \"tenant\": tenant, \"mission_id\": mission_id, \"type\": type, \"actor\": actor,\n                      \"body\": json.loads(b), \"prev\": self._head})\n        self.x(\"INSERT INTO events(at,tenant,mission_id,type,actor,body,prev,digest) VALUES(?,?,?,?,?,?,?,?)\",\n               (at, tenant, mission_id, type, actor, b, self._head, digest))\n        self._head = digest\n        return digest\n\n    def events(self, mission_id: Optional[str] = None, *, after: int = 0, limit: int = 100000) -> List[Dict[str, Any]]:\n        if mission_id is None:\n            rows = self.q(\"SELECT * FROM events WHERE seq>? ORDER BY seq LIMIT ?\", (after, limit))\n        else:\n            rows = self.q(\"SELECT * FROM events WHERE mission_id=? AND seq>? ORDER BY seq LIMIT ?\",\n                          (mission_id, after, limit))\n        return [{**dict(r), \"body\": json.loads(r[\"body\"])} for r in rows]\n\n    def verify_chain(self) -> Dict[str, Any]:\n        prev = \"0\" * 64\n        n = 0\n        for r in self.db.execute(\"SELECT * FROM events ORDER BY seq\"):\n            want = sha({\"at\": r[\"at\"], \"tenant\": r[\"tenant\"], \"mission_id\": r[\"mission_id\"], \"type\": r[\"type\"],\n                        \"actor\": r[\"actor\"], \"body\": json.loads(r[\"body\"]), \"prev\": prev})\n            if r[\"prev\"] != prev or r[\"digest\"] != want:\n                return {\"ok\": False, \"broken_at_seq\": r[\"seq\"], \"count\": n}\n            prev = r[\"digest\"]\n            n += 1\n        return {\"ok\": True, \"count\": n, \"head\": prev}\n\n    @property\n    def head(self) -> str:\n        return self._head\n\n\ndef row(r: Optional[sqlite3.Row], *json_cols: str) -> Optional[Dict[str, Any]]:\n    if r is None:\n        return None\n    d = dict(r)\n    for c in json_cols:\n        if d.get(c) is not None:\n            d[c] = json.loads(d[c])\n    return d\n"
   },
   "parent_task": "p4c101_security",
   "result": {
    "artifact_len": 25,
    "artifact_sha256": "73d7a257d5d4ec2a3a4609d026996ec180911dc33bbf549f3179b4511a1a266b",
    "attempt": 1,
    "error": null,
    "finished_at": 1794629296.0251691,
    "mission_id": "msn-613387bd41",
    "ok": true,
    "started_at": 1794629296.0212936,
    "task_id": "t-8c74525ec0",
    "ticket_id": "tkt-bf75d942b6c9d7da",
    "worker_id": "w-3bf4ec9944"
   },
   "role": "worker",
   "side_effect": "local_artifact",
   "state": "VERIFIED",
   "task_id": "t-8c74525ec0",
   "ticket_id": "tkt-bf75d942b6c9d7da",
   "timeout_s": 120.0,
   "updated_at": 1794629296.0271997,
   "verification": {
    "method": "none"
   },
   "verify_of": "p4c101_security",
   "worker_id": "w-3bf4ec9944"
  },
  {
   "artifact_sha": "6b0e4dec07ed98b6f6c67fa9f582765504e8f3e4a03caf10e7da1476c272e22e",
   "attempt": 1,
   "capability": "WORK",
   "created_at": 1794629295.9827402,
   "depends": [],
   "dispatched_at": 1794629296.0191772,
   "error": null,
   "exclude_field": "analysis",
   "exclude_worker": "w-3bf4ec9944",
   "field": "analysis",
   "finished_at": 1794629296.0359886,
   "idem_key": "verify:p4c101_literature",
   "kind": "VERIFY",
   "lease_until": 1794629416.0191772,
   "max_attempts": 3,
   "mission_id": "msn-613387bd41",
   "node_id": "t-7bafba7782",
   "operation": "extract_entities",
   "output_digest": "6b0e4dec07ed98b6f6c67fa9f582765504e8f3e4a03caf10e7da1476c272e22e",
   "params": {
    "text": "LocalAgent: Collaborative Agentic Verification for Fine-Grained Instance-Level Consistency\nMultimodal large language models (MLLMs) have made rapid progress in general visual understanding, yet they still struggle with fine-grained instance-level consistency verification, where the goal is to determine whether two images depict the exact same physical object under varying viewpoints, illumination, and backgrounds. This task requires both global semantic perception and precise examination of subtle local evidence, since semantically similar objects may differ only in small suspicious regions. To address this challenge, we propose LocalAgent, a collaborative agentic framework that integrates the complementary strengths of a generalist MLLM and lightweight specialist verifiers. The MLLM first reasons globally to identify suspicious local regions, which are then delegated to a Local Evidence Verifier (LEV) toolkit for fine-grained appearance and geometric matching. LEV comprises Local Appearance Consistency (LAC), which estimates appearance similarity under illumination and color changes, and Local Geometric Correspondence (LGC), which estimates spatial correspondence under viewpoint changes. LEV returns structured scalar evidence that the MLLM integrates for the final decision. We further introduce an auxiliary-capped reinforcement fine-tuning (RFT) strategy, in which answer correctness dominates auxiliary tool-use and format signals, enabling the policy to learn when verification is necessary. Experiments show that LocalAgent improves mean accuracy by 4.9% over the strongest CoT-RFT baseline while invoking a verifier on only 12.13% of samples and preserving the general multimodal capabilities of the underlying MLLM. The open-source repository is available at https://github.com/Firefly-zoo/LocalAgent-main."
   },
   "parent_task": "p4c101_literature",
   "result": {
    "artifact_len": 423,
    "artifact_sha256": "6b0e4dec07ed98b6f6c67fa9f582765504e8f3e4a03caf10e7da1476c272e22e",
    "attempt": 1,
    "error": null,
    "finished_at": 1794629296.0278008,
    "mission_id": "msn-613387bd41",
    "ok": true,
    "started_at": 1794629296.0251172,
    "task_id": "t-7bafba7782",
    "ticket_id": "tkt-6675b5f291a4b433",
    "worker_id": "w-893ec8bed7"
   },
   "role": "worker",
   "side_effect": "local_artifact",
   "state": "VERIFIED",
   "task_id": "t-7bafba7782",
   "ticket_id": "tkt-6675b5f291a4b433",
   "timeout_s": 120.0,
   "updated_at": 1794629296.0360007,
   "verification": {
    "method": "none"
   },
   "verify_of": "p4c101_literature",
   "worker_id": "w-893ec8bed7"
  },
  {
   "artifact_sha": "151d63776c9d27e441cea6fde6109789108c1227a75b67f2d33b99bb0dfe339b",
   "attempt": 1,
   "capability": "WORK",
   "created_at": 1794629295.9952905,
   "depends": [],
   "dispatched_at": 1794629296.062165,
   "error": null,
   "exclude_field": "analysis",
   "exclude_worker": "w-f584f948cf",
   "field": "analysis",
   "finished_at": 1794629296.0708394,
   "idem_key": "verify:p4c101_data",
   "kind": "VERIFY",
   "lease_until": 1794629416.062165,
   "max_attempts": 3,
   "mission_id": "msn-613387bd41",
   "node_id": "t-06f9df75e5",
   "operation": "summarize_csv",
   "output_digest": "151d63776c9d27e441cea6fde6109789108c1227a75b67f2d33b99bb0dfe339b",
   "params": {
    "text": "sepal_length,sepal_width,petal_length,petal_width,species\r\n6.4,2.8,5.6,2.2,virginica\r\n4.8,3.0,1.4,0.1,setosa\r\n6.7,3.3,5.7,2.1,virginica\r\n6.1,3.0,4.6,1.4,versicolor\r\n5.6,2.8,4.9,2.0,virginica\r\n5.9,3.2,4.8,1.8,versicolor\r\n6.3,3.3,6.0,2.5,virginica\r\n5.7,2.9,4.2,1.3,versicolor\r\n5.2,2.7,3.9,1.4,versicolor\r\n5.1,3.4,1.5,0.2,setosa\r\n6.4,3.2,5.3,2.3,virginica\r\n6.3,3.4,5.6,2.4,virginica\r\n6.7,3.1,5.6,2.4,virginica\r\n5.0,2.3,3.3,1.0,versicolor\r\n6.9,3.1,5.1,2.3,virginica\r\n5.0,3.4,1.5,0.2,setosa\r\n5.4,3.7,1.5,0.2,setosa\r\n5.8,2.6,4.0,1.2,versicolor\r\n5.6,2.5,3.9,1.1,versicolor\r\n4.6,3.2,1.4,0.2,setosa\r\n5.8,2.6,4.0,1.2,versicolor\r\n5.7,2.8,4.1,1.3,versicolor\r\n5.1,3.8,1.9,0.4,setosa\r\n5.4,3.9,1.7,0.4,setosa\r\n4.6,3.1,1.5,0.2,setosa\r\n5.1,2.5,3.0,1.1,versicolor\r\n7.9,3.8,6.4,2.0,virginica\r\n4.4,2.9,1.4,0.2,setosa\r\n5.2,3.5,1.5,0.2,setosa\r\n4.9,2.5,4.5,1.7,virginica\r\n5.1,3.4,1.5,0.2,setosa\r\n4.7,3.2,1.6,0.2,setosa\r\n4.4,3.2,1.3,0.2,setosa\r\n4.9,3.6,1.4,0.1,setosa\r\n5.7,2.6,3.5,1.0,versicolor\r\n6.5,3.0,5.5,1.8,virginica\r\n4.8,3.1,1.6,0.2,setosa\r\n5.1,3.8,1.6,0.2,setosa\r\n7.7,3.8,6.7,2.2,virginica\r\n5.1,3.7,1.5,0.4,setosa\r\n"
   },
   "parent_task": "p4c101_data",
   "result": {
    "artifact_len": 342,
    "artifact_sha256": "151d63776c9d27e441cea6fde6109789108c1227a75b67f2d33b99bb0dfe339b",
    "attempt": 1,
    "error": null,
    "finished_at": 1794629296.0686562,
    "mission_id": "msn-613387bd41",
    "ok": true,
    "started_at": 1794629296.0669074,
    "task_id": "t-06f9df75e5",
    "ticket_id": "tkt-7a5c96e88156b1c1",
    "worker_id": "w-dfdf29c689"
   },
   "role": "worker",
   "side_effect": "local_artifact",
   "state": "VERIFIED",
   "task_id": "t-06f9df75e5",
   "ticket_id": "tkt-7a5c96e88156b1c1",
   "timeout_s": 120.0,
   "updated_at": 1794629296.0708528,
   "verification": {
    "method": "none"
   },
   "verify_of": "p4c101_data",
   "worker_id": "w-dfdf29c689"
  },
  {
   "artifact_sha": "f4dd02fdb49055d2cdacd7fbf3748bdc0380477ba9d6d35d78284edec84d709e",
   "attempt": 1,
   "capability": "WORK",
   "created_at": 1794629295.998272,
   "depends": [],
   "dispatched_at": 1794629296.064985,
   "error": null,
   "exclude_field": "verification",
   "exclude_worker": "w-893ec8bed7",
   "field": "analysis",
   "finished_at": 1794629296.0926967,
   "idem_key": "verify:p4c101_infra",
   "kind": "VERIFY",
   "lease_until": 1794629416.064985,
   "max_attempts": 3,
   "mission_id": "msn-613387bd41",
   "node_id": "t-7909d9fd64",
   "operation": "scan_text",
   "output_digest": "f4dd02fdb49055d2cdacd7fbf3748bdc0380477ba9d6d35d78284edec84d709e",
   "params": {
    "patterns": [
     "cpu_percent",
     "memory_percent",
     "disk_percent"
    ],
    "text": "{\"cpu_percent\": 92.7, \"cycle\": 101, \"disk_percent\": 50.5, \"load_1m\": 17.4833984375, \"memory_percent\": 84.4}"
   },
   "parent_task": "p4c101_infra",
   "result": {
    "artifact_len": 203,
    "artifact_sha256": "f4dd02fdb49055d2cdacd7fbf3748bdc0380477ba9d6d35d78284edec84d709e",
    "attempt": 1,
    "error": null,
    "finished_at": 1794629296.0688965,
    "mission_id": "msn-613387bd41",
    "ok": true,
    "started_at": 1794629296.0669117,
    "task_id": "t-7909d9fd64",
    "ticket_id": "tkt-23ed97597f632a3a",
    "worker_id": "w-f584f948cf"
   },
   "role": "worker",
   "side_effect": "local_artifact",
   "state": "VERIFIED",
   "task_id": "t-7909d9fd64",
   "ticket_id": "tkt-23ed97597f632a3a",
   "timeout_s": 120.0,
   "updated_at": 1794629296.0927095,
   "verification": {
    "method": "none"
   },
   "verify_of": "p4c101_infra",
   "worker_id": "w-f584f948cf"
  }
 ]
}