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_serverdoes. - 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-analysisis 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 tokavai-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.