Charter: argus

Generated from docs/ai/charters/argus.md. Edit that file, then regenerate: python docs/portfolio/_build/generate_reference_pages.py.


Status: written 2026-08-24, from the code and the commit history. Nothing stated this before — argus and orion were the two engines with no charter.

What it is

Argus is DataADK, renamed. Not a rewrite, not a reimplementation: on 2026-04-08, commit d098ed93 — “refactor: rename dataadk system to argus” — moved every file from systems/dataadk/ to systems/argus/ unchanged. The whole diff is four lines in agents_config/agents.yaml. git log --follow on argus/agent.py runs straight back through the rename to the initial ai/ import on 2026-03-31.

What that rename bought was room to diverge. Before it, “DataADK” named one thing that had to be two: the implementation KavApps ships and maintains, and KAP’s copy of it, which people kept improving. Those two goals conflict — every improvement widened a gap that parity work then had to close. Renaming the in-repo copy split the roles: dataadk stays the parity reference, argus becomes the fork that is allowed to move.

So your instinct that Argus is “a slightly improved DataADK” is right about the lineage and understates the point of it. The improvement is not the reason it exists; being allowed to improve without breaking parity is.

What it is for

KAP’s default engine until 2026-09-26 (Kawa is now the default when a request names no engine; SYSTEM_TYPE overrides). A Google ADK 1.x sequential NL-to-SQL pipeline over the asset register, images, gas readings, and findings, answering as the caller under RLS.

It carries the evaluation tooling the other engines do not: run_unit_evals.py, run_eval_with_report.py, analyze_eval_results.py, diagnose_failures.py, timing_metrics.py, apply_adk_eval_patch.py. That inventory is the clearest statement of its role — it is the engine work is measured on.

Where it runs

The adk pixi feature: google-adk >=1.26,<2, pinned version-identical with KavApps backend/kavai_server so the kavai-dataadk package can be exercised on the runtime KavApps actually uses.

Standing as measured

Engine certification 2026-08-09: 8 of 9 rows, certifiable. The only skip is provenance, which every engine skips. Its history is a climb — 5/8 on 08-04, 3/8 on 08-06, 6/8 on 08-07, 7/8 on 08-08, 8/9 on 08-09.

Cross-engine benchmark 2026-07-19, deployed web path, 132 turns: 88% pass, 12.5 s median latency, 2 median tool calls. Second-fastest, and it missed some multi-turn context-carryover image follow-ups.

Must never

  • Answer over data the caller cannot see — enforced by the scope row (FR-AI-08, mandatory) and CONTRACT-API-001 RLS.
  • Emit a signed URL or storage path — CONTRACT-CDC-001 §7.4.1 and the image-browsing row.
  • Emit an AG-UI event the contract does not define — CONTRACT-CDC-001, lint-enforced.
  • Leave test residue in a real dataset — test-data-hygiene row, mandatory.

Open

  • Divergence from dataadk is unmeasured. The rename authorised drift and nothing tracks how far it has gone. dataadk sits at 4/9 while argus is at 8/9, but whether that gap is Argus improving or the packaged DataADK regressing is not established.