@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 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.16.0-alpha.3`.
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.16.0-alpha.3`.
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.16.0-alpha.3. An action is behavior expressed as data, executed as a transaction.
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
@@ -1,6 +1,6 @@
1
1
  # Agent API
2
2
 
3
- Axiom 0.16.0-alpha.3. The machine-facing interface. Agents query semantics and apply
3
+ Axiom 0.17.0-alpha.1. The machine-facing interface. Agents query semantics and apply
4
4
  structural transformations; they never edit generated code.
5
5
 
6
6
  ```ts
@@ -1,6 +1,6 @@
1
1
  # Agent reference
2
2
 
3
- Axiom 0.16.0-alpha.3. Compressed operational contract. Read this plus the `.d.ts`
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
@@ -1,6 +1,6 @@
1
1
  # Anti-patterns
2
2
 
3
- Axiom 0.16.0-alpha.3. Each of these compiles. Each is wrong. Each is followed by the correct
3
+ Axiom 0.17.0-alpha.1. Each of these compiles. Each is wrong. Each is followed by the correct
4
4
  alternative.
5
5
 
6
6
  ## 1. Field names as entity runtime keys
package/docs/AUTHORITY.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Authority
2
2
 
3
- Axiom 0.16.0-alpha.3. How an application crosses the trust boundary.
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
  ```
@@ -1,6 +1,6 @@
1
1
  # Authorization
2
2
 
3
- Axiom 0.16.0-alpha.3. The operational contract for **authorization completeness** — the 0.15
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`
@@ -1,6 +1,6 @@
1
1
  # Constraints
2
2
 
3
- Axiom 0.16.0-alpha.3. Two constructs, answering different questions. They are not
3
+ Axiom 0.17.0-alpha.1. Two constructs, answering different questions. They are not
4
4
  interchangeable.
5
5
 
6
6
  | | Question | Sees |
@@ -1,6 +1,6 @@
1
1
  # Distributed authority
2
2
 
3
- *This document describes Axiom `0.16.0-alpha.3`.*
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.16.0-alpha.3. External effects are not rollback-capable state mutations. This file
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.16.0-alpha.3. An event is a typed fact — something that happened — never work
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
@@ -1,6 +1,6 @@
1
1
  # Expressions
2
2
 
3
- Axiom 0.16.0-alpha.3. An expression describes **what value is computed**. It is a tree of
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
 
@@ -1,6 +1,6 @@
1
1
  # Graph model
2
2
 
3
- Axiom 0.16.0-alpha.3. The `ApplicationGraph` is the authoritative representation of an
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
 
@@ -1,6 +1,6 @@
1
1
  # Integrations
2
2
 
3
- Axiom 0.16.0-alpha.3. How an application declares and calls an external system, without
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
 
@@ -1,6 +1,6 @@
1
1
  # Realtime — live canonical queries
2
2
 
3
- Axiom 0.16.0-alpha.3. The operational contract for **observing a `QueryDef` result over
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
@@ -1,6 +1,6 @@
1
1
  # Locations
2
2
 
3
- Axiom 0.16.0-alpha.3.
3
+ Axiom 0.17.0-alpha.1.
4
4
 
5
5
  ```text
6
6
  Expression = a value
@@ -1,6 +1,6 @@
1
1
  # Schema evolution & semantic migrations
2
2
 
3
- Axiom 0.16.0-alpha.3. The operational contract for evolving a deployed application's
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,
@@ -1,6 +1,6 @@
1
1
  # Presentation
2
2
 
3
- Axiom 0.16.0-alpha.3. Presentation is **semantic UX intent**, expressed as data on a UI
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.16.0-alpha.3. The operational contract for demand-driven reads over authoritative
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
  # Runtime
2
2
 
3
- Axiom 0.16.0-alpha.3. The runtime executes an `ApplicationIR`. It is domain-independent: it
3
+ Axiom 0.17.0-alpha.1. The runtime executes an `ApplicationIR`. It is domain-independent: it
4
4
  contains no knowledge of any application.
5
5
 
6
6
  ## Constructing
@@ -1,6 +1,6 @@
1
1
  # Semantic contract
2
2
 
3
- Axiom 0.16.0-alpha.3. Runtime guarantees, stated formally. This file defines behavior; it
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
@@ -1,6 +1,6 @@
1
1
  # State
2
2
 
3
- Axiom 0.16.0-alpha.3. A `StateDef` is a named application value: stored, or computed from
3
+ Axiom 0.17.0-alpha.1. A `StateDef` is a named application value: stored, or computed from
4
4
  other state.
5
5
 
6
6
  ```ts
package/docs/STORAGE.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Storage and blobs
2
2
 
3
- Axiom 0.16.0-alpha.3. How an application stores, references, serves and deletes binary data —
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
 
@@ -1,6 +1,6 @@
1
1
  # Subscriptions
2
2
 
3
- Axiom 0.16.0-alpha.3. How an application receives a stream of external events — an MQTT
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.16.0-alpha.3. A `TriggerDef` says **when** an action should be invoked, without
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.16.0-alpha.3. Eleven semantic UI node kinds describe **what exists and what it does**.
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`:
@@ -1,6 +1,6 @@
1
1
  # Validation
2
2
 
3
- Axiom 0.16.0-alpha.3. Validation is authoring-time structural checking. It is not the same
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.16.0-alpha.3. The operational contract for **long-running semantic computations with
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.16.0-alpha.3` instances carry a compatibility key computed before `WorkflowDef`
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.16.0-alpha.3. An Axiom application is a
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.16.0-alpha.3",
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.16.0-alpha.3",
38
- "@cynodia/axiom-runtime": "0.16.0-alpha.3",
39
- "@cynodia/axiom-compiler": "0.16.0-alpha.3",
40
- "@cynodia/axiom-agent-api": "0.16.0-alpha.3"
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"