Skip to content

Releases: Da7-Tech/mind

mind v6.2.10 — serializable concurrency and crash-safe recovery

Choose a tag to compare

@Da7-Tech Da7-Tech released this 12 Jul 03:39
de1736f

What changed

  • Serializes semantic graph operations under one bounded transaction lock, closing stale dream, correct, link, reopen, duplicate-remember, and concurrent-confirm races.
  • Adds a crash-recoverable prune outbox so archive and provenance records describe only committed removals and can be delivered idempotently after interruption.
  • Hardens project-file handling against symlinks, hardlinks, special files, parent swaps, and transient Windows atomic-replacement races.
  • Makes export and dream side effects consistent under concurrency, preserves concurrent signal suffixes, and merges cortex output safely.
  • Adds explicit resource ceilings for graph size, queries, history, journals, dream work, and retained artifacts.
  • Corrects CLI ambiguity, malformed history/journal handling, terminal sanitization, partial initialization, and documentation claims.

Verification

  • 267 unit and regression tests.
  • 9/9 CI jobs: Ubuntu, macOS, and Windows on Python 3.9, 3.12, and 3.14.
  • Fuzz: 420/420; multilingual: 24/24; discrimination: 12/12.
  • Soak: 15/15, 0/256, 8/8.
  • Retrieval: recall@1 1.00 at 100 and 1,000 nodes.
  • Mutation sample: 46/120 killed (38%).
  • mind.py SHA-256: 7cb64a6bb96824a6ac00d8871b889b02d57526fc9a70cf33488ae443c8bf139c.

See CHANGELOG.md for the full defect and compatibility record.

mind v6.2.9 — independent re-audit closes the stale-decision races

Choose a tag to compare

@Da7-Tech Da7-Tech released this 10 Jul 18:33
2bf6808

An independent re-audit of the v6.2.8 hardening release: one line-by-line auditor over the whole file, one differential regression hunter that first reproduced v6.2.7's defects to validate the 6.2.8 fixes, one claims-and-channels auditor, plus a full maintainer read of every file. Every headline number of 6.2.8 reproduced exactly before this release changed anything (213/213 tests, fuzz 420/420, recall@1/@5 = 1.00, multilang 24/24, discrimination 12/12, soak 15/15 & 0/256 & 7/8, mutation 39% = 47/120, published sha256 verified from the live tag).

Fixes — each reproduced red with a regression test before the change:

  • The last stale-decision races are closed. The merge keeps a per-node disk-freshness baseline (last_accessed/access_count as of our last disk read) and re-validates stale decisions against the current disk copy inside the lock: a dream computed on a stale view can no longer prune a memory another process confirmed meanwhile (the GRACE_DAYS promise now holds under concurrency), a stale decayed weight no longer min()s down a fresh confirm, and persisting a duplicate-remember confidence upgrade no longer whole-copies stale counters over a concurrent confirm — confidence merges max-wins as its own field, the way counters merge as deltas.
  • The contradiction scan flags without clobbering: an existing user link between a conflicting pair keeps its relation and earned weight.
  • recall --at normalizes compact and tz-aware forms before the lexicographic compare — --at 20260101 returned wrong-era results on Python 3.11+.
  • A hand-deleted END guard no longer costs user content: export leaves the damaged file untouched and reports it, instead of silently truncating everything after BEGIN.
  • One duplicate-remember boost number (BOOST_PER_ACCESS) on every path.
  • Prune events journal after the save, and only for prunes that actually landed.

Verification on this release: 220/220 tests, CI 9/9 on the tagged commit (Linux/macOS/Windows × 3.9/3.12/3.14), fuzz 420/420, recall@1 = recall@5 = 1.00 at 100 and 1,000 nodes, multilang 24/24, discrimination 12/12, 180-day soak 15/15 core & 0/256 stale & 7/8 hot slots, dream determinism PASS, mutation kill rate 42% (50/120) re-measured on the final file.

sha256(mind.py) = 6dda66fcdb4352fb215f0f285d356e4a110617ff7714f3bdd1d96ab85f766663

mind v6.2.8 — exhaustive hardening audit

Choose a tag to compare

@Da7-Tech Da7-Tech released this 10 Jul 07:06
8103f39

A full line-by-line audit of the code, tests, benchmarks, documentation, release metadata, and rendered presentation. Every behavioral fix was reproduced against v6.2.7 first.

Highlights:

  • concurrent edges now merge per directional pair; reinforcement deltas and once-per-day edge decay are serialized under the graph lock
  • atomic replacement uses unique O_EXCL temp files, completes short writes, fsyncs before rename, and fsyncs the directory on POSIX
  • hostile live/on-disk state, timestamps, histories, metadata, and journal reads are repaired or bounded consistently
  • why <id> scans the full journal for targeted provenance; link events belong to both endpoints; reads refuse symlinks
  • exported memories are collapsed, guard-escaped, data-labeled, and paired with explicit privacy/untrusted-content guidance
  • recall and working-memory tie-breaking are deterministic and usage-driven; CLI arity/path behavior is strict
  • the stale competitor scorecard was replaced with a neutral scope comparison based on current official documentation

Verification:

  • PR CI: 9/9 green; merged main CI: 9/9 green
  • 213/213 unit tests
  • full fuzz: 420/420
  • multilingual: 24/24; discrimination: 12/12
  • 180-day soak: 15/15 core survival, 0/256 stale junk, 7/8 hot core slots
  • mutation sample: 47/120 killed (39%), with all survivors printed for triage
  • 20/20 repeated concurrency stress rounds

mind.py sha256: b3e944ce9103bd5e353e09a12f434721cb274bc919326361039104889c6c5e03

mind v6.2.7 — Windows reader retry

Choose a tag to compare

@Da7-Tech Da7-Tech released this 06 Jul 00:38
v6.2.7
fd94d47

The closing auditor caught windows-latest 3.9 red on the 6.2.6 tag: 1 of 12 parallel CLI writers died with Errno 13 reading CLAUDE.md during a concurrent os.replace. The reader side of export_to_agents was the fourth and last member of the Windows sharing-violation family that 6.1.3 fixed for graph.json — both agent-file reads now retry, and a file vanishing mid-race reads as fresh.

CI is 9/9 green on this tag, including windows-latest 3.9 (verified before publishing this release — the lesson is learned).

mind.py sha256: c55594585f8d1dbb944e3ec56b57d6e36dc7c639ceeb0f5621f19ce45c66451b · 190 tests · mutation 45% on this file

mind v6.2.6 — final panel closure

Choose a tag to compare

@Da7-Tech Da7-Tech released this 06 Jul 00:21
v6.2.6
b84e800

Final panel round on 6.2.5: two auditors returned zero; the third caught one last LOW — the recall footer (and two init/status hints) still printed a bare python3 mind.py ..., the exact field-failure class the exported contract was fixed for in 6.2.0. Every runtime guidance string now routes through the same path resolver as the contract (regression-tested from a non-root install).

The user-journey auditor's bottom line on the original field complaint ("worked all day, memory stayed empty"): it cannot recur — absolute-path contract, self-running dream, and the no-permission rule each verified end-to-end from the live tag.

mind.py sha256: 88b46a8c98ab8c8133d853149bec3b1243d61e7d149d8352443c6a277281ead8 · 190 tests · mutation 45% measured on this file

mind v6.2.5 — distribution-channel closure

Choose a tag to compare

@Da7-Tech Da7-Tech released this 05 Jul 23:57
v6.2.5
b235e48

The panel's remaining findings were about the release view, not the code — so this release closes the channel itself:

  • The tag carries the current docs (6.2.4's two doc corrections had landed on main after the tag — readers of the released tree saw stale figures).
  • Fixtures are actually persona-free (the English alias survived the earlier Arabic-only neutralization in 7 test lines).
  • graph.json meta is whitelist-bounded — a hand-edited file can no longer grow it without bound (1000-key injection collapses to the whitelist; regression-tested).
  • Mutation kill rate measured on this exact file as the last pre-tag step: 45% (the deterministic sample re-draws on every code change).

Scope notes, stated plainly: branch protection intentionally has no required PR reviews / enforce_admins (solo-maintainer repo — the 9-job strict matrix is the real guard), and PR #56859 referenced in past notes lives in NousResearch/hermes-agent, not here.

mind.py sha256: bddfd7459f78ad08513646a056961df593111c16e6def70737a2723fffd9afb3 · 189 tests

mind v6.2.4 — panel round 2

Choose a tag to compare

@Da7-Tech Da7-Tech released this 05 Jul 22:15
v6.2.4
52dd5cc

Second panel round: three fresh auditors re-broke every v6.2.3 fix and cross-examined all round-1 claims — two returned zero findings (all fixes held: concurrent poison injection, malformed markers, SIGKILL storms, live-tag field simulation end-to-end), one found a LOW display issue, fixed here:

  • Correction fusion no longer inherits supersession-transition edges: after an A→B→C→A chain, why B showed two "superseded-by" edges, contradicting its own superseded_by field. Transition edges mark one pair's state change and stay with that pair. recall/entity/validity were never affected — but provenance must not lie.

mind.py sha256: e1d810634e74ed39920a12e9a9012f8506faad3731f5eb6569becef01a6ca2f9 · 188 tests

mind v6.2.3 — panel round

Choose a tag to compare

@Da7-Tech Da7-Tech released this 05 Jul 21:57
v6.2.3
a52ad64

Three-auditor panel on 6.2.2 (nine methodologies total). One MEDIUM defect found and fixed: a future-dated last_edge_decay marker (clock skew / hand edit / synced graph) froze edge homeostasis forever under max-wins merging — markers are now clamped to today at load and inside the merge, decay resumes next day, no same-day compounding (regression-tested with the exact 2099 attack). Meta values hardened (printable, 64-char cap). The accepted ≤26h present-vs---at divergence is documented at the code site. Mutation kill remeasured on this release: 42% (sample re-drawn when the file changes — wording now says so). Panel also confirmed clean: 20-way concurrency exact counts, 160 SIGKILL crash injections with zero corruption, fuzz 420/420, all symlink classes contained, py3.9 AST-clean, live tag checksum match, zero identity leaks.

mind.py sha256: f6110e423a18dbb9d5f6487b9355470084505b9fb415c70876f0c3196b47230d · 187 tests

mind v6.2.2 — second-review remnants

Choose a tag to compare

@Da7-Tech Da7-Tech released this 05 Jul 21:16
v6.2.2
8ac539e

Second audit round on 6.2.1 — every remnant reproduced before fixing, each with a regression test (185 tests, all benches PASS):

  • Order-independent identity ranking: third-person assertions ("the user's name is X") earn facet keys, and co-occurrence expansion can no longer gift identity keys to non-identity facts — the filename-convention distractor can't win "what is my name" in any store order.
  • Persistent daily-decay marker (meta.last_edge_decay in graph.json, max-wins merge) — deleting the day's dream journal no longer re-applies edge decay.
  • Clean reopen: postgres → sqlite → postgres no longer leaves the live fact wearing a stale "superseded-by" edge.
  • Symmetric clock-skew tolerance for valid_to on present-time checks.
  • signals.jsonl parent-chain check; neutral fixtures; scoped wording.

mind.py sha256: 60ddc63f8f5740aac50bafa5e1ccf1e0ade0218b874e9797e24b6119aeecc141

mind v6.2.1 — fifth audit round

Choose a tag to compare

@Da7-Tech Da7-Tech released this 05 Jul 20:40
v6.2.1
ae97610

Two independent external audits of 6.2.0 — every claim reproduced-or-refuted before acting (one claim refuted by measurement: CONCEPT_SEED has 83 entries as documented, not 44). All confirmed findings fixed with regression tests (180 tests):

  • Identity facets: a stored first-person fact earned ALL identity keys, so "my city is Riyadh" outranked the user's actual name on "what is my name". Facts and facet-naming queries now earn only the facets they state; facet-less queries (who am I) still reach every identity fact.
  • Edge homeostasis is once per calendar day — auto-dream can cycle several times a day, and per-cycle decay compounded fast enough to prune healthy edges in days instead of the documented ~45 nights.
  • Clock-skew tolerance (26 h) in present-time validity: naive local timestamps synced from a machine east of yours no longer hide a fresh fact until midnight; --at history stays literal.
  • The last unhardened append closed: signals.jsonl now uses O_NOFOLLOW+O_APPEND like every other write path; permanence-bearing appends (provenance journal, archive, dream journal) fsync.
  • Governance: private vulnerability reporting actually enabled, branch protection requires all 9 CI jobs (strict), code of conduct + issue/PR templates.
  • Docs precision: ~2,600 lines, mutation kill rate remeasured live at 44%, agent-support claims scoped to the enumerated list.

mind.py sha256: faccb80fdb926e3486151fb312b8cccffaf503d48790c1876dd6cd74b55a5c6c