All notable changes to the Starshard memory hub reference implementation are recorded here. Versions follow semver in spirit; this is a Phase-0 reference artifact, so breaking changes may happen — they will be called out.
- Removed maintainer-specific identifier (
owner:machengliteral tag) fromscripts/assumption_checker.pyproposal payload and the SPEC-GAPS §12 rationale. The public reference implementation should not carry maintainer-specific identifiers; users running their own instance tag memories however they like.
- Assumption-layer conflict detection (Brian Williams ATMS-inspired).
Each memory record may now carry an
assumptions: list[str]field — the implicit preconditions a fact rests on — plussupersedesandsuperseded_bypointers for explicit replacement chains. SeeSPEC-GAPS.md§12 for the design rationale. scripts/assumption_checker.py— runs every 12h viadeploy/assumption-checker.{service,timer}. Reads memories with non-empty assumption lists, asks an LLM to find conflicts at the assumption-entailment level (not embedding similarity), writesproposal + awaits-user-approval + assumption-conflictmemos. Nothing auto-applied; surface-don't-judge preserved.- Bidirectional supersedes pointers — creating a memory with
supersedes: Xautomatically setssuperseded_by: new_idonXin the same transaction.
- Memory schema gains 3 optional fields:
assumptions_json,supersedes_id,superseded_by_id. Idempotent ALTER TABLE migration on startup; v0.2 databases upgrade transparently. - MCP tool schemas for
create_memory/update_memoryreflect the new optional inputs.
- 19/19 pytest passing (13 v0.2 + 6 new assumption-layer tests).
- 0 PII hits (audit grep).
- Mirror sensitive-tag hard filter parity with digest. Mirror now
drops memories tagged
sensitive-*/relationship:*/tier-0-privatebefore any LLM exposure. Per SAFETY-CHARTER cross-tier red line, redaction-by-filter is more auditable than redaction-by-prompting. Implementation lives in sharedscripts/filters.py.
scripts/mirror.py— nightly consolidation pass. Reads recent memories, asks an LLM to propose merge / supersede / add-tag / link / surface-conflict operations, writes oneproposal + awaits-user-approvalmemory per run with up to 5 items. Surface only — never auto-applied.scripts/digest.py— weekly Sunday-evening email digest. Pulls the last 7 days, generates a 400-700 word plain-text summary (headline + 5 learning bullets + open Mirror proposals + themes + stuck items), SMTPs to the configured address.templates/CLAUDE.md— drop-in agent-side configuration that teaches a Claude Code (or compatible MCP client) session tolist_memories(tag=briefing)at session start,search_memoriesbefore asking the user to re-explain context, andcreate_memoryon every non-trivial decision with conventional tags + provenance.scripts/deploy-aws.sh— one-command provisioner: resolves Ubuntu 24.04 arm64 AMI, creates key pair + security group, launches a t4g.small with cloud-init that installs Docker + runs the hub. Prints public IP and an MCP client config snippet on exit.deploy/— systemd unit files (mirror.service/mirror.timer/digest.service/digest.timer) and a launchd example for macOS hosts.SPEC-GAPS.md— explicit log of design ambiguities encountered while implementing from architecture-v1 docs and the choices made. Companion document for architecture-v2 evolution.
- Server entrypoint switched to ASGI factory pattern
(
uvicorn --factory app.main:create_app) so module imports do not open a database connection. Tests can import the package without touching disk. - README restructured to introduce the four-layer story (memory hub + mirror + assumption checker + digest) plus the Cloudflare Tunnel + Access production walkthrough.
- Initial Phase 0 reference implementation:
app/— FastAPI server with SQLite (WAL + FTS5) backing, bearer-token middleware, JSON-RPC MCP bridge.- 5 core memory tools:
create_memory,get_memory,update_memory,list_memories,search_memories. - REST surface mirroring the MCP tool set.
Dockerfile+compose.yamlfor one-command local bringup.- 13 pytest smoke tests covering REST + MCP bridge + auth + archive semantics + content-size limit + FTS search.
INSTALL.mdCloudflare Tunnel + Access walkthrough.- Apache-2.0 license, SPDX headers on every source file.