Open Standard · v1

Quinn Open Action Spec

An action is a verified intent: it declares what must be true when work is done and inside what guardrails, never the steps. The AI plans and calls every action at runtime under this contract. Author one in a text editor; run it anywhere. Full export from day one — your actions are files in your own repos.

The schema

The canonical contract is published as a draft-2020-12 JSON Schema, generated from the same validator that runs and stores every action, with a CI anti-drift test binding the two so they cannot diverge.

https://quinn.lightbrands.ai/spec/action/v1/action.schema.json

Conformance is “valid against the JSON Schema AND honors the invariants”: no step list, no model names, the AI drives every action. The schema cannot encode those design invariants; the harness enforces them.

What is open, what is sovereign

Open (publishes)

  • The action format (this JSON Schema + the field semantics).
  • The verification-gate contract: outputs[].acceptance, quality_bar, success_criteria.
  • The connection-abstraction: connections[] + the con_ constraint-id convention.
  • Full export and the GitHub-native file convention.

Sovereign (does not publish)

  • The warm cache and the conserved-compute economics.
  • The registry operation: ranking, reputation, take-rate mechanics.
  • The verification-harness implementation and the test corpus.
  • The brand and the reputation graph.

Shared-cache data-boundary contract

The shared cross-tenant cache holds ONLY verified action definitions and the results of running a shareable action on inputs every one of which the action's author classified public. It holds NO tenant execution payload.

Crosses the boundary

  • A content-addressed hash of a shareable action applied to inputs every one of which is classified public.
  • That run's verified result.
  • The producing server id, for billing attribution only.

Never crosses

  • Any free-form chat content (a chat run carries no recipe and is never cached).
  • Any recipe run with even one private or unclassified input (default-deny).
  • The contents of the private tier (private:<brain>:<key>, namespaced per brain, zero cross-brain collision).
  • Any input or output of a private run.

Enforced at: bot/cache.mjs sharedEligible() — shareable AND all-inputs-public, fail-safe to false; bot/cache.mjs allInputsPublic() — default-deny per-input classification; bot/cache.mjs remember() — the shared write is gated; a private run takes the else-arm and never admits; console_recipes.shareable — default-false author opt-in; bot/cache.mjs consider() recipe-only guard — a chat run does no lookup and no store.

Published quality signal

The verification gate’s false-pass rate — the share of outputs the gate passed that a sampled review judged should have failed — is published as a trust artifact: Verified, sample building (n=0 of 30 needed). No number is published below the sample floor.. The metric definition publishes; the test corpus and adversarial cases stay sovereign, so the gate cannot be trained past.

Discover & call over MCP

Any external MCP client can point at /api/mcp, call tools/list to discover the public catalog (anonymous), and tools/call use_action with a qak_ Actions Key to run one. Your inputs are run-scoped and never shared; the run executes under your own identity, scope, spend cap, and connections.