graphddb 0.7.8 → 0.7.10

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.
@@ -209,7 +209,7 @@ so the output is stable across runs.
209
209
 
210
210
  ```ts
211
211
  interface OperationsDocument {
212
- readonly version: '1.1';
212
+ readonly version: '1.1' | '1.2';
213
213
  readonly queries: Record<string, QuerySpec>;
214
214
  readonly commands: Record<string, CommandSpec>;
215
215
  readonly transactions?: Record<string, TransactionSpec>;
@@ -218,6 +218,22 @@ interface OperationsDocument {
218
218
  }
219
219
  ```
220
220
 
221
+ **Spec version `1.2` — SCP Expression IR (issue #261, conditional stamping).**
222
+ `1.2` adds the behavior-contracts Expression IR vocabulary
223
+ (`expression-ir.md` §2) to the operations document: a sixth write-condition
224
+ variant `{ kind: 'scpExpr', expression: { exprVersion: 1, expr } }`, and a
225
+ `guard: { exprVersion: 1, expr }` slot on transaction items and contract
226
+ command methods (beside the legacy `when`). The expression payload is stored in
227
+ **canonical form** (key-sorted in code-point order; `{int:"…"}` /
228
+ `{float:n}` literal wrapping per expression-ir.md §2.3). The stamp is
229
+ **conditional**: only a document that actually *contains* an SCP node is
230
+ stamped `1.2` — every SCP-free document keeps `1.1` and serializes
231
+ byte-identically. Runtimes keep `SPEC_VERSION_SUPPORTED = "1.1"` until their
232
+ expression *evaluation* lands (Phase 3 S5/S6/S7 — #265/#266/#267), so an
233
+ expression-bearing document is loud-rejected everywhere in the meantime
234
+ (fail-closed, never a silently-skipped guard). The manifest never carries
235
+ expression vocabulary and always stays `1.1`.
236
+
221
237
  #### Parameter specs
222
238
 
223
239
  Every operation carries a `params` map of `ParamSpec`:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "graphddb",
3
- "version": "0.7.8",
3
+ "version": "0.7.10",
4
4
  "description": "Graph data modeling on DynamoDB with adjacency list pattern",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -53,6 +53,7 @@
53
53
  "test:py": "python3 -m pytest python/tests -m \"not integration\"",
54
54
  "test:py:integration": "python3 -m pytest python/tests -m integration",
55
55
  "test:conformance": "tsx conformance/run.ts",
56
+ "test:vectors": "tsx conformance/vectors-run.ts",
56
57
  "validate:cfn": "node scripts/validate-cfn.mjs",
57
58
  "gen:cli": "cli-contracts generate",
58
59
  "gen:cli:check": "cli-contracts generate --dry-run",
@@ -67,6 +68,10 @@
67
68
  "embedoc:watch": "embedoc watch",
68
69
  "embedoc:generate": "embedoc generate --all",
69
70
  "embedoc:check": "node scripts/embedoc-drift-check.mjs",
71
+ "vendor:bc-php": "node scripts/vendor-behavior-contracts-php.mjs",
72
+ "vendor:bc-php:check": "node scripts/vendor-behavior-contracts-php.mjs --check",
73
+ "vendor:bc-vectors": "node scripts/vendor-behavior-contracts-vectors.mjs",
74
+ "vendor:bc-vectors:check": "node scripts/vendor-behavior-contracts-vectors.mjs --check",
70
75
  "bench:crosslang": "tsx benchmark/crosslang/run.ts",
71
76
  "bench:crosslang:integration": "tsx benchmark/crosslang/integration.ts",
72
77
  "bench:crosslang:test": "vitest run benchmark/crosslang/__tests__"
@@ -135,6 +140,7 @@
135
140
  },
136
141
  "license": "MIT",
137
142
  "dependencies": {
143
+ "behavior-contracts": "0.1.3",
138
144
  "commander": "^15.0.0",
139
145
  "handlebars": "^4.7.9"
140
146
  },