Skip to content
Merged
39 changes: 31 additions & 8 deletions ATTRIBUTION.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,43 @@ underlying memory mechanisms.

## Upstream Work

- LinOSS oscillatory state-space models: Rusch and Rus, ICLR 2025.
- MemEvolve-style memory evolution: Zhang et al., arXiv:2512.18746, 2025.
- Context Engineering neural-field and attractor framing: Context Engineering
Contributors, maintained by David Kimai, MIT.
- Hopfield-style associative memory: Hopfield 1982; Anderson 2014; Amit,
- **LinOSS oscillatory state-space models** — Rusch and Rus, ICLR 2025.
- **MemEvolve / EvolveLab framework** — Zhang et al. 2025,
[arXiv:2512.18746](https://arxiv.org/abs/2512.18746),
[bingreeky/MemEvolve](https://github.com/bingreeky/MemEvolve), Apache-2.0.
The `BaseMemoryProvider` cartridge interface and the shaping logic in
`src/elume/adapters/memevolve/shaping.py` (PII redaction, trajectory entity
extraction, response-parsing helpers) are adapted from
`dionysus_memory_provider.py` and `entity_extractor.py` in that codebase
under the Apache-2.0 license. Elume's MemEvolve adapter is original work;
the ported helpers are credited inline.

Elume's evolution module is a deterministic, replay-safe genetic algorithm
operating on immutable Strategy records through a provider boundary. The
framing — agent memory as an evolvable population rather than policy weights
— is adopted from MemEvolve. The implementation is original Elume work using
standard GA primitives.

- **Context Engineering neural-field and attractor framing** — Context
Engineering Contributors, maintained by David Kimai, MIT.
- **Hopfield-style associative memory** — Hopfield 1982; Anderson 2014; Amit,
Gutfreund, and Sompolinsky 1985.
- Source extraction history: kernel modules were extracted from `dionysus3`
- **Source extraction history** — kernel modules were extracted from `dionysus3`
and stripped of application glue such as Graphiti, FastAPI, event buses,
caches, and routing policy.

The Shannon-entropy + information-gain mechanism in
`src/elume/cognition/curiosity.py` is ported from
`api/services/mosaeic_self_discovery.py` and
`api/services/arousal_system_service.py` in the upstream `dionysus3` codebase
(the same upstream Elume's kernel was extracted from). The FastAPI, Pydantic,
and singleton patterns are stripped; the pure math is preserved.

BibTeX entries for academic sources are in [CITATIONS.bib](./CITATIONS.bib).

## Boundary

Elume ships reusable mechanism: state records, trajectory encoding, attractor
basins, LinOSS primitives, cognition gates, provider contracts, and strategy
evolution. Consumer-specific adapters and policies belong outside this package.
basins, LinOSS primitives, cognition gates, provider contracts, strategy
evolution, and (v0.2.0) the MemEvolve cartridge adapter and curiosity homing
device. Consumer-specific adapters and policies belong outside this package.
82 changes: 82 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,88 @@ All notable changes to Elume are documented here. Format loosely follows
[Keep a Changelog](https://keepachangelog.com/en/1.1.0/). Versions follow
semantic versioning once `0.1.0` ships; pre-alpha releases may break anything.

## [0.2.0] — 2026-05-04 — MemEvolve cartridge + curiosity homing device

v0.2.0 ships the MemEvolve cartridge (`elume.adapters.memevolve.ElumeMemoryProvider`)
— the first deterministic baseline in EvolveLab's `--memory_provider` list — plus
the curiosity homing device (`elume.cognition.curiosity` + `cognition.curiosity_score`
envelope op) and the hyperevolution coupling that lets curiosity continuously
re-acquire the search heading inside MemEvolve's loop. Empirical A/B signal:
4 of 5 retrieval steps re-rank between `curiosity=False` and `curiosity=True`
on the synthetic fixture (seed=42).

### Added — Track 023: MemEvolve Cartridge (Fleet B, planned-in-progress)

- `elume.adapters.memevolve.ElumeMemoryProvider` — a fully conformant
`BaseMemoryProvider` implementation backed by Elume's `AttractorBasin`,
`HopfieldNetwork`, `BeliefEmbedder`, `LinOSSEncoder`, and `InMemoryProvider`.
- `encode.py` — deterministic query-to-pattern encoding (fixed seed, same
inputs → byte-equal pattern).
- `retrieve.py` — basin recall with normalized overlap scoring, top-k ranking,
score in [-1, 1].
- `ingest.py` — trajectory ingestion: encode steps, PII sanitize, store basins.
- `shaping.py` — ported helpers from bingreeky/MemEvolve (Apache-2.0):
`PHASE_MEMORY_TYPES`, `parse_basins_to_memory_items`, `make_cache_key`,
`cached_memories_to_response`, `sanitize_pii`, `extract_trajectory_entities`.
HTTP/HMAC transport stripped.
- `records.py` — frozen `MemoryRecord` dataclass with write-protected embedding
and read-only metadata mapping.
- Per-instance RNG injected at `initialize()` from `config["seed"]` — no
module-level global.
- Consumer guide: `docs/adapters/memevolve.md`.

### Added — Track 024: Curiosity Homing Device (Fleet B, planned-in-progress)

- `elume.cognition.curiosity`:
- `CuriosityScore` — frozen dataclass: `information_gain`, `epistemic_value`,
`coverage_bonus`, `difficulty_bonus`, `target_id`.
- `shannon_entropy(distribution) -> float` — log_2 entropy with stable
zero-probability handling.
- `score_thought_curiosity(thought, belief_state, related_basins, difficulty)
-> CuriosityScore` — pure deterministic information-gain scoring, no RNG.
- `curiosity_prior(score, *, boost_lambda, threshold) -> PriorConstraint | None`
— converts score above threshold into a soft BOOST prior.
- `select_highest_curiosity(candidates, belief_state) -> tuple[ThoughtSeed,
CuriosityScore]` — argmax homing primitive with stable lexicographic
tie-breaking.
- `elume.envelope.ops.curiosity_score` — envelope operation
`cognition.curiosity_score` enabling deterministic replay of curiosity
computations inside Archon harnesses.
- Ported from dionysus3 `CuriosityDriveService` (`mosaeic_self_discovery.py:300-443`)
and `arousal_system_service.py:44-143` — FastAPI/Pydantic/singletons stripped.

### Added — Track 025: Hyperevolution Wiring (Fleet B, planned-in-progress)

- `ElumeMemoryProvider` gains `curiosity: bool = False` config flag.
- Retrieval bias: with `curiosity=True`, basin scores are re-ranked by
`score * (1 + boost_lambda * normalized_curiosity(basin_id, belief_state))`.
- Ingestion belief update: `take_in_memory` updates curiosity belief state from
`trajectory_data.metadata["is_correct"]` + retrieved basin IDs.
- `BeliefBuffer` — per-session-id internal curiosity state, isolated across
parallel benchmark runs.
- Mechanical A/B: `curiosity=False` (default) is zero-overhead and byte-identical
to the Track 023 baseline.

### Added — Docs and attribution updates

- `docs/archon-readiness/22-curiosity-determinism.md` — why curiosity is
deterministic, per-adapter-instance RNG policy, envelope-op replay contract,
session isolation via `BeliefBuffer`.
- `docs/adapters/memevolve.md` — consumer-facing install guide: why, install,
two-line MemEvolve registration, drop-in adapter, benchmark invocation,
hyperevolution mode, determinism guarantee, config reference, attribution.
- `docs/posts/v0.2.0-launch.md` — public announcement post.
- `conductor/tracks/023-memevolve-cartridge/` — Track 023 spec and plan.
- `conductor/tracks/024-curiosity-homing/` — Track 024 spec and plan.
- `conductor/tracks/025-hyperevolution-wiring/` — Track 025 spec and plan.
- `ATTRIBUTION.md` — corrected MemEvolve attribution (no longer "MemEvolve-style"
hedge); added dionysus3 curiosity-engine credit; separated substrate vs.
front-end roles explicitly.
- `CITATIONS.bib` — added `@misc{memevolve-github}` Apache-2.0 repo entry.
- `README.md` — dropped "MemEvolve-style" wording; added corrected attribution
paragraph, "Why Elume" section, MemEvolve cartridge section, `adapters/` in
layout, twenty-five tracks status.

## [0.1.0] — 2026-05-04 — First public release

First public-ready snapshot. 21 tracks landed, 1045 tests passing, ruff
Expand Down
16 changes: 16 additions & 0 deletions CITATIONS.bib
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,22 @@ @misc{context-engineering
url = {https://github.com/davidkimai/context-engineering}
}

@misc{memevolve-github,
author = {Zhang, Guibin and Ren, Haotian and Zhan, Chong and
Zhou, Zhenhong and Wang, Junhao and Zhu, He and
Zhou, Wangchunshu and Yan, Shuicheng},
title = {{MemEvolve}: {EvolveLab} — Meta-Evolutionary Framework for
Agent Memory Systems},
year = {2025},
publisher = {GitHub},
url = {https://github.com/bingreeky/MemEvolve},
note = {Apache-2.0 license. The \texttt{BaseMemoryProvider} interface
and shaping helpers (\texttt{dionysus\_memory\_provider.py},
\texttt{entity\_extractor.py}) are adapted in
\texttt{elume.adapters.memevolve} with HTTP/HMAC transport
stripped. Pinned to commit 6f9c0a2 (2025-12-23).}
}

@misc{zhang2025memevolvemetaevolutionagentmemory,
title = {MemEvolve: Meta-Evolution of Agent Memory Systems},
author = {Guibin Zhang and Haotian Ren and Chong Zhan and
Expand Down
Loading
Loading