Charter: dataadk

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


Status: Tracking upstream — 3 mandatory rows failing (2026-08-09), expected Runtime: kavai.systems.dataadk_package.system · Backend: ADK runtime (:50052)

Read the row results as a measurement of distance from KavApps, not as a defect list. This engine is not trying to pass; it is trying to be the same as upstream. See Why failing rows are not a bug here.

Job

Be the parity reference: a thin wrapper over the kavai-dataadk package, byte-synced with KavApps kavai_server, so KAP can tell whether a behaviour difference comes from the engine or from the platform around it.

Its value is being the same as upstream, not being the best. That makes it the one engine whose charter forbids local improvement.

Users

Not end users by default — the runtime default is argus,orion,kawa. It is selected deliberately: to compare against KavApps, or to reproduce something a KavApps user reported.

Why failing rows are not a bug here

DataADK moves at the KavApps team’s pace, which is not KAP’s. The feature matrix measures what KAP’s engines commit to, so a row KAP has since added will fail here until it exists upstream and syncs. That is the arrangement working, not breaking.

The consequence, stated so nobody “fixes” it:

  • A failing row is a signal to look upstream, never a licence to patch locally. Patching destroys the only property this engine has.
  • Certification is not this engine’s goal. The other three are held to the matrix; dataadk is held to matching KavApps, and the matrix is how the gap gets measured.
  • Do not gate KAP work on dataadk passing. It will lag by construction.

What would genuinely be a bug: dataadk passing a row kavai_server fails, or drifting from the package without a sync.

In scope

  • Answering the same questions the same way kavai_server does.
  • Serving as the control when a regression appears in the improvement track (argus) and the question is whether the platform or the engine changed.

Out of scope

  • Local fixes. A behaviour gap is fixed upstream in the package and synced, never patched here.
  • New capabilities. surface-analysis is deliberately undeclared: the owner decision of 2026-08-08 was that dataadk is not modified, and its declaration waits on a decision to port it to kavai-image-skills.

Must never

Constraint Enforced by
Answer over data the caller may not see RLS under CONTRACT-API-001 — a database property, not an engine one, and unaffected by the row results below
Serve an unauthenticated caller auth-failure row (mandatory) — pass
Emit a signed URL, storage path, or credential CONTRACT-CDC-001 §7.4.1 + image-browsing row — pass
Emit an event shape the contract does not define CONTRACT-CDC-001, lint-enforced
Leave test residue in a real dataset test-data-hygiene row (mandatory) — pass
Diverge locally from the upstream package nothing — intent only. The sync gates check the package tracks upstream; nothing prevents a local edit being justified as a fix. For this engine that is the constraint that matters most and the one least mechanically held

Certification

Current result (ENGINE_CERTIFICATION.md, certified 2026-08-09, feature-suite revision f18116dc):

Row Mandatory dataadk Reading
dataset-discovery yes fail capability KAP has, upstream does not yet
image-browsing yes pass
surface-analysis if-declared skip undeclared, deliberately
report-answers yes fail capability gap vs upstream
lifecycle yes pass
auth-failure yes pass
scope yes fail dataset-scope narrowing
test-data-hygiene yes pass
provenance no skip non-mandatory

On scope specifically, because the row name invites the wrong reading: it is FR-AI-08, server-side dataset-scope enforcement, and the enforcement lives at the gateway choke point (kavai.gateway.scope) uniformly for every engine — it is about a scoped run returning only in-scope dataset ids, i.e. narrowing. It is not tenant isolation. Cross-tenant protection is RLS, a database property this row does not measure and these failures do not weaken. The row’s own history is a caution: it once asserted a guarantee it never requested and failed identically on all four engines, which “looked like four engine defects.”

Registry

ai/src/kavai/systems/e2e_registry.json marks dataadk e2e_verified: true (2026-07-19), and that flag gates the Settings → AI Engine selector. Consistent with this charter: the engine is meant to be selectable, because comparing against upstream is its job. The flag records “usable as the parity reference”, not “leads the matrix” — anyone reading it as a quality claim should read this page instead.