Commit Graph

546 Commits

Author SHA1 Message Date
ec8a2fc8fd [claude] Mnemosyne archive snapshots — backup and restore (#1268) (#1270) 2026-04-12 12:36:04 -04:00
d78656ca07 docs: update FEATURES.yaml with new CLI commands 2026-04-12 12:36:04 -04:00
5788925f38 test: add CLI command tests for path, touch, decay, vitality, fading, vibrant 2026-04-12 12:36:04 -04:00
ce546e0f42 fix: mnemosyne path command bug + add vitality/decay CLI commands
Closes #1266

- Fix cmd_path calling nonexistent _load() -> use MnemosyneArchive()
- Add path to dispatch dict
- Add touch, decay, vitality, fading, vibrant CLI commands
2026-04-12 12:36:04 -04:00
8a1623dbcd docs: mark memory_pulse as shipped, add memory_path feature 2026-04-12 12:36:04 -04:00
820b8635a6 test: add tests for shortest_path and path_explanation 2026-04-12 12:36:04 -04:00
2ef37d1d61 feat: add 'path' CLI command for memory pathfinding 2026-04-12 12:36:04 -04:00
af80963d4f feat: add shortest_path and path_explanation to MnemosyneArchive
BFS-based pathfinding between memories through the connection graph.
Enables 'how is X related to Y?' queries across the holographic archive.
2026-04-12 12:36:04 -04:00
fb6ed0d7bb [claude] Memory Pulse — BFS wave animation on crystal click (#1263) (#1264) 2026-04-12 12:36:04 -04:00
486c98894a [claude] Mnemosyne: memory consolidation — auto-merge duplicates (#1260) (#1262) 2026-04-12 12:36:04 -04:00
8d92ea9905 docs(mnemosyne): mark memory_decay as shipped
Part of #1258.
2026-04-12 12:36:04 -04:00
95f3434c08 test(mnemosyne): add memory decay test suite
Part of #1258.
- Test vitality fields on entry model
- Test touch() access recording and boost
- Test compute_vitality decay math
- Test fading/vibrant queries
- Test apply_decay bulk operation
- Test stats integration
- Integration lifecycle test
2026-04-12 12:36:04 -04:00
6dce93d948 feat(mnemosyne): add memory decay system to MnemosyneArchive
Part of #1258.
- touch(entry_id): record access, boost vitality
- get_vitality(entry_id): current vitality status  
- fading(limit): most neglected entries
- vibrant(limit): most alive entries
- apply_decay(): decay all entries, persist
- stats() updated with avg_vitality, fading_count, vibrant_count

Decay: exponential with 30-day half-life.
Touch: 0.1 * (1 - current_vitality) — diminishing returns.
2026-04-12 12:36:04 -04:00
be45c7f88b feat(mnemosyne): add vitality and last_accessed fields to ArchiveEntry
Part of #1258 — memory decay system.
- vitality: float 0.0-1.0 (default 1.0)
- last_accessed: ISO datetime of last access

Also ensures updated_at and content_hash fields from main are present.
2026-04-12 12:36:04 -04:00
77f2ad4a80 feat: export embedding backends from mnemosyne __init__ 2026-04-12 12:36:04 -04:00
23a89f22b7 docs: mark embedding_backend as shipped in FEATURES.yaml 2026-04-12 12:36:04 -04:00
0317e72d6e feat: CLI --backend flag for embedding backend selection
- search: --backend ollama|tfidf|auto
- rebuild: --backend flag
- Auto-detects best backend when --semantic is used
2026-04-12 12:36:04 -04:00
0cf152317d test: add embedding backend test suite
Tests cosine similarity, TF-IDF backend,
auto-detection, and fallback behavior.
2026-04-12 12:36:04 -04:00
3aa084bdb6 feat: archive.py uses embedding backend for semantic search
- MnemosyneArchive.__init__ accepts optional EmbeddingBackend
- Auto-detects best backend via get_embedding_backend()
- semantic_search uses embedding cosine similarity when available
- Falls back to Jaccard token similarity gracefully
2026-04-12 12:36:04 -04:00
e31c8179da feat: linker supports pluggable embedding backend
HolographicLinker now accepts optional EmbeddingBackend.
Uses cosine similarity on embeddings when available,
falls back to Jaccard token similarity otherwise.
Embedding cache for performance during link operations.
2026-04-12 12:36:04 -04:00
48fcadb4e8 feat: add pluggable embedding backend (Ollama + TF-IDF)
Implements embedding_backend from FEATURES.yaml:
- Abstract EmbeddingBackend interface
- OllamaEmbeddingBackend for local sovereign models
- TfidfEmbeddingBackend pure-Python fallback
- get_embedding_backend() auto-detection
2026-04-12 12:36:04 -04:00
perplexity
879cc2a336 [IaC] Add CONTRIBUTING.md — assignment-lock protocol and workflow conventions
Closes #1252

- Assignment-as-lock protocol for humans and agents
- Branch naming conventions
- PR requirements (rebase, reference issues, no bytecode)
- Path conventions table
- Feature manifest workflow
- Stale PR policy documentation
2026-04-12 12:36:04 -04:00
perplexity
b2bb253157 [IaC] Add Mnemosyne FEATURES.yaml — declarative feature manifest
Closes #1251

- Documents all shipped backend modules (archive, entry, ingest, linker, cli, tests)
- Documents all shipped frontend components (11 components)
- Lists planned/unshipped features (decay, pulse, embeddings, consolidation)
- References merged PRs for each feature
- Enforces canon_path: nexus/mnemosyne/
2026-04-12 12:36:04 -04:00
perplexity
68d2fa7abb [IaC] Add stale PR closer script — auto-close conflicted superseded PRs
Closes #1250

- Shell/Python script for cron on Hermes (every 6h)
- Identifies PRs that are both conflicted AND superseded
- Matches by Closes #NNN references and title similarity (60%+ overlap)
- Configurable grace period via GRACE_HOURS env var
- DRY_RUN mode for safe testing
- Idempotent — safe to re-run
2026-04-12 12:36:04 -04:00
perplexity
b1d86f6a07 [IaC] Fix .gitignore — recursive __pycache__ exclusion + purge 22 cached .pyc files
Closes #1249

- Replace path-specific __pycache__ entries with recursive **/__pycache__/
- Add *.pyc and *.pyo globs
- Remove 22 tracked .pyc files from bin/, nexus/evennia_mempalace/,
  nexus/mempalace/, and nexus/mnemosyne/
- Reorganize .gitignore with section comments for clarity
2026-04-12 12:36:04 -04:00
Alexander Whitestone
2d7a531f82 feat(mnemosyne): Add connection panel HTML + CSS
- Panel container in index.html after memory-inspect-panel
- Full CSS styles matching Mnemosyne aesthetic
- Slide-in from right, positioned next to inspect panel
- Connected memories list with navigate/remove actions
- Suggested memories with add-connection button
- Hover highlight state for 3D crystal feedback
2026-04-12 12:36:04 -04:00
Alexander Whitestone
d37b9ae074 feat(mnemosyne): Memory Connection Panel — interactive connection management
- Browse all connections from a selected memory crystal
- Suggested connections from same region + nearby memories
- Add/remove connections with bidirectional sync
- Hover highlights connected crystals in 3D world
- Navigate to connected memories via click
- Clean slide-in panel UI matching Mnemosyne aesthetic
2026-04-12 12:36:04 -04:00
dd05abe4f7 [claude] Add temporal query methods: by_date_range and temporal_neighbors (#1244) (#1246) 2026-04-12 12:36:04 -04:00
05b01ad771 [claude] Mnemosyne entry update + content deduplication (#1239) (#1241) 2026-04-12 12:36:04 -04:00
2adcbd0372 [claude] Mnemosyne tag management — add, remove, replace topics (#1236) (#1238) 2026-04-12 12:36:04 -04:00
Alexander Whitestone
25f07dcc63 test(mnemosyne): graph cluster analysis tests — 22 tests
- graph_clusters: empty, orphans, linked pairs, separate clusters, topics, density
- hub_entries: ordering, limit, inbound/outbound counting
- bridge_entries: triangle (none), chain (B is bridge), small cluster filtered
- rebuild_links: creates links, threshold override, persistence
2026-04-12 12:36:04 -04:00
Alexander Whitestone
64686d81a3 feat(mnemosyne): CLI commands for graph analysis
- mnemosyne clusters: show connected component clusters with density + topics
- mnemosyne hubs: most connected entries by degree centrality
- mnemosyne bridges: articulation points (entries connecting clusters)
- mnemosyne rebuild: recompute all links from scratch
2026-04-12 12:36:04 -04:00
Alexander Whitestone
c13b9b52d5 feat(mnemosyne): graph cluster analysis — clusters, hubs, bridges, rebuild_links
- graph_clusters(): BFS connected component discovery with density + topic analysis
- hub_entries(): degree centrality ranking of most connected entries
- bridge_entries(): Tarjan's articulation points — entries that connect clusters
- rebuild_links(): full link recomputation after bulk ingestion
- _build_adjacency(): internal adjacency builder with validation
2026-04-12 12:36:04 -04:00
Alexander Whitestone
fbafa10ee7 test(mnemosyne): add graph_data() tests
- empty archive returns empty nodes/edges
- nodes have all required fields
- edges have weights in [0,1]
- topic_filter returns subgraph
- bidirectional edges deduplicated
2026-04-12 12:36:04 -04:00
Alexander Whitestone
3e9b9a215a feat(mnemosyne): add graph_data() for 3D constellation export
Returns {nodes, edges} with live link weights. Supports topic_filter
for subgraph extraction. Edges are deduplicated (bidirectional links
become single undirected edges).

Closes #1232
2026-04-12 12:36:04 -04:00
33fbe851b2 feat: add metadata for ordinal archive 2026-04-12 12:36:03 -04:00
fe9139262d feat: Sovereign Ordinal Archive - block 944648
Scanned 2026-04-11, documenting philosophical and moral inscriptions on Bitcoin blockchain.
2026-04-12 12:36:03 -04:00
0b352bc436 [claude] Memory Inspect Panel — click-to-read detail view (#1227) (#1229) 2026-04-12 12:36:03 -04:00
a03db862fa feat: integrate MemoryBirth into app.js
- Import MemoryBirth module
- Initialize alongside SpatialMemory
- Wrap placeMemory() for automatic birth animations
- Call MemoryBirth.update() in render loop
2026-04-12 12:36:03 -04:00
1cb28fec34 feat: add memory-birth.js — crystal materialization animation system
- Elastic scale-in from 0 to full size
- Bloom flash at materialization peak
- Neighbor pulse: nearby memories brighten on birth
- Connection line progressive draw-in
- Auto-wraps SpatialMemory.placeMemory() for zero-config use
2026-04-12 12:36:03 -04:00
b5ae7f4c2c [claude] Mnemosyne: semantic search via holographic linker similarity (#1223) (#1225) 2026-04-12 12:36:03 -04:00
46da2a8c81 [claude] Mnemosyne: export, deletion, and richer stats (#1218) (#1220) 2026-04-12 12:36:03 -04:00
a9f4a0651f merge: Mnemosyne Phase 1 — Living Holographic Archive
Co-authored-by: Alexander Whitestone <alexander@alexanderwhitestone.com>
Co-committed-by: Alexander Whitestone <alexander@alexanderwhitestone.com>
2026-04-12 12:36:03 -04:00
63334387e6 feat(mnemosyne): wire memory filter panel in app.js
- G key toggles filter panel
- Escape closes filter panel
- toggleMemoryFilter() bridge function
2026-04-12 12:36:03 -04:00
360155f1b6 feat(mnemosyne): add memory filter panel CSS
- Frosted glass panel matching Mnemosyne theme
- Category toggle switches with color dots
- Slide-in animation from right
2026-04-12 12:36:03 -04:00
68a6fad1d6 feat(mnemosyne): add memory filter panel with category toggles
- Filter panel with toggle switches per memory region
- Show All / Hide All bulk controls
- Memory count per category
- Frosted glass UI matching Mnemosyne design
2026-04-12 12:36:03 -04:00
ff7fef4f73 feat(mnemosyne): add region filter visibility methods to SpatialMemory
- setRegionVisibility(category, visible) — toggle single region
- setAllRegionsVisible(visible) — bulk toggle
- getMemoryCountByRegion() — count memories per category
- isRegionVisible(category) — query visibility state
2026-04-12 12:36:03 -04:00
298a2bf3f6 fix: wire SpatialMemory.setCamera(camera) for entity line LOD (#1167)
Pass camera reference to SpatialMemory so entity resolution lines get distance-based opacity fade and LOD culling.
2026-04-12 12:36:03 -04:00
060832a8ed fix: export setCamera from SpatialMemory (#1167)
Entity resolution lines were drawn but LOD culling never activated because setCamera() was defined but not exported. Without camera reference, _updateEntityLines() was a no-op.
2026-04-12 12:36:03 -04:00
7d78f4bfbf [claude] Mnemosyne archive health dashboard — statistics overlay panel (#1210) (#1211) 2026-04-12 12:36:03 -04:00