synartesis 0.5.0 → 0.5.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/CHANGELOG.md CHANGED
@@ -2,6 +2,37 @@
2
2
 
3
3
  What changed, and why it mattered. Dates are release dates.
4
4
 
5
+ ## 0.5.1 — 2026-09-10
6
+
7
+ ### Changed
8
+
9
+ - **The journal is back to `synchronous = NORMAL`, reverting 0.5.0.** The
10
+ argument for FULL was right and the measurement behind it was taken on the
11
+ wrong machine.
12
+
13
+ This proxy commits three times per tool call — the pending row, the snapshot,
14
+ and the outcome — and under FULL each commit is an fsync that has to reach the
15
+ platter. On the NVMe it was benchmarked on, that is microseconds, and the
16
+ change looked free: 0.0246 ms per write against 0.0594. On a CI runner, a
17
+ container, or anything with networked storage an fsync is tens of
18
+ milliseconds, and three of them put the proxy's p95 overhead at **132 ms
19
+ against a 10 ms budget**. CI caught it on the release that shipped it, having
20
+ been green on every commit before.
21
+
22
+ The three commits cannot be collapsed into one: the snapshot has to be durable
23
+ *before* the call goes out, which is the entire point of taking it. So the
24
+ cost is structural, and the default returns to the setting whose cost is
25
+ predictable. `SYNARTESIS_SYNC=full` asks for the fsync where it is cheap or
26
+ where the tail of the log matters more than latency.
27
+
28
+ What is given up is stated plainly: under NORMAL, a crash of the process or of
29
+ the CLI mid-undo still loses nothing, but the machine losing power can cost
30
+ the tail of the write-ahead log — and what is at that tail is the record of
31
+ calls that really happened.
32
+
33
+ The performance thresholds that caught this were left exactly where they were.
34
+ A 10 ms budget that fails at 132 ms is a budget doing its job.
35
+
5
36
  ## 0.5.0 — 2026-09-10
6
37
 
7
38
  A safety release. Two more races of the same family as 0.4.2's, one structural
@@ -340,7 +340,7 @@ function openDatabase(path) {
340
340
  db.pragma("foreign_keys = ON");
341
341
  db.pragma("busy_timeout = 5000");
342
342
  db.pragma(
343
- process.env["SYNARTESIS_SYNC"]?.toLowerCase() === "normal" ? "synchronous = NORMAL" : "synchronous = FULL"
343
+ process.env["SYNARTESIS_SYNC"]?.toLowerCase() === "full" ? "synchronous = FULL" : "synchronous = NORMAL"
344
344
  );
345
345
  if (path !== ":memory:") {
346
346
  restrictToOwner(path);
@@ -1580,4 +1580,4 @@ export {
1580
1580
  observeState,
1581
1581
  connectStdioUpstream
1582
1582
  };
1583
- //# sourceMappingURL=chunk-CACV6R74.js.map
1583
+ //# sourceMappingURL=chunk-DRDKIFD3.js.map
package/dist/cli.js CHANGED
@@ -27,7 +27,7 @@ import {
27
27
  toResolvedRead,
28
28
  verifyAgainstServers,
29
29
  wasRefused
30
- } from "./chunk-CACV6R74.js";
30
+ } from "./chunk-DRDKIFD3.js";
31
31
  import {
32
32
  DriftConflict,
33
33
  ManifestError,
package/dist/proxy.js CHANGED
@@ -19,7 +19,7 @@ import {
19
19
  runRead,
20
20
  toPayload,
21
21
  verifyAgainstServers
22
- } from "./chunk-CACV6R74.js";
22
+ } from "./chunk-DRDKIFD3.js";
23
23
  import {
24
24
  SnapshotError,
25
25
  UpstreamError,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "synartesis",
3
- "version": "0.5.0",
3
+ "version": "0.5.1",
4
4
  "description": "An undo layer for AI agents.",
5
5
  "type": "module",
6
6
  "private": false,