8000 Known issues in the current release (v2.x) · Issue #421 · project-minigraf/minigraf · GitHub
[go: up one dir, main page]

Skip to content

Known issues in the current release (v2.x) #421

Open

Description

@adityamukho

This issue lists every bug that is present in the current published release line (v2.x) and not yet fixed in a published release. It is updated whenever a known-issue is added or its fix ships. The process is in CONTRIBUTING.md.

Current release: v2.0.11 (format v7). Support policy: PHILOSOPHY.md §10.

Data integrity

Same-transaction multi-valued facts read back as one value — #371 (also #287)

  • Affected: every release from v0.6.0 through v2.0.11, including all v1.x and v2.x releases.
  • Symptom: two or more values of the same attribute for one entity written in a single transact (or retracted in a single retract) read back as one value, and which value depends on the query shape. A batched retract can leave retracted values visible.
  • Workaround: write or retract each value of a multi-valued attribute in its own transact/retract call.
  • Fix: v3.0.0 (file format v8; index keys carry the value bytes). Cannot be fixed on v2.x without a format change.

Indexes already damaged by the pre-v2.0.1 rebuild bug are not repaired — #373

A fact retracted and re-asserted in one WriteTransaction is lost at commit — #477

  • Affected: every release from v0.20.0 through v2.0.11.
  • Symptom: inside one WriteTransaction, (retract ...) of a fact followed by (transact ...) of the same fact reads as live in queries run inside the transaction, but after commit() the fact is retracted. Assert-then-retract is consistent.
  • Workaround: don't retract and re-assert the same fact in one WriteTransaction. Commit the retraction first, or leave out the retraction when the fact is asserted again.
  • Fix: v3.0.0 (the last statement that writes a fact decides it at commit). Merged on v3 in PR fix: reject empty valid-time windows; last statement wins in a transaction (#436, #477) #480.

A later assertion does not replace an earlier valid-time window of the same fact — #435

  • Affected: every release from v0.4.0 (when valid time was added) through v2.0.11.
  • Symptom: asserting a fact [e a v] that is already live, in a later transaction, keeps both valid-time windows instead of replacing the earlier one. Queries then return one identical row per assertion (for example [:find ?e ?a ?v :where [?e ?a ?v]] returns the same row twice when the fact was asserted twice, in different milliseconds, with the default valid time). A transact with :valid-to does not close an open window, so :valid-at after that date still finds the fact. Stored data is intact; only query results are affected.
  • Workaround: don't assert a fact that is already live. To change its valid time, retract it first and assert it with the new window in a later transaction.
  • Fix: v3.0.0 (each fact has exactly one current window per transaction time; a later assertion replaces the earlier window, and two windows of one fact in one transaction are rejected with API-011). Merged on v3 in PR fix: one current valid-time window per (e, a, v) (#435) #460.

Durability and recovery

save()/checkpoint() is not crash-atomic — #374

A .wal from a later checkpoint is replayed onto an older .graph — #535

  • Affected: every release from v0.5.0 (when the WAL was added) through v2.0.11, file-backed databases.
  • Symptom: opening a .graph file next to a .wal written after a later checkpoint (most often after restoring a backup .graph and leaving the current .wal in place) succeeds without an error. Transactions committed between the two checkpoints are missing, the WAL's later transactions are applied on top, and the next checkpoint makes the gap permanent.
  • Workaround: when restoring a backup, stop every process using the database, move the current .graph and .wal aside, make sure no .wal is left in the directory, then copy in the backup's .graph and, only if the backup has one, its .wal.
  • Fix: v3.0.0 (merged on v3 in PR fix(storage): refuse a WAL from a later checkpoint with STG-047 (#535) #537). Opening refuses a WAL created after a later checkpoint than the file holds, with STG-047, and leaves both files unmodified. v2.x WALs do not record a generation, so v2.x cannot detect this case; use the workaround.

Fixed in v2.0.11

These bugs are fixed in v2.0.11 (released 2026-10-26). Upgrade to v2.0.11 or later. The file format is unchanged (v7).

Fixed in v2.0.10

These bugs are fixed in v2.0.10 (released 2026-10-23). Upgrade to v2.0.10 or later. The file format is unchanged.

Fixed in v2.0.9

These bugs are fixed in v2.0.9 (released 2026-10-21). Upgrade to v2.0.9 or later. The file format is unchanged.

Fixed in v2.0.8

These bugs are fixed in v2.0.8 (released 2026-10-20). Upgrade to v2.0.8 or later. The file format is unchanged. Stored data was never affected; only query results.

Fixed in v2.0.7

Fixed in v2.0.6

These bugs are fixed in v2.0.6 (released 2026-10-14). Upgrade to v2.0.6 or later. The file format is unchanged. Stored data was never affected; only queries running on another thread while a transaction committed or a checkpoint ran.

Fixed in v2.0.5

These bugs are fixed in v2.0.5 (released 2026-10-11). Upgrade to v2.0.5 or later. The file format is unchanged.

Fixed in v2.0.4

These bugs are fixed in v2.0.4 (released 2026-10-08). Upgrade to v2.0.4 or later. The file format is unchanged.

Fixed in v2.0.3

These bugs are fixed in v2.0.3 (released 2026-10-06). Upgrade to v2.0.3 or later. The file format is unchanged.

Fixed in v2.0.2

These bugs are fixed in v2.0.2 (released 2026-09-27). Upgrade to v2.0.2 or later.


Tracker for the data-integrity work in v3.0.0: #383.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentationknown-issueBug present in a published release and not yet fixed in one; listed in the pinned known-issues issue

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions

      0