@cynodia/axiom 0.16.0-alpha.3 → 0.17.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/docs/ACTIONS_TRANSACTIONS.md +12 -1
- package/docs/AGENT_API.md +1 -1
- package/docs/AGENT_REFERENCE.md +16 -2
- package/docs/ANTI_PATTERNS.md +1 -1
- package/docs/AUTHORITY.md +71 -1
- package/docs/AUTHORIZATION.md +1 -1
- package/docs/CONSTRAINTS.md +1 -1
- package/docs/DISTRIBUTED_AUTHORITY.md +1 -1
- package/docs/EFFECTS.md +1 -1
- package/docs/EVENTS.md +1 -1
- package/docs/EXPRESSIONS.md +1 -1
- package/docs/GRAPH_MODEL.md +1 -1
- package/docs/INTEGRATIONS.md +1 -1
- package/docs/LIVE_QUERIES.md +1 -1
- package/docs/LOCATIONS.md +1 -1
- package/docs/MIGRATIONS.md +1 -1
- package/docs/PRESENTATION.md +1 -1
- package/docs/QUERIES.md +1 -1
- package/docs/RUNTIME.md +1 -1
- package/docs/SEMANTIC_CONTRACT.md +3 -1
- package/docs/STATE.md +1 -1
- package/docs/STORAGE.md +1 -1
- package/docs/SUBSCRIPTIONS.md +1 -1
- package/docs/TRIGGERS.md +1 -1
- package/docs/UI.md +1 -1
- package/docs/VALIDATION.md +1 -1
- package/docs/WORKFLOWS.md +2 -2
- package/llms.txt +1 -1
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -33,7 +33,7 @@ Shorter forms of the same routing: [`AGENTS.md`](AGENTS.md) and [`llms.txt`](llm
|
|
|
33
33
|
at this package's root.
|
|
34
34
|
|
|
35
35
|
**Status: experimental / alpha.** The API may change between alpha releases. The
|
|
36
|
-
documentation in `docs/` describes this exact version, `0.
|
|
36
|
+
documentation in `docs/` describes this exact version, `0.17.0-alpha.1`.
|
|
37
37
|
|
|
38
38
|
## Installation
|
|
39
39
|
|
|
@@ -47,7 +47,7 @@ Every release of this project is a pre-release and npm's `latest` tag points at
|
|
|
47
47
|
plain command above installs the current version. **There is no `alpha` dist-tag** — the tag
|
|
48
48
|
was removed once it stopped tracking releases, and `npm install @cynodia/axiom@alpha` now
|
|
49
49
|
fails with a 404. Pin the exact version instead when one is needed:
|
|
50
|
-
`npm install @cynodia/axiom@0.
|
|
50
|
+
`npm install @cynodia/axiom@0.17.0-alpha.1`.
|
|
51
51
|
|
|
52
52
|
These are ES modules compiled to ES2022; import them with `import`, not `require`.
|
|
53
53
|
`@cynodia/axiom-cli` (`npm install -g @cynodia/axiom-cli`) publishes the `axiom` executable
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Actions and transactions
|
|
2
2
|
|
|
3
|
-
Axiom 0.
|
|
3
|
+
Axiom 0.17.0-alpha.1. An action is behavior expressed as data, executed as a transaction.
|
|
4
4
|
|
|
5
5
|
```ts
|
|
6
6
|
{
|
|
@@ -40,6 +40,17 @@ result.diagnostics[0].details // { preconditionIndex: 2, failureMode: 'insuffic
|
|
|
40
40
|
|
|
41
41
|
`actionGuards(action)` returns the conditions however they were written.
|
|
42
42
|
|
|
43
|
+
**Compilation owns guard lowering, and there is one executable lifecycle.** `guards` is an
|
|
44
|
+
authoring-level representation. `compileToIR` and `compileToServerIR` lower it into aligned
|
|
45
|
+
`preconditions` / `failureModes` preserving meaning and declaration order —
|
|
46
|
+
`meaning(guards) == meaning(lowered preconditions + failureModes)` for every compiled
|
|
47
|
+
action. A runtime — client or authority — evaluates the **normalized** preconditions /
|
|
48
|
+
failure modes; it does **not** also evaluate `guards[]` on top. An authority handed
|
|
49
|
+
serialized Server IR whose guard semantics are not represented in the aligned executable
|
|
50
|
+
form rejects it fail-closed (`SERVER_IR_NOT_NORMALIZED`) rather than lowering at execution
|
|
51
|
+
time or skipping the unmatched check — see
|
|
52
|
+
[Server IR admission](./AUTHORITY.md#server-ir-admission).
|
|
53
|
+
|
|
43
54
|
### Guards evaluate in order, and the first failure stops
|
|
44
55
|
|
|
45
56
|
Declaration order is evaluation order. The first guard that does not hold refuses the
|
package/docs/AGENT_API.md
CHANGED
package/docs/AGENT_REFERENCE.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Agent reference
|
|
2
2
|
|
|
3
|
-
Axiom 0.
|
|
3
|
+
Axiom 0.17.0-alpha.1. Compressed operational contract. Read this plus the `.d.ts`
|
|
4
4
|
declarations before authoring or modifying an Axiom application.
|
|
5
5
|
|
|
6
6
|
Formal guarantees: [`SEMANTIC_CONTRACT.md`](SEMANTIC_CONTRACT.md). Mistakes that compile:
|
|
@@ -285,7 +285,11 @@ Absent `initialValue`, a state starts at the default for its type: `optional`
|
|
|
285
285
|
|
|
286
286
|
Prefer `guards: [{ condition, failureMode }]`. The older parallel `preconditions` /
|
|
287
287
|
`failureModes` arrays align **by position** — `failureModes[2]` reports
|
|
288
|
-
`preconditions[2]` — and the compiler normalizes `guards` into them.
|
|
288
|
+
`preconditions[2]` — and the compiler normalizes `guards` into them. Compilation owns that
|
|
289
|
+
lowering: a runtime evaluates the aligned `preconditions` / `failureModes` and does **not**
|
|
290
|
+
also execute `guards[]`. An authority handed serialized Server IR whose guards are not
|
|
291
|
+
represented in the lowered form rejects it fail-closed (`SERVER_IR_NOT_NORMALIZED`) — see
|
|
292
|
+
[`AUTHORITY.md`](AUTHORITY.md#server-ir-admission).
|
|
289
293
|
|
|
290
294
|
Lifecycle, exactly:
|
|
291
295
|
|
|
@@ -754,6 +758,16 @@ Boundary diagnostics: `UNKNOWN_SERVER_ACTION` `ARGUMENT_TYPE_MISMATCH` `AUTHORIZ
|
|
|
754
758
|
`AUTHORITY_UNREACHABLE`, plus `SERVER_STATE_WRITE` and `REMOTE_ACTION_UNAVAILABLE` on the
|
|
755
759
|
client.
|
|
756
760
|
|
|
761
|
+
Serialized Server IR is structurally admitted before any execution (`createAxiomServer`
|
|
762
|
+
throws `ServerIRError`, zero mutation): `SERVER_IR_NOT_OBJECT`,
|
|
763
|
+
`SERVER_IR_INVALID_COLLECTION` (a required collection is not its array/object container),
|
|
764
|
+
`SERVER_IR_INVALID_NODE` (a `null` / primitive where a semantic node or operation belongs —
|
|
765
|
+
a present key does not make an invalid value a node), `SERVER_IR_NOT_NORMALIZED` (guards not
|
|
766
|
+
represented in the lowered `preconditions` / `failureModes`). Total over untrusted input —
|
|
767
|
+
never a native exception. `serverIRStructuralProblems` / `serverIRNormalizationProblems`
|
|
768
|
+
(`@cynodia/axiom-core`) compute the same decision for tooling. `workflows` keep the richer
|
|
769
|
+
`WorkflowIRError` path.
|
|
770
|
+
|
|
757
771
|
## SUBSCRIPTIONS AND STORAGE
|
|
758
772
|
|
|
759
773
|
Full model: [`SUBSCRIPTIONS.md`](SUBSCRIPTIONS.md), [`STORAGE.md`](STORAGE.md). The external
|
package/docs/ANTI_PATTERNS.md
CHANGED
package/docs/AUTHORITY.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Authority
|
|
2
2
|
|
|
3
|
-
Axiom 0.
|
|
3
|
+
Axiom 0.17.0-alpha.1. How an application crosses the trust boundary.
|
|
4
4
|
|
|
5
5
|
Until 0.5.x an Axiom application executed locally. 0.6 adds an **authority**: a generic
|
|
6
6
|
runtime that owns state, decides mutations and persists them. The same semantic graph
|
|
@@ -40,6 +40,7 @@ describes both halves, so there is no backend to write.
|
|
|
40
40
|
19. **EVENT** — an event is a typed fact, validated against its declared payload type before any action sees it; an action is where work happens. See [External events](#external-events).
|
|
41
41
|
20. **SECRET** — integration credentials live in host configuration, never in `ApplicationGraph`. See [External systems](#external-systems).
|
|
42
42
|
21. **INVOCATION SOURCE** — a system-originated invocation (trigger, event, effect outcome) and an anonymous client request are distinct authoritative facts; a client cannot forge the former, and an action may restrict which it accepts independently of caller identity. See [Invocation source](#invocation-source).
|
|
43
|
+
22. **ADMISSION** — serialized Server IR is structurally admitted before any semantic execution: a malformed semantic-node entry or a non-normalized guard representation is refused fail-closed with a structured `SERVER_IR_*` diagnostic, never a native exception and never a partial run. See [Server IR admission](#server-ir-admission).
|
|
43
44
|
|
|
44
45
|
## Authority and persistence are different questions
|
|
45
46
|
|
|
@@ -151,6 +152,51 @@ document**, computed from the document rather than asserted: see
|
|
|
151
152
|
|
|
152
153
|
Guards are normalized into aligned `preconditions` / `failureModes`, exactly as in the
|
|
153
154
|
client IR, so an authority that read one and not the other cannot silently skip a check.
|
|
155
|
+
See [Server IR admission](#server-ir-admission) for the structural and normalization
|
|
156
|
+
requirements an authority enforces before it executes anything.
|
|
157
|
+
|
|
158
|
+
## Server IR admission
|
|
159
|
+
|
|
160
|
+
An authority is handed **serialized** Server IR — JSON that a compiler, an agent, a network
|
|
161
|
+
peer or a persisted artifact produced. A TypeScript type is not proof of runtime shape, so
|
|
162
|
+
`createAxiomServer` performs a total structural admission **before any semantic execution**:
|
|
163
|
+
no state is read or written, no provider is touched, no effect is created, no event is
|
|
164
|
+
dispatched, no workflow advances. A malformed document is refused with a thrown
|
|
165
|
+
`ServerIRError` carrying `problems[]` — stable `code` + `path` + `message` — never a native
|
|
166
|
+
`TypeError`, panic or partial start. The codes are `SERVER_IR_ADMISSION_CODES` in
|
|
167
|
+
`@cynodia/axiom-core`, and `serverIRStructuralProblems(ir)` / `serverIRNormalizationProblems(ir)`
|
|
168
|
+
compute them for any tool that needs the same decision without constructing an authority.
|
|
169
|
+
|
|
170
|
+
### Structural validity
|
|
171
|
+
|
|
172
|
+
- The document MUST be a JSON object (`SERVER_IR_NOT_OBJECT`).
|
|
173
|
+
- A required collection present but not the container its contract defines — `states`,
|
|
174
|
+
`entities`, `constraints`, `transitionConstraints`, `observableStateIds` as arrays;
|
|
175
|
+
`actions`, `fields` as objects — is refused (`SERVER_IR_INVALID_COLLECTION`).
|
|
176
|
+
- Every entry of a semantic-node collection MUST be a JSON object carrying a string `id`. A
|
|
177
|
+
`null`, a primitive, or an array where a node belongs is refused (`SERVER_IR_INVALID_NODE`)
|
|
178
|
+
— **a key being present does not make an invalid value a valid node**. This covers the
|
|
179
|
+
node maps (`actions`, `integrationOperations`, `expressionDefs`), the node arrays
|
|
180
|
+
(`entities`, `states`, `constraints`, `queries`, `authorizationPolicies`, `readPolicies`,
|
|
181
|
+
and the rest) and the `operations` array inside an action, at any depth. `workflows` keeps
|
|
182
|
+
its own richer admission path (`WorkflowIRError` / `WORKFLOW_INVALID_IR`).
|
|
183
|
+
|
|
184
|
+
### Guard normalization
|
|
185
|
+
|
|
186
|
+
`ActionDef.guards` is an **authoring-level** representation. Compilation owns lowering it
|
|
187
|
+
into aligned executable `preconditions` / `failureModes`, preserving meaning and declaration
|
|
188
|
+
order: `meaning(guards) == meaning(lowered preconditions + failureModes)` for every
|
|
189
|
+
successfully compiled action. The authority evaluates the **normalized** preconditions /
|
|
190
|
+
failure modes and does **not** independently execute `guards[]` in addition — there is one
|
|
191
|
+
executable action lifecycle, not two.
|
|
192
|
+
|
|
193
|
+
An authority receiving Server IR in which an action's guard semantics are not represented in
|
|
194
|
+
the aligned executable form — `guards.length` exceeds the lowered `preconditions.length`, or
|
|
195
|
+
`preconditions[i]` is not `guards[i].condition` — MUST reject it fail-closed
|
|
196
|
+
(`SERVER_IR_NOT_NORMALIZED`): no action execution, no mutation, no external effect. It MUST
|
|
197
|
+
NOT lower guards at execution time, drop the unmatched guards, invent a missing failure
|
|
198
|
+
mode, or execute the action while skipping the check. The runtime either executes valid
|
|
199
|
+
normalized semantics or refuses the input.
|
|
154
200
|
|
|
155
201
|
## Client IR
|
|
156
202
|
|
|
@@ -470,6 +516,10 @@ does for a local failure.
|
|
|
470
516
|
| `AUTHORIZATION_DENIED` | The caller may not invoke this action / read this query / start or cancel this workflow, or the rule could not be evaluated. spec15 Phase C covers `ActionDef.authorizationPolicy`, Phase D `QueryDef.authorizationPolicy` (`query.read` — including a live query whose caller is revoked mid-subscription, Phase F, delivered as a live-query error message carrying this code), Phase E `WorkflowDef.startPolicy` / `instanceAccessPolicy` (`workflow.start` / `.cancel`); `details.operation` names the canonical operation and `details.reason` is a non-secret machine reason (`policy-denied` / `policy-error` / `legacy-denied` / `legacy-error` / `owner-mismatch`). A denied `workflow.inspect` / `workflow.history` returns nothing instead (no existence leak). |
|
|
471
517
|
| `CONCURRENCY_CONFLICT` | Another transaction committed the same state first. Nothing was applied. |
|
|
472
518
|
| `MALFORMED_REQUEST` | The request was not an Axiom semantic request, or spoke an unknown protocol. |
|
|
519
|
+
| `SERVER_IR_NOT_OBJECT` | The serialized Server IR handed to `createAxiomServer` is not a JSON object. Thrown as `ServerIRError` at construction, before any semantic execution (spec17 §17). |
|
|
520
|
+
| `SERVER_IR_INVALID_COLLECTION` | A required Server IR collection is present but is not the array / object container its contract defines (e.g. `states` as an object). Refused structurally (spec17 §15, §62). |
|
|
521
|
+
| `SERVER_IR_INVALID_NODE` | An entry of a semantic-node collection — a node map, a node array, or an action's `operations` — is `null`, a primitive or otherwise not a JSON object with a string `id`. A present key does not make an invalid value a valid node (spec17 §16, §80 F1-B). |
|
|
522
|
+
| `SERVER_IR_NOT_NORMALIZED` | An executable action's authoring `guards` are not represented in the aligned, lowered `preconditions` / `failureModes` (`guards.length` exceeds the lowered count, or a lowered precondition does not match its guard's condition). The authority refuses fail-closed rather than execute the action while skipping the unmatched check (spec17 §10-§14, §80 F2). |
|
|
473
523
|
| `AUTHORITY_UNREACHABLE` | The authority could not be reached, timed out, or answered with a transport error. |
|
|
474
524
|
| `EFFECT_FAILED` | An external effect's adapter reported failure after exhausting its retry policy. |
|
|
475
525
|
| `TRIGGER_INVOCATION_FAILED` | A trigger's target action reported failure, or its arguments failed to evaluate. |
|
|
@@ -661,6 +711,26 @@ Every fixture is executed against the reference runtime by this repository's own
|
|
|
661
711
|
and its expectations are exhaustive — a fixture that says which states changed must name all
|
|
662
712
|
of them and no others. No fixture is permitted to disagree with the shipped runtime.
|
|
663
713
|
|
|
714
|
+
### Runtime-neutral sub-tiers
|
|
715
|
+
|
|
716
|
+
Later releases add sub-tiers under `conformance/<area>/`, each with its own manifest,
|
|
717
|
+
`conformance` version and reference runner, so a runtime can claim a profile without
|
|
718
|
+
claiming the whole suite:
|
|
719
|
+
|
|
720
|
+
| Directory | Version | Runner | Covers |
|
|
721
|
+
| --- | --- | --- | --- |
|
|
722
|
+
| `conformance/queries/` | `axiom.conformance.v4` | `runQueryConformanceFixture` | `QueryDef` semantics |
|
|
723
|
+
| `conformance/migrations/` | `axiom.conformance.v5` | `runMigrationConformanceFixture` | schema migrations |
|
|
724
|
+
| `conformance/distributed/` | `axiom.conformance.v6` | `runCoordinationConformanceSuite` | coordination primitives |
|
|
725
|
+
| `conformance/live/` | `axiom.conformance.v7` | `runLiveQueryConformanceFixture` | live queries |
|
|
726
|
+
| `conformance/workflow/` | `axiom.conformance.v8` | `runWorkflowConformanceFixture` | `WorkflowDef` execution |
|
|
727
|
+
| `conformance/authorization/` | `axiom.conformance.v9` | `runAuthorizationConformanceFixture` | authorization decisions |
|
|
728
|
+
| `conformance/normalization/` | `axiom.conformance.v11` | `runNormalizationConformanceFixture` | Server IR structural admission + guard normalization (spec17 §15-§19, §62, §80) |
|
|
729
|
+
|
|
730
|
+
Each fixture records its **normative provenance** (`semanticRule`) rather than being golden
|
|
731
|
+
against reference-runtime output, so both the reference runtime and an independent runtime
|
|
732
|
+
are tested against the same expectation.
|
|
733
|
+
|
|
664
734
|
## Machine-readable contracts
|
|
665
735
|
|
|
666
736
|
```
|
package/docs/AUTHORIZATION.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Authorization
|
|
2
2
|
|
|
3
|
-
Axiom 0.
|
|
3
|
+
Axiom 0.17.0-alpha.1. The operational contract for **authorization completeness** — the 0.15
|
|
4
4
|
milestone (spec15). Whether a principal may perform a semantic operation is part of the
|
|
5
5
|
graph's executable meaning — not a runtime concern, not UI visibility, not something that
|
|
6
6
|
varies by transport, provider, process, retry path or authority topology. `axiom.server.v9`
|
package/docs/CONSTRAINTS.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Distributed authority
|
|
2
2
|
|
|
3
|
-
*This document describes Axiom `0.
|
|
3
|
+
*This document describes Axiom `0.17.0-alpha.1`.*
|
|
4
4
|
|
|
5
5
|
The authoritative runtime (`docs/AUTHORITY.md`) may run as **more than one process at the
|
|
6
6
|
same time**, over one shared persistence provider, without any change to the
|
package/docs/EFFECTS.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Effects
|
|
2
2
|
|
|
3
|
-
Axiom 0.
|
|
3
|
+
Axiom 0.17.0-alpha.1. External effects are not rollback-capable state mutations. This file
|
|
4
4
|
is the delivery model; [`AUTHORITY.md`](AUTHORITY.md#external-effects) is the load-bearing
|
|
5
5
|
statement of why, and [`INTEGRATIONS.md`](INTEGRATIONS.md) is the operation vocabulary this
|
|
6
6
|
builds on.
|
package/docs/EVENTS.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Events
|
|
2
2
|
|
|
3
|
-
Axiom 0.
|
|
3
|
+
Axiom 0.17.0-alpha.1. An event is a typed fact — something that happened — never work
|
|
4
4
|
itself. [`AUTHORITY.md`](AUTHORITY.md#external-events) is the load-bearing statement;
|
|
5
5
|
this file is the vocabulary and the webhook delivery mechanism. A **subscription** is the
|
|
6
6
|
other way an external fact becomes an `EventDef` payload — see
|
package/docs/EXPRESSIONS.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Expressions
|
|
2
2
|
|
|
3
|
-
Axiom 0.
|
|
3
|
+
Axiom 0.17.0-alpha.1. An expression describes **what value is computed**. It is a tree of
|
|
4
4
|
plain data, never source text and never a callback. Evaluation is pure: an expression MUST
|
|
5
5
|
NOT change state.
|
|
6
6
|
|
package/docs/GRAPH_MODEL.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Graph model
|
|
2
2
|
|
|
3
|
-
Axiom 0.
|
|
3
|
+
Axiom 0.17.0-alpha.1. The `ApplicationGraph` is the authoritative representation of an
|
|
4
4
|
application. Everything else — the IR, the page, the DOM — is derived from it and is never
|
|
5
5
|
edited.
|
|
6
6
|
|
package/docs/INTEGRATIONS.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Integrations
|
|
2
2
|
|
|
3
|
-
Axiom 0.
|
|
3
|
+
Axiom 0.17.0-alpha.1. How an application declares and calls an external system, without
|
|
4
4
|
embedding a transport, an SDK or a secret in the graph. The authority boundary this
|
|
5
5
|
depends on is [`AUTHORITY.md`](AUTHORITY.md#external-systems); this file is the vocabulary.
|
|
6
6
|
|
package/docs/LIVE_QUERIES.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Realtime — live canonical queries
|
|
2
2
|
|
|
3
|
-
Axiom 0.
|
|
3
|
+
Axiom 0.17.0-alpha.1. The operational contract for **observing a `QueryDef` result over
|
|
4
4
|
time**: subscribe once, receive an initial coherent result, then receive canonical changes
|
|
5
5
|
as authoritative committed state moves — through any compatible authority, across
|
|
6
6
|
reconnects. 0.13 adds no Server IR vocabulary of its own — current is `axiom.server.v9`.
|
package/docs/LOCATIONS.md
CHANGED
package/docs/MIGRATIONS.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Schema evolution & semantic migrations
|
|
2
2
|
|
|
3
|
-
Axiom 0.
|
|
3
|
+
Axiom 0.17.0-alpha.1. The operational contract for evolving a deployed application's
|
|
4
4
|
semantic model and its persisted canonical data over time — adding a required field,
|
|
5
5
|
splitting one field into two, removing an obsolete one, migrating millions of
|
|
6
6
|
provider-backed rows — **without** an application-authored SQL migration, an ORM migration,
|
package/docs/PRESENTATION.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Presentation
|
|
2
2
|
|
|
3
|
-
Axiom 0.
|
|
3
|
+
Axiom 0.17.0-alpha.1. Presentation is **semantic UX intent**, expressed as data on a UI
|
|
4
4
|
node. It names roles, tokens and device classes. It never names a colour, a length, a media
|
|
5
5
|
query or a CSS property.
|
|
6
6
|
|
package/docs/QUERIES.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Semantic data access & the query layer
|
|
2
2
|
|
|
3
|
-
Axiom 0.
|
|
3
|
+
Axiom 0.17.0-alpha.1. The operational contract for demand-driven reads over authoritative
|
|
4
4
|
data that is too large to materialize as a `StateDef` — 500,000 orders, 5,000,000 order
|
|
5
5
|
lines, years of audit rows. `axiom.server.v6`.
|
|
6
6
|
|
package/docs/RUNTIME.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Semantic contract
|
|
2
2
|
|
|
3
|
-
Axiom 0.
|
|
3
|
+
Axiom 0.17.0-alpha.1. Runtime guarantees, stated formally. This file defines behavior; it
|
|
4
4
|
does not teach. Where this file and any specification in `../specs/` disagree, this file
|
|
5
5
|
describes the implementation and is authoritative.
|
|
6
6
|
|
|
@@ -204,6 +204,8 @@ Full model: [`AUTHORITY.md`](AUTHORITY.md).
|
|
|
204
204
|
- `PRINCIPAL` MUST resolve wherever an authority evaluates an expression — authorization, guards, operation values, postconditions and constraints alike — and MUST NOT resolve anywhere a client evaluates.
|
|
205
205
|
- Server IR MUST be serializable, deterministic and free of closures, and MUST declare a contract version a runtime can refuse.
|
|
206
206
|
- `axiom.server.v1` is **frozen**. Its semantics — IEEE-754 binary64 arithmetic, Unicode code-point text ordering, the deterministic host model, and the JSON serialization constraints — are normative and language-independent. An incompatible semantic change requires a new contract identifier.
|
|
207
|
+
- Executable Server IR is **normalized** semantic input. Compilation lowers authoring conveniences into the canonical executable form; an authority evaluates that form and MUST NOT depend on an authoring-only representation the contract defines a normalized form for. `ActionDef.guards` is lowered into aligned `preconditions` / `failureModes` preserving meaning and order, and the authority evaluates the lowered representation only — it does not also execute `guards[]`.
|
|
208
|
+
- A surface that accepts serialized semantic input — deserialized Server IR, a conformance fixture, a persisted or network-provided artifact — MUST perform structural admission before semantic execution, and MUST be **total** over that input: a malformed value inside a semantic-node collection (`null`, a primitive, a non-object), a non-array required collection, a non-object document, or a non-normalized guard representation produces a structured `SERVER_IR_*` diagnostic with zero mutation and zero external effect — never an uncaught host-language exception. A language-level type declaration is not runtime validation. Full model: [`AUTHORITY.md`](AUTHORITY.md#server-ir-admission).
|
|
207
209
|
|
|
208
210
|
**Not guaranteed in 0.7.0**, and stated so rather than implied: read authorization per caller
|
|
209
211
|
or per record, binding a value generated by one operation in a later one, external side
|
package/docs/STATE.md
CHANGED
package/docs/STORAGE.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Storage and blobs
|
|
2
2
|
|
|
3
|
-
Axiom 0.
|
|
3
|
+
Axiom 0.17.0-alpha.1. How an application stores, references, serves and deletes binary data —
|
|
4
4
|
an attachment, a document, a photograph, a diagnostic log — with no filesystem path, no
|
|
5
5
|
upload route and no download route anywhere in it.
|
|
6
6
|
|
package/docs/SUBSCRIPTIONS.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Subscriptions
|
|
2
2
|
|
|
3
|
-
Axiom 0.
|
|
3
|
+
Axiom 0.17.0-alpha.1. How an application receives a stream of external events — an MQTT
|
|
4
4
|
topic, a WebSocket feed, a queue consumer, a filesystem watcher, a serial port — without a
|
|
5
5
|
client, a socket or a callback anywhere in the graph.
|
|
6
6
|
|
package/docs/TRIGGERS.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Triggers
|
|
2
2
|
|
|
3
|
-
Axiom 0.
|
|
3
|
+
Axiom 0.17.0-alpha.1. A `TriggerDef` says **when** an action should be invoked, without
|
|
4
4
|
embedding callback code. `docs/AUTHORITY.md`
|
|
5
5
|
[§ Triggers](AUTHORITY.md#triggers) is the load-bearing statement of the execution model;
|
|
6
6
|
this file is the vocabulary.
|
package/docs/UI.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# UI
|
|
2
2
|
|
|
3
|
-
Axiom 0.
|
|
3
|
+
Axiom 0.17.0-alpha.1. Eleven semantic UI node kinds describe **what exists and what it does**.
|
|
4
4
|
How it looks is [presentation](PRESENTATION.md).
|
|
5
5
|
|
|
6
6
|
All eleven share `UIBase`:
|
package/docs/VALIDATION.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Validation
|
|
2
2
|
|
|
3
|
-
Axiom 0.
|
|
3
|
+
Axiom 0.17.0-alpha.1. Validation is authoring-time structural checking. It is not the same
|
|
4
4
|
as runtime constraint evaluation — see [`CONSTRAINTS.md`](CONSTRAINTS.md) for the four
|
|
5
5
|
layers of correctness.
|
|
6
6
|
|
package/docs/WORKFLOWS.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Durable workflows
|
|
2
2
|
|
|
3
|
-
Axiom 0.
|
|
3
|
+
Axiom 0.17.0-alpha.1. The operational contract for **long-running semantic computations with
|
|
4
4
|
a durable control position** — orchestration that survives process death, authority
|
|
5
5
|
failover, retries, timer delivery, event delivery and ordinary distributed contention
|
|
6
6
|
without application-owned infrastructure. `axiom.server.v8`.
|
|
@@ -255,7 +255,7 @@ step's argument expressions / `retry` policy, a `wait-event` step's `where` / `b
|
|
|
255
255
|
or binding migration, and none is inferred ("closest step" recovery never happens).
|
|
256
256
|
- A graph with **no** `WorkflowDef` compiles to the byte-identical `axiom.server.v1`–`v7`
|
|
257
257
|
document it always did, and its `semanticFingerprint` / `schemaFingerprint` are unchanged.
|
|
258
|
-
- Pre-`0.
|
|
258
|
+
- Pre-`0.17.0-alpha.1` instances carry a compatibility key computed before `WorkflowDef`
|
|
259
259
|
participated; a corrected authority treats them as incompatible and fails closed (these
|
|
260
260
|
are pre-freeze alpha releases — silent reinterpretation is the only unacceptable
|
|
261
261
|
outcome).
|
package/llms.txt
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Axiom
|
|
2
2
|
|
|
3
|
-
> AI-native semantic application framework, version 0.
|
|
3
|
+
> AI-native semantic application framework, version 0.17.0-alpha.1. An Axiom application is a
|
|
4
4
|
> typed semantic graph — state, behavior, constraints, UI structure, presentation and
|
|
5
5
|
> authority as structured data — executed by generic runtimes. The JavaScript, HTML and CSS
|
|
6
6
|
> that reach a browser are compiler output and are never authored or edited. The primary
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cynodia/axiom",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.17.0-alpha.1",
|
|
4
4
|
"description": "AI-native semantic web application framework.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "AskTech AS",
|
|
@@ -34,10 +34,10 @@
|
|
|
34
34
|
}
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@cynodia/axiom-core": "0.
|
|
38
|
-
"@cynodia/axiom-runtime": "0.
|
|
39
|
-
"@cynodia/axiom-compiler": "0.
|
|
40
|
-
"@cynodia/axiom-agent-api": "0.
|
|
37
|
+
"@cynodia/axiom-core": "0.17.0-alpha.1",
|
|
38
|
+
"@cynodia/axiom-runtime": "0.17.0-alpha.1",
|
|
39
|
+
"@cynodia/axiom-compiler": "0.17.0-alpha.1",
|
|
40
|
+
"@cynodia/axiom-agent-api": "0.17.0-alpha.1"
|
|
41
41
|
},
|
|
42
42
|
"scripts": {
|
|
43
43
|
"build": "tsc -b tsconfig.json"
|