AAA³ · definition v0.3 · state as of October 2026
AAA³: three planes, one project
An architecture in which the human interface, the declarative representation and the execution engine can evolve without losing coherence over the same project.
Definition
AAA3 stands for AI-Addressable Application — Three-Plane Architecture. The three A's say that an artificial intelligence can operate the application end to end by writing a document; the 3 says how it is built to make that possible: in three planes that operate on the same project.
AAA3- The official, technical name. It is the one used in URLs, searches, code and documentation.
- AAA³
- Optional visual form, for titles and diagrams.
- AI-Addressable Application
- What the three A's mean: an application that can be operated by writing its document, without handling its interface.
- Three-Plane Architecture
- What the 3 means: a human plane, a declarative plane and an execution plane.
The definition is a proposal by Iván Braida in the context of SyncThinkDesign, developed technologically at Braidata. The meaning of the 3 was formalized on 28 October 2026; until then the term was used internally only as AI-Addressable Application. Formalizing it changes no existing JSON contract or identifier. AAA is not used as a name on its own.
The three planes
- 1 · Human plane
- The visual interface through which a person creates, inspects and modifies the project.
- 2 · Declarative plane
- The canonical JSON document: structured, versioned, validatable and readable by people as well as by programs and language models. It is the source of truth for the project's declarative state.
- 3 · Execution plane
- The engine, runtime and APIs that interpret the document and produce actual behavior or results.
- Human planePerson → Interface → Validation
- Declarative planeExternal AI · Script → Validation → Canonical documentsame rules for everyone · source of truth · versioned
- Execution planeCanonical document → Engine · runtime · APIs → ResultsTransient state: not persisted without an explicit ruleResults → human or automated review → Validation
Three planes. One project.
An AAA3 application lets its three planes operate on a coherent representation of the same project. The canonical document is the source of truth for the declarative state; the interface lets people manipulate it and the engine interprets it in order to run it. The planes can evolve technically on their own —a new interface, a faster engine, a new version of the format— as long as they respect the same contract.
None of the planes needs an AI. A person can use the application without any; an external AI, any AI, can operate it by writing or modifying the document, without handling the interface visually and without the application depending on a built-in model. AI is one possible client of the declarative plane, not a component of the architecture.
Paths, not a sequence
The relations interface ↔ document ↔ engine are not a required chain. An AAA3 application supports, where relevant, these paths:
- Person → interface → document.
- External AI → document.
- Script → document.
- Document → engine → execution.
- Engine → results and diagnostics.
- Results → human or automated review → evolution of the document.
Declarative state and execution state
The results of a run are not automatically part of the document. The runtime may keep transient state —a camera position, a game in progress, an intermediate computation— that is not persisted. Whatever does need to go back into the document does so through explicit rules, with the same validation as any other write. Without this separation, running a project would silently modify it, and the document would stop being a readable, comparable description of what was decided.
Invariants
These six invariants say what an application must meet to count as AAA3, how each one is checked and where our ecosystem stands today. We distinguish what is implemented (with evidence that can be reviewed), what is partially verifiable and what is still an architectural goal.
| Invariant | What it requires | How it is checked | State in the ecosystem |
|---|---|---|---|
| I · Correspondence | Every authoring operation in the interface has a documented representation in the canonical model. | A test that walks through the interface controls and checks that each one writes a field, and that every field either has a control or is declared as editable only in the document. | Architectural goal. It is a written rule in SketchLab, Mapping Studio and Experience Creator; no application tests it automatically. |
| II · Independence | Neither the document nor the engine requires an embedded AI to work. | Review the runtime dependencies and use the full application with no AI provider configured. | Implemented in all six applications reviewed. SketchLab has an AI integration, optional and switchable off. |
| III · Interoperability | A valid specification can be imported and run through documented interfaces. | Have someone outside the project produce a valid document and run it through the API or the command line, without using the interface. | Implemented in the four providers (contract braidata.aaa3.*.v1) and in Experience Creator (command-line resolver). Partial in Stellar Map. |
| IV · Consistency | Modifying the project from the interface or from an external client follows the same validation rules. | Check that the interface and external clients use the same validation code, and that the same document is accepted or rejected the same way along both paths. | Implemented through shared code in Experience Creator, Scene Creator, SketchLab and FrameLab. Partial in Soundcrafter (two engines). Not verified in Stellar Map. |
| V · Reproducibility | The conditions needed to reproduce a result can be identified: versions, resources, parameters and seeds where relevant. | Record those conditions alongside the result and rerun to compare. It does not require absolute determinism where processes are not deterministic. | Partially verifiable. Tested in SketchLab and FrameLab; partial elsewhere (see the matrix). |
| VI · Portability | The document can be moved between compatible instances, with its external dependencies declared. | Export, import into another instance and compare; list what the document needs outside itself (assets, services, libraries). | Partially verifiable. Lossless round trips are tested in SketchLab, Scene Creator and Stellar Map; external dependencies are only partly documented. |
What AAA3 adds to an application with an interface and a backend
Almost any application has an interface, some data format and a server or an engine. Having all three does not make it AAA3. What sets the architecture apart are four guarantees a conventional application does not usually give, and the problems those guarantees solve. They are proposed invariants: the conformance matrix shows which ones each application meets today.
| Guarantee | In a conventional application | In AAA3 | Problem it solves |
|---|---|---|---|
| The document is a public contract | The data model is internal —a database, an in-memory state— and changes without notice. | The canonical document is documented, versioned and can be validated outside the application. | Third parties, scripts or models can produce valid projects without access to the code. |
| Correspondence (I) | Some operations exist only as clicks or as interface state. | Every authoring operation has a field in the document. | An AI does not have to handle the interface visually, with the fragility that implies. |
| A single validation (IV) | The interface and the API validate separately and drift apart over time. | The interface and external clients go through the same validator. | A document accepted along one path is not rejected, or interpreted differently, along the other. |
| Separate states | What is decided and what the engine computes are mixed in the same storage. | The runtime may hold transient state, but only explicit rules turn it into document. | Running does not silently change the project, and the document stays readable and comparable. |
None of these ideas is new on its own. Open document formats, infrastructure as code and local-first software already treat a declarative representation as the source of truth. What AAA3 proposes is to bring them together into an explicit set of invariants with a precise purpose: that an application can be operated end to end by a person, a script or any language model, without depending on a built-in model. Whether that is an architectural contribution or a useful synthesis of known ideas is for others to judge.
Conformance matrix
We reviewed the code and documentation of each application in the ecosystem. Yes means there is reviewable evidence: an automated test or shared code we checked. Partial means a written rule without a test, or evidence that covers only part. No means we found no evidence. Having an interface, a JSON file and an API is not enough to mark a plane or an invariant.
| Application | Human | Declarative | Execution | I | II | III | IV | V | VI |
|---|---|---|---|---|---|---|---|---|---|
| Experience Creator | Yes | Yes | Yes | Partial | Yes | Yes | Yes | Partial | Partial |
| Scene Creator | Yes | Yes | Yes | Partial | Yes | Yes | Yes | Partial | Partial |
| SketchLab | Yes | Yes | Yes | Partial | Yes | Yes | Yes | Yes | Partial |
| FrameLab | Yes | Yes | Yes | Partial | Yes | Yes | Yes | Yes | Partial |
| Soundcrafter | Partial | Yes | Yes | No | Yes | Yes | Partial | Partial | Partial |
| Stellar Map | Yes | Yes | Partial | Partial | Yes | Partial | No | Partial | Partial |
| Application | Contract | Main evidence | Main gap |
|---|---|---|---|
| Experience Creator | experiencecreator.project.v1 | Zod schema in @experience-creator/schema; the editor and the command-line resolver import the same @experience-creator/core; interface ↔ JSON parity is a written rule of the contract; editor state is not saved into the document. | Parity has no automated test. Real-time capture is not reproducible frame by frame; offline export does aim to be. |
| Scene Creator | glbforge.scene v2.5 | The API uses the editor's normalizeDoc, kernel and exporter; the round trip cleanDoc → import → cleanDoc is idempotent; 14 tests cover the API and its use from Experience Creator. | idb: references and local paths need the browser. Byte-for-byte reproducibility of the GLB is not documented. |
| SketchLab | braidata.sketchlab.v1 (and braidata.mappinglab.v2) | Interface, command line, API and tests use lib/sketchlab/core.js; export → import → export is verified; the seed is tested end to end; the built-in AI is optional. | sketch.html loads p5 from jsDelivr unless in offline mode; sketch.png needs Chromium on the server. |
| FrameLab | project type: "framelab", version 1.0 | The API runs, inside jsdom, the same validation and export modules as the browser, without reimplementing them; a test checks that the same request yields the same outputId. | There is no written rule of interface ↔ document parity and no round-trip test of the project. |
| Soundcrafter | braidata.alsopack.v2 | API with 12 tests; requests are idempotent; the interface imports, validates, renders and exports the document. | There are two engines with different validators —the browser one in JavaScript and the API one in Python— and we found no equivalence test. The interface does not edit the whole document. |
| Stellar Map | starmap.v1 | Generated and tested JSON schema; export → import → export is stable byte for byte. | It does not expose the braidata.aaa3.*.v1 contract. We did not verify that its maps API uses the same validator as the editor. Keeping the layout as transient state outside the document is proposed in its documentation, not implemented. |
That conformance with the invariants can be checked with tests shared by every application, starting with correspondence (I) and consistency (IV), which are the hardest to demonstrate today.
Relation to SyncThinkDesign
AAA3 and SyncThinkDesign have independent identities. STD studies and proposes the continuous evolution of systems through synchronized processes that influence one another; AAA3 applies some of those principles to application architecture. Synchronization between the three planes lets authoring decisions, structured representation and system behavior feed back into one another, but the architecture does not on its own implement every principle of STD.
Nor do the three planes map one to one onto the four processes. Capture, Ideate, Execute and Optimize can happen on any plane: a person ideates in the interface, a model ideates by writing the document, the engine executes, a review optimizes. Forcing an equivalence would hide precisely what is interesting: that the processes cut across the planes.
| STD principle | What AAA3 materializes | What it also requires | State |
|---|---|---|---|
| F2 Synchronization | The three planes act on the same project: a change in the document reaches the interface and the engine without waiting for a phase; across applications, a source change regenerates whatever consumes it (I5). | Propagation mechanisms (M5) when several people or applications are involved. | Partly materialized |
| F3 Organic, continuous evolution | The document can change part by part and be regenerated without redoing the rest (I4). | A document history to follow its evolution (M1). | Partly materialized |
| F6 Continuous validation | Where invariant IV holds, every write goes through the same validator; today it is verified in four of the six apps. | Criteria for what to check beyond form (M4). | Materialized where IV holds |
| F12 Design as evolution | The document declares explicitly what can change in the system. | Deciding who can change what, and what is protected (M6). | Partly materialized |
| F4 Emergence | Execution aims at reproducibility; if there is emergence, it happens in the authoring loop (Q6). | Studying how documents evolve (Q1). | Open |
| F8 Permanent capture | Almost nothing: AAA3 does not observe the world. | Instrumenting the system's real use. | Not covered |
| F9 and F10 Silos and mindset | Nothing on its own. | How work is organized, not architecture. | Out of scope |
The current ecosystem
Today the ecosystem has one orchestrator and several providers. The orchestrator is Experience Creator, published as Alterverse: an editor for interactive 3D experiences and audiovisual pieces. An Experience Creator project can declare the assets it needs —a world, a texture, an interface, a piece of music— as requests to other providers, each written in that provider's native format. A resolver, running in the editor or on the command line, produces them. Each application has its own three planes; the braidata.aaa3.*.v1 contract connects their execution planes.
| Provider | What it does | Operations | State |
|---|---|---|---|
| Scene Creator | 3D worlds from a scene document; exports GLB with a real kernel, without a browser. | scene.glb | Works; accepts chained inputs (textures embedded in the GLB). |
| SketchLab | Generative p5.js sketches defined by braidata.sketchlab.v1, with parameters, seed and batches. | sketch.html, sketch.png, sketch.validate | Works. sketch.png needs Chromium on the server; without it, it answers 501. |
| FrameLab | HTML interfaces (HUDs, menus) with an export identical to the browser's. | ui.html | Works; runs the real export modules inside jsdom. |
| Soundcrafter | Music from a braidata.alsopack.v2 project: WAV audio and a score. | audio.render | Works with limits: on stateless servers the render runs inside the request, up to 20 s of audio. |
The contract between applications
Every application in the ecosystem has a canonical, versioned JSON format. The rule that the interface only edits that document is written down in SketchLab, Mapping Studio and Experience Creator; in the others it can be observed in the code but is not documented as a rule.
No application needs an AI model to work, neither at runtime nor in the format. Any model can write the document from outside (we call this BYO-AI: bring your own AI).
Every provider exposes the braidata.aaa3.*.v1 contract under /api/aaa3: GET manifest (public), POST run, GET jobs/{requestId}, GET outputs/{outputId} and PUT inputs/{sha256} for chaining.
// request (abridged)
{
"contract": "braidata.aaa3.request.v1",
"requestId": "music",
"operation": "audio.render",
"spec": { /* the provider's native document, not reinterpreted */ },
"inputs": [{ "name": "albedo", "sha256": "…", "mimeType": "image/png" }]
}
// result
{
"contract": "braidata.aaa3.result.v1",
"status": "succeeded",
"diagnostics": [],
"outputs": [{ "outputId": "<sha256>", "kind": "audio", "mimeType": "audio/wav", "url": "…" }]
}Requests are idempotent. A request's identity is the hash of the provider, the operation, the specification, the parameters and the content of its inputs: asking for the same thing twice returns the same result without producing it again.
Requests are chained by content. An input travels as a sha256; if the provider does not have it, it answers missing_inputs, the client uploads it and retries once. If a source asset changes, the hash of every request that consumes it changes and they are regenerated.
Human approval is recorded as a pin on the approved hash. A pinned request is not regenerated, not even when execution is forced; if its specification changed, the resolver keeps what was approved and reports the difference. Only a person removes a pin. It is an AAA3 governance mechanism, not a principle of SyncThinkDesign.
The applications aim at reproducibility (invariant V), not absolute determinism. In SketchLab, the seed controls randomSeed, noiseSeed and Math.random, and end-to-end tests check that the same document produces the same image; in FrameLab, a test checks that the same request produces the same result. Elsewhere, reproducibility is partial.
How it is built
A good share of AAA3's code is written with AI coding agents, under human direction and review; each repository's history records it commit by commit. We mention it because it is part of the experiment: if H5 is true, projects like this are where it should show first. Also because it leaves a question we still cannot answer well: how to attribute work fairly when part of it is produced by an agent.
What AAA3 does not solve
- It does not capture signals from the world. Observations are still entered by hand.
- Correspondence between interface and document (invariant I) is not tested automatically in any application.
- Output stores are bounded memory on each provider; a fresh instance may have forgotten a result and the client has to ask again.
- The repositories are private. This site documents the architecture and the contract so they can be discussed, but the code cannot be audited from outside yet.
To publish the AAA3 specification —the three planes, the invariants and the braidata.aaa3.*.v1 contract— as a standalone, versioned document, so that someone can build a conforming application without reading our code.
References
- Kleppmann, M., Wiggins, A., van Hardenberg, P., & McGranaghan, M. (2019). Local-first software: You own your data, in spite of the cloud. Onward! 2019, ACM.
- Morris, K. (2016). Infrastructure as Code: Managing Servers in the Cloud. O'Reilly Media.
History
| Version | Date | Change |
|---|---|---|
| 0.1 | 2026-10-27 | Description of the ecosystem as AI-Addressable Application: contract, providers and chaining. |
| 0.2 | 2026-10-28 | AAA3 is presented as an implementation of SyncThinkDesign with an identity of its own. |
| 0.3 | 2026-10-28 | Formal definition: AI-Addressable Application — Three-Plane Architecture. Three planes, six invariants with their state, guarantees compared with a conventional application and a conformance matrix of six applications. No changes to contracts or identifiers. |