Skip to content

Release/0.5.44 - #496

Merged
StevenBtw merged 72 commits into
mainfrom
release/0.5.44
Sep 29, 2026
Merged

StevenBtw merged 72 commits into
mainfrom
release/0.5.44

Conversation

@StevenBtw

@StevenBtw StevenBtw commented Sep 27, 2026 •

Copy link
Copy Markdown
Collaborator

Summary by cubic

Releases the 0.5.44 stabilization release, synced with main via a backmerge. Fixes silent wrong query results, crashes, and data-loss edge cases: a commit that fails with a write-write conflict aborts the transaction, an interrupted checkpoint no longer corrupts the database, and checkpoints after compact() no longer drop schema, indexes, or RDF data. Adds a CHANGELOG heads-up that 0.5.45 changes the on-disk format — it migrates automatically on first open, after which 0.5.44 and older can no longer open the database.

Bug Fixes

  • Checkpoints write the new state to a <file>.checkpoint sidecar and copy it over the database only once complete, so a failed checkpoint leaves the last good state readable and the next open finishes an interrupted one; a checkpoint needs free disk space for a second copy while it runs.
  • Checkpoints after compact() write the complete state so schema, indexes, and RDF data survive a reopen; periodic and close() checkpoints previously left them out.
  • Incremental backups no longer miss writes made while they run and leave the WAL untouched when idle.
  • Direct writes outside a transaction are durable when each call returns, and batches apply completely or not at all.
  • Edges no longer appear twice after reopening a checkpointed .grafeo database that wasn't closed cleanly; WAL-directory databases are locked against a second open, and wal_checkpoint() no longer deletes uncheckpointed WAL files.
  • Multi-label node patterns require all labels in Cypher, GQL, and SQL-PGQ; variable-length edge property maps apply to every hop; shortestPath()/allShortestPaths() honor hop bounds; all()/any() and path comprehensions resolve properties; GQL INSERT creates unlabeled endpoints and reuses matched nodes; Time compares by UTC instant; Python aware datetimes roundtrip at year 1–9999; long ^/-/+ chains fail with a nesting-depth error; property and vector index cleanup after deletes and rollbacks is fixed, including labels with :.
  • A transaction's WAL records are logged as one contiguous group, so a crash mid-commit can't leave torn records a later commit marker would wrongly commit.
  • Schema (DDL) changes survive WAL replay; unknown WAL record kinds fail the open instead of being guessed.
  • Commit and rollback walk a per-transaction change log, so their cost no longer grows with database size.
  • Dotted access into map-valued properties (n.meta.route) resolves in both GQL and Cypher.

New Features

  • db.graph(name) returns a handle that works in one named graph without switching the database's current graph, in the engine and the Python binding.
  • Python bindings expose features() and build_info() (version, git commit, dirty, features, profile); Louvain results are deterministic.
  • Direct write APIs now run as one transaction each through a GraphWriter: checked against constraints and types, versioned, WAL-logged, and CDC-reported, on the selected graph, returning Result; UNIQUE checks see the transaction's own writes, and CDC folds a created entity's property changes into its create event.
  • Breaking (Rust API): RdfPlanner::with_wal is no longer public, and the mutation operators write through a GraphWriter.

Also adds repository policy checks (scripts/check_policy.py) as a required CI gate covering the repository tree, diffs, and pull request eligibility, plus pre-commit hooks that reject AI co-author and Generated with commit-message lines; the PR template now requires declaring AI tools used. Adds an Epic issue template, switches issue templates to issue types, refreshes the Discord invite link, rewrites the roadmap to per-release milestones, and updates the feature-profiles doc. Bumps the Rust dependency group (16 crates, including parquet to 60 and regex to 1.13), pytest-benchmark to >=5.3.0, and GitHub Actions setup-node/setup-go to v7, sccache-action to 0.0.11, typos to 1.50.3, and rust-toolchain to 1.120.0 (now ignored by dependabot).

Written for commit dd52fe5. Summary will update on new commits.

Review in cubic

Closes #411
Closes #395
Closes #417
Closes #509
Closes #418
Closes #511
Closes #513
Closes #514

Closes #424

Closes #420
Closes #421

Closes #344

Closes #405
Closes #409
Closes #419
Closes #422
Closes #410

Closes #454
Closes #356

Closes #526
Closes #460

Closes #462

@cubic-dev-ai cubic-dev-ai Bot left a comment •

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

1 issue found across 29 files

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name=".github/ISSUE_TEMPLATE/bug_report.yml">

<violation number="1" location=".github/ISSUE_TEMPLATE/bug_report.yml:4">
P3: This swap silently drops the automatic `bug` label from filed bug reports: GitHub issue types don't create or apply labels, so triage that filters on `label:bug` will stop catching new issues. `epic.yml` and `feature_request.yml` show the deliberate `type`-only pattern, but this is the only template that had a label, so confirm the removal is intentional or keep both keys.</violation>
</file>

Reply with feedback, questions, or to request a fix.

Re-trigger cubic

Comment thread crates/grafeo-common/src/types/time.rs Outdated
Comment thread crates/grafeo-engine/src/query/translators/gql/pattern.rs Outdated
Comment thread crates/grafeo-core/src/graph/lpg/store/index.rs
Comment thread crates/grafeo-adapters/src/query/cypher/parser.rs
Comment thread crates/grafeo-engine/src/query/translators/common.rs
Comment thread crates/bindings/python/src/types.rs
Comment thread tests/spec/lpg/gql/15.1_insert.gtest
description: Report a bug in Grafeo
title: "[Bug]: "
labels: ["bug"]
type: Bug

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P3: This swap silently drops the automatic bug label from filed bug reports: GitHub issue types don't create or apply labels, so triage that filters on label:bug will stop catching new issues. epic.yml and feature_request.yml show the deliberate type-only pattern, but this is the only template that had a label, so confirm the removal is intentional or keep both keys.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At .github/ISSUE_TEMPLATE/bug_report.yml, line 4:

<comment>This swap silently drops the automatic `bug` label from filed bug reports: GitHub issue types don't create or apply labels, so triage that filters on `label:bug` will stop catching new issues. `epic.yml` and `feature_request.yml` show the deliberate `type`-only pattern, but this is the only template that had a label, so confirm the removal is intentional or keep both keys.</comment>

<file context>
@@ -1,7 +1,7 @@
 description: Report a bug in Grafeo
 title: "[Bug]: "
-labels: ["bug"]
+type: Bug
 body:
   - type: textarea
</file context>
Suggested change
type: Bug
type: Bug
labels: ["bug"]

Comment thread tests/spec/regression/edge_cases.gtest Outdated
Comment thread crates/grafeo-engine/tests/index_after_delete.rs Outdated

@cubic-dev-ai cubic-dev-ai Bot left a comment •

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All reported issues were addressed across 1 file (changes from recent commits).

Reply with feedback, questions, or to request a fix.

Re-trigger cubic

Comment thread docs/roadmap.md

@cubic-dev-ai cubic-dev-ai Bot left a comment •

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

1 issue found across 1 file (changes from recent commits).

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="docs/architecture/feature-profiles.md">

<violation number="1" location="docs/architecture/feature-profiles.md:209">
P3: The `(standalone)` label is inaccurate: `compact-store` is already part of the WASM binding's `edge` profile (`edge = ["grafeo-engine/lpg", "gql", "compact-store", "grafeo-engine/regex-lite"]` in crates/bindings/wasm/Cargo.toml) and, since WASM's default is `browser = ["edge"]`, WASM users get it by default. It is also bundled in `embedded` in the Python/Node/C binding crates. So "Add `compact-store`" under the Edge profile instructs WASM users to opt into something their default profile already enables. Drop the `(standalone)` claim and note the crate-specific wiring, or the Atom Reference and Edge guidance contradict each other.</violation>
</file>

Tip: Review your code locally with the cubic CLI to iterate faster.

Re-trigger cubic

Comment thread docs/architecture/feature-profiles.md Outdated
| `async-storage` | (standalone) | Async WAL backend (tokio) | Implemented |
| `compact-store` | Edge | Read-only columnar store | Implemented |
| `async-storage` | Enterprise | Async WAL backend (tokio) | Implemented |
| `compact-store` | (standalone) | Columnar store for read-mostly datasets | Implemented |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P3: The (standalone) label is inaccurate: compact-store is already part of the WASM binding's edge profile (edge = ["grafeo-engine/lpg", "gql", "compact-store", "grafeo-engine/regex-lite"] in crates/bindings/wasm/Cargo.toml) and, since WASM's default is browser = ["edge"], WASM users get it by default. It is also bundled in embedded in the Python/Node/C binding crates. So "Add compact-store" under the Edge profile instructs WASM users to opt into something their default profile already enables. Drop the (standalone) claim and note the crate-specific wiring, or the Atom Reference and Edge guidance contradict each other.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At docs/architecture/feature-profiles.md, line 209:

<comment>The `(standalone)` label is inaccurate: `compact-store` is already part of the WASM binding's `edge` profile (`edge = ["grafeo-engine/lpg", "gql", "compact-store", "grafeo-engine/regex-lite"]` in crates/bindings/wasm/Cargo.toml) and, since WASM's default is `browser = ["edge"]`, WASM users get it by default. It is also bundled in `embedded` in the Python/Node/C binding crates. So "Add `compact-store`" under the Edge profile instructs WASM users to opt into something their default profile already enables. Drop the `(standalone)` claim and note the crate-specific wiring, or the Atom Reference and Edge guidance contradict each other.</comment>

<file context>
@@ -229,15 +205,16 @@ The complete list of individual feature flags (Layer 2) that profiles are compos
-| `async-storage` | (standalone) | Async WAL backend (tokio) | Implemented |
-| `compact-store` | Edge | Read-only columnar store | Implemented |
+| `async-storage` | Enterprise | Async WAL backend (tokio) | Implemented |
+| `compact-store` | (standalone) | Columnar store for read-mostly datasets | Implemented |
 
 ### Graph Model
</file context>
Suggested change
| `compact-store` | (standalone) | Columnar store for read-mostly datasets | Implemented |
| `compact-store` | Edge (WASM) and `embedded` (Python, Node.js, C bindings); standalone in the facade crate | Columnar store for read-mostly datasets | Implemented |

Comment thread docs/architecture/feature-profiles.md Outdated
@github-actions

github-actions Bot commented Sep 27, 2026 •

Copy link
Copy Markdown

Benchmark Comparison (base vs PR)

Measured on the same runner to eliminate hardware variance.

Full results
group                                                 base                                   pr
-----                                                 ----                                   --
_memory_flush                                         1.00      0.7±0.00ns        ? ?/sec    1.00      0.7±0.00ns        ? ?/sec
adjacency_insert_1000                                 1.02     32.4±0.37µs        ? ?/sec    1.00     31.9±0.43µs        ? ?/sec
adjacency_lookup                                      1.02     70.1±1.14µs        ? ?/sec    1.00     68.5±1.12µs        ? ?/sec
brute_force_knn_1k_k10                                1.00     34.8±0.21µs        ? ?/sec    1.00     34.9±0.17µs        ? ?/sec
bump_allocate_1000                                    1.00  1089.7±13.60ns        ? ?/sec    1.03  1127.5±13.75ns        ? ?/sec
compact/edges_from_outgoing_10K                       1.02    636.9±5.61µs        ? ?/sec    1.00    626.7±6.80µs        ? ?/sec
compact/find_nodes_by_property/dict_eq/1000           1.00  1372.4±11.80ns        ? ?/sec    1.05  1436.0±21.23ns        ? ?/sec
compact/find_nodes_by_property/dict_eq/10000          1.00      9.0±0.22µs        ? ?/sec    1.00      9.0±0.14µs        ? ?/sec
compact/find_nodes_by_property/dict_eq/100000         1.01     89.0±3.00µs        ? ?/sec    1.00     88.4±1.48µs        ? ?/sec
compact/find_nodes_by_property/int_eq/1000            1.00      2.7±0.02µs        ? ?/sec    1.02      2.7±0.01µs        ? ?/sec
compact/find_nodes_by_property/int_eq/10000           1.00     23.0±0.12µs        ? ?/sec    1.00     23.1±0.37µs        ? ?/sec
compact/find_nodes_by_property/int_eq/100000          1.00    227.4±1.74µs        ? ?/sec    1.00    226.9±1.80µs        ? ?/sec
compact/find_nodes_in_range/score_gt_7/1000           1.01      5.3±0.03µs        ? ?/sec    1.00      5.3±0.05µs        ? ?/sec
compact/find_nodes_in_range/score_gt_7/10000          1.01     47.9±0.72µs        ? ?/sec    1.00     47.6±0.22µs        ? ?/sec
compact/find_nodes_in_range/score_gt_7/100000         1.00    471.6±4.85µs        ? ?/sec    1.00    471.5±4.10µs        ? ?/sec
compact/get_node_property_10K                         1.01    243.0±4.68µs        ? ?/sec    1.00    241.5±4.38µs        ? ?/sec
compact/nodes_by_label_100K                           1.01     18.1±0.18µs        ? ?/sec    1.00     17.9±0.28µs        ? ?/sec
distance/cosine_384d                                  1.00     56.3±0.58ns        ? ?/sec    1.03     58.2±0.24ns        ? ?/sec
distance/dot_product_384d                             1.00     43.5±0.15ns        ? ?/sec    1.15     50.2±0.55ns        ? ?/sec
distance/euclidean_384d                               1.00     46.6±0.11ns        ? ?/sec    1.18     55.1±0.65ns        ? ?/sec
edge_filter/regression_edge_filter_any                1.00    705.7±2.14µs        ? ?/sec    1.06    745.4±2.79µs        ? ?/sec
edge_filter/regression_edge_filter_follows            1.00    706.5±9.40µs        ? ?/sec    1.05    739.9±2.78µs        ? ?/sec
edge_filter/regression_edge_filter_single             1.00    696.4±2.49µs        ? ?/sec    1.06   739.8±10.87µs        ? ?/sec
epoch_arena_allocate_1000                             1.00      8.4±0.11µs        ? ?/sec    1.00      8.4±0.14µs        ? ?/sec
hash_index_insert_1000                                1.00     58.6±0.47µs        ? ?/sec    1.01     59.3±0.28µs        ? ?/sec
hash_index_lookup                                     1.00     13.1±0.17µs        ? ?/sec    1.00     13.1±0.19µs        ? ?/sec
hnsw_insert_500                                       1.00     41.2±0.19ms        ? ?/sec    1.00     41.1±0.14ms        ? ?/sec
hnsw_search_2k_k10                                    1.02    138.5±1.45µs        ? ?/sec    1.00    136.3±1.82µs        ? ?/sec
memory_10k_nodes_50k_edges                            1.00     47.7±1.15ms        ? ?/sec    2.95    140.5±2.07ms        ? ?/sec
memory_1k_nodes_5k_edges                              1.00      3.1±0.00ms        ? ?/sec    3.87     12.1±0.05ms        ? ?/sec
memory_after_100_queries                              1.00     43.4±0.17ms        ? ?/sec    1.24     53.7±0.15ms        ? ?/sec
memory_empty_db                                       1.00     81.6±0.27µs        ? ?/sec    1.00     81.5±0.19µs        ? ?/sec
memory_vector_index_1k                                1.08    104.6±0.48ms        ? ?/sec    1.00     96.5±0.11ms        ? ?/sec
multihop/regression_1hop_1k                           1.07    426.1±2.03µs        ? ?/sec    1.00    400.1±1.66µs        ? ?/sec
multihop/regression_1hop_5k                           1.05      2.3±0.02ms        ? ?/sec    1.00      2.2±0.01ms        ? ?/sec
multihop/regression_2hop_1k                           1.04    450.6±1.64µs        ? ?/sec    1.00    432.6±1.53µs        ? ?/sec
multihop/regression_3hop_1k                           1.05    529.1±4.98µs        ? ?/sec    1.00    503.2±1.94µs        ? ?/sec
multihop/regression_fan_out_5k                        1.00      4.8±0.13ms        ? ?/sec    1.02      4.9±0.14ms        ? ?/sec
object_pool_get_put_1000                              1.01      2.3±0.02µs        ? ?/sec    1.00      2.3±0.02µs        ? ?/sec
product_quantization/asymmetric_distance_128d_pq8     1.00     53.7±0.73µs        ? ?/sec    1.00     53.9±1.27µs        ? ?/sec
product_quantization/build_distance_table_128d_pq8    1.01     53.9±1.12µs        ? ?/sec    1.00     53.6±0.30µs        ? ?/sec
product_quantization/distance_with_table_pq8          1.14      6.0±0.11ns        ? ?/sec    1.00      5.3±0.10ns        ? ?/sec
product_quantization/quantize_128d_pq8                1.00     23.2±0.26µs        ? ?/sec    1.03     23.9±0.41µs        ? ?/sec
product_quantization/train_500x128_pq8                1.25     58.5±0.10ms        ? ?/sec    1.00     46.6±0.21ms        ? ?/sec
query_1hop_pattern                                    1.08    443.9±3.39µs        ? ?/sec    1.00    411.9±4.45µs        ? ?/sec
query_2hop_pattern                                    1.01    446.6±6.50µs        ? ?/sec    1.00    444.1±3.56µs        ? ?/sec
query_count_all                                       1.00     47.3±0.53µs        ? ?/sec    1.02     48.4±0.45µs        ? ?/sec
query_fan_out_expand_1k                               1.00    856.0±7.33µs        ? ?/sec    1.03   884.7±10.28µs        ? ?/sec
query_filter_range                                    1.00    381.9±2.81µs        ? ?/sec    1.01    387.4±3.30µs        ? ?/sec
query_insert_single_node                              75.86 947.4±185.16µs        ? ?/sec    1.00     12.5±0.57µs        ? ?/sec
query_node_lookup_by_property                         1.02    405.4±3.81µs        ? ?/sec    1.00    397.0±3.92µs        ? ?/sec
rdf_chain_join                                        1.00    396.8±2.48µs        ? ?/sec    1.00    396.6±2.34µs        ? ?/sec
rdf_count_all                                         1.00    163.2±2.12µs        ? ?/sec    1.07    174.3±2.55µs        ? ?/sec
rdf_filter_string                                     1.00    304.0±3.89µs        ? ?/sec    1.00    303.1±5.06µs        ? ?/sec
rdf_insert_single_triple                              1.01      4.3±1.38ms        ? ?/sec    1.00      4.3±1.24ms        ? ?/sec
rdf_join_chain_10k                                    1.00      5.7±0.33ms        ? ?/sec    1.10      6.2±0.52ms        ? ?/sec
rdf_join_chain_2hop_10k                               1.03     13.3±0.44ms        ? ?/sec    1.00     13.0±0.62ms        ? ?/sec
rdf_join_optional_10k                                 1.05     12.4±0.61ms        ? ?/sec    1.00     11.8±0.49ms        ? ?/sec
rdf_join_star_2_10k                                   1.04     18.0±0.86ms        ? ?/sec    1.00     17.2±0.62ms        ? ?/sec
rdf_join_star_3_10k                                   1.07     33.6±1.77ms        ? ?/sec    1.00     31.5±0.60ms        ? ?/sec
rdf_join_star_4_10k                                   1.00     41.4±1.76ms        ? ?/sec    1.00     41.5±1.49ms        ? ?/sec
rdf_optional_pattern                                  1.00    867.2±8.33µs        ? ?/sec    1.01   874.5±14.95µs        ? ?/sec
rdf_single_pattern_lookup                             1.02      4.5±0.07µs        ? ?/sec    1.00      4.4±0.15µs        ? ?/sec
rdf_star_join_2pattern                                1.00  1121.0±11.57µs        ? ?/sec    1.01  1126.9±10.31µs        ? ?/sec
rdf_star_join_3pattern                                1.00      2.1±0.01ms        ? ?/sec    1.00      2.1±0.01ms        ? ?/sec
repeated/regression_repeat_cached_500                 1.00    201.4±0.52ms        ? ?/sec    1.00    201.7±0.37ms        ? ?/sec
repeated/regression_repeat_unique_100                 1.01     40.9±0.09ms        ? ?/sec    1.00     40.3±0.11ms        ? ?/sec
repeated/regression_repeat_unique_500                 1.01    202.2±0.33ms        ? ?/sec    1.00    200.7±0.83ms        ? ?/sec
scalar_quantization/distance_u8_384d                  1.00    589.2±2.45ns        ? ?/sec    1.00    589.1±2.51ns        ? ?/sec
scalar_quantization/quantize_384d                     1.00    351.8±4.96ns        ? ?/sec    1.00    352.6±4.72ns        ? ?/sec
scalar_quantization/train_1000x384                    1.00    129.4±2.44µs        ? ?/sec    1.01    130.2±1.72µs        ? ?/sec
snapshot_export_50n_100e                              1.00     95.5±1.36µs        ? ?/sec    1.00     95.6±0.73µs        ? ?/sec
snapshot_import_50n_100e                              1.00    235.1±3.80µs        ? ?/sec    1.01    236.9±1.41µs        ? ?/sec
snapshot_roundtrip_50n_100e                           1.00    346.6±3.78µs        ? ?/sec    1.02    351.9±3.07µs        ? ?/sec
value_decode_mixed_6                                  1.00    297.9±1.71ns        ? ?/sec    1.00    297.1±3.54ns        ? ?/sec
value_encode_mixed_6                                  1.00    196.6±1.01ns        ? ?/sec    1.01    197.7±1.82ns        ? ?/sec

Performance regressions

Benchmark Regression Threshold
memory_10k_nodes_50k_edges +195.0% 15%
memory_1k_nodes_5k_edges +287.0% 15%
memory_after_100_queries +24.0% 15%

@codspeed

codspeed Bot commented Sep 27, 2026 •

Copy link
Copy Markdown
Contributor

Merging this PR will not alter performance

✅ 70 untouched benchmarks


Comparing release/0.5.44 (dd52fe5) with main (8295a54)1

Open in CodSpeed

Footnotes

  1. No successful run was found on main (dd52fe5) during the generation of this report, so 8295a54 was used instead as the comparison base. There might be some changes unrelated to this pull request in this report. ↩

@cubic-dev-ai cubic-dev-ai Bot left a comment •

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All reported issues were addressed across 6 files (changes from recent commits).

Tip: Review your code locally with the cubic CLI to iterate faster.

Re-trigger cubic

Comment thread docs/user-guide/persistence/persistent.md Outdated
Comment thread docs/user-guide/persistence/persistent.md Outdated
Comment thread crates/grafeo-engine/tests/database_lock.rs Outdated
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 4 to 7.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](actions/setup-node@v4...v7)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Updates the requirements on [pytest-benchmark](https://github.com/ionelmc/pytest-benchmark) to permit the latest version.
- [Release notes](https://github.com/ionelmc/pytest-benchmark/releases)
- [Changelog](https://github.com/ionelmc/pytest-benchmark/blob/master/CHANGELOG.rst)
- [Commits](ionelmc/pytest-benchmark@v5.2.3...v5.3.0)

---
updated-dependencies:
- dependency-name: pytest-benchmark
  dependency-version: 5.3.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [crate-ci/typos](https://github.com/crate-ci/typos) from 1.48.0 to 1.50.3.
- [Release notes](https://github.com/crate-ci/typos/releases)
- [Changelog](https://github.com/crate-ci/typos/blob/main/CHANGELOG.md)
- [Commits](crate-ci/typos@v1.48.0...v1.50.3)

---
updated-dependencies:
- dependency-name: crate-ci/typos
  dependency-version: 1.50.3
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [mozilla-actions/sccache-action](https://github.com/mozilla-actions/sccache-action) from 0.0.10 to 0.0.11.
- [Release notes](https://github.com/mozilla-actions/sccache-action/releases)
- [Commits](Mozilla-Actions/sccache-action@v0.0.10...v0.0.11)

---
updated-dependencies:
- dependency-name: mozilla-actions/sccache-action
  dependency-version: 0.0.11
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
StevenBtw and others added 18 commits September 28, 2026 18:26
added a warning to CHANGELOG.md for format change
- direct writes after use_graph("unknown") are logged for the graph
  they went to; WAL buffer flushes keep push order
- incremental backups with nothing new no longer leave empty WAL
  files; no checkpoint timer on a compacted read-only database;
  compacted checkpoint headers count the base
- GQL INSERT treats MERGE variables as bound
- tests that did not test their claim, persistence and feature
  profile docs, DDL replay logs skipped records
@StevenBtw
StevenBtw added this pull request to stack #521 September 29, 2026 11:18
@StevenBtw
StevenBtw removed this pull request from stack #521 September 29, 2026 11:56
StevenBtw and others added 8 commits September 29, 2026 13:56
review findings for 0.5.44 related PR's
The direct write methods on GrafeoDB and Session (create_node, create_edge,
set and remove property, add and remove label, delete, batch creates) now
run as one transaction each through Session::write and the GraphWriter:
checked against constraints and types, versioned, logged to the WAL,
reported to CDC, on the selected graph, and they return Result.

- UNIQUE checks see the transaction's own writes
- CDC folds property changes of entities created in the same transaction
  into their create event; label events read labels through the transaction
- every commit syncs the root store epoch
- bindings pass the errors through; tests, benches and examples updated
@StevenBtw
StevenBtw merged commit 22d39f2 into main Sep 29, 2026
27 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment