Prove OwnUX support, level by level. Three levels. Only L2 and above will earn the planned OwnUX Ready badge.

ownux test v0 checks L1 and L2. L3 and the OwnUX Ready badge are planned for Beta.

1

L1 Declared

Manifest valid

2

L2 Verified

Every change proven

3

L3 Adaptive

Beta: not in v0

Three levels, each a stronger promise. No product may claim to be certified or compatible outside these definitions.

L1Checked by ownux test v0

Declared

Your manifest is valid.

  • Every action has risk, preconditions, a verify step and a fallback
  • Entities, actions and risk levels described
  • Locked surfaces are listed
L2Checked by ownux test v0

Verified

Every change is proven against your product.

  • Reads return valid tasks from this workspace, and a missing task is not_found
  • Each change executes, reads back, writes once and falls back to a real link
  • A viewer is refused, and nothing changes
  • Eligible for the OwnUX Ready badge, once it launches
L3Planned for Beta

Adaptive

OwnUX runs in your product, as promised.

  • The runtime is integrated and Interface DNA is honoured
  • Automated accessibility checks pass on rendered surfaces
  • Locked surfaces are never re-rendered

Inside L2 Verified

Checks that catch integrations that only look right. Each one prints exactly what to fix.

L2 checks reads first, then every declared change, in a test environment as an editor and a viewer. Hardest to fake: a fresh connection must see the new value.

  • A write that does nothing is never reported as verified.
  • An integration that echoes what it sent fails.
  • Leftover TODO(ownux) steps block publishing; LATER(ownux) is a note.

Reads

Each change

Finally

What it proves

list pages to the end, at most 50 pages, with valid tasks of this app and workspace, and no task twice.

✓ task.list_assigned: lists valid tasks from this workspace, and paging ends

// when it fails

✗ task.list_assigned: the list is not valid: task 3 has no workspace_id

Fix: list({ cursor }) must return { items, next_cursor }: valid Tasks of this app and workspace (see "The Task contract" in AGENTS.md), no task twice, and next_cursor null on the last page.

The OwnUX Ready badge

A badge that says what it means. Planned: earned at L2, and always shown with its level.

The OwnUX Ready badge is planned. It will tell users your product supports OwnUX and has proven it: every change verified at the source, every permission respected. The badge will always state its level.

  • L1 Declared: no badge.
  • L2 Verified: OwnUX Ready · L2.
  • L3 Adaptive: OwnUX Ready · L3, once checks arrive in Beta.
acme.example/integrations

Acme Projects

Use Acme your way

No badge

L1 Declared

  • Valid capability manifest
  • Actions, risk levels and fallbacks described
  • Locked surfaces listed

L2 Verified

  • Every change executes, verifies and falls back
  • Permission-denied paths are safe
  • Reads are real, never echoed

L3 Adaptive

  • Runtime integrated, Interface DNA honoured
  • Accessibility checks pass on rendered surfaces
  • Locked surfaces never re-rendered

L1 is a valid start, not something users can rely on. The badge needs L2 or above.

For people, pipelines and AI assistants. ownux test is a command-line tool with a plain-words report and a JSON report.

ownux test --config <file>
Runs L1, then L2 against a test target: your integration, two test accounts and one test task.
ownux test --manifest <file>
Runs L1 only, and exits with an error, because nothing is publishable before L2.
--json
A machine-readable report. Each failed check has message and fix; recommendations carry note: true.
Exit codes
0 publishable, 1 a check failed, 2 the check could not run. Until the developer portal exists, a blocked publish is exit 1.
Terminal
$ npx ownux test --config src/ownux/ownux.config.ts --json
{
"app": { "id": "acme-projects", "version": "1.4.0" },
"level": "L1",
"publishable": false,
"findings": ["task.set_due_date: verify is not real"],
"checks": [
{
"level": "L2",
"capability": "task.set_due_date",
"name": "verify_is_real",
"ok": false,
"message": "task.set_due_date: verify is not real",
"fix": "get(ref) must read your product, never remember what execute sent."
}
],
"tested": { "task": "HQ-7", "resets": 10 }
}

Shortened: a real report lists every check, passed or failed.

Questions, answered.

In developmentownux test v0 checks L1 and L2, and our Reference App passes both. L3 Adaptive, the OwnUX Ready badge and the developer portal are planned for Beta.

No. L1 shows only that the manifest is valid. When the planned badge launches, only products at L2 Verified or above may show it, and it will always state its level.

Get to L2 Verified with us. Design partners get hands-on help to pass conformance.