Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .cursor/skills/SKILL-GRAPH.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

**Audience:** model. Wire SSOT: [memnet-format](memnet-format/SKILL.md) and `docs/grammar/gql-wire-profile.md`. Do **not** treat this file as the session graph.

This folder **vendors** the MemNet stack. Hatch **0.19.5**; last published PyPI is **`memnet-llm==0.19.4`** until upload. Cue then `pin_map`; `find` if ego unknown. **GQL only.** Package SemVer `a.b.c` (claim / usage-method revision / same-method cut): `docs/ROADMAP.md`. Do not invent 0.20.
This folder **vendors** the MemNet stack. Hatch **0.19.5**; published PyPI is **`memnet-llm==0.19.5`**. Cue then `pin_map`; `find` if ego unknown. **GQL only.** Package SemVer `a.b.c` (claim / usage-method revision / same-method cut): `docs/ROADMAP.md`. Do not invent 0.20.

## Routing

Expand Down
2 changes: 1 addition & 1 deletion .cursor/skills/memnet-reference/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ Repo skill for **building** MemNet in **this** repository. Doctrine SSOT is `doc

This checkout **vendors** agent skills under `.cursor/skills/` (core: `memnet-use` + MCP/format/nested/multitask). Load those when **using** MemNet; load **this** skill only when changing the engine, generic MCP, grammar, product SysML, or packaging.

**Product:** Hatch **0.19.5** (CLI `memnet`). Last published PyPI wheel is **`memnet-llm==0.19.4`** until upload. Version map: `docs/ROADMAP.md`. Shape: `docs/SHAPE.md`. **1.0** = 0.5–0.8 claimed (do not tag from this skill).
**Product:** Hatch **0.19.5** (CLI `memnet`). Published PyPI wheel is **`memnet-llm==0.19.5`**. Version map: `docs/ROADMAP.md`. Shape: `docs/SHAPE.md`. **1.0** = 0.5–0.8 claimed (do not tag from this skill).

**`a.b.c` (ROADMAP law).** `a` = claim / generation (`0` = 1.0 unclaimed; `1` = claim of 0.5–0.8). `a` moves only if the contract breaks (Recall=`pin_map` / Commit=`mutate`, GraphElement identity, GQL-only wire). `b` = usage-method revision (new required loop step, new product tool, cue/outline/identity law, new goldfish verb). Historical extras **0.10–0.19** were `b`. N-server (#47) is not a `b`. `c` = same-method cut (honesty, leftover naming, docs/skills, wheel/tag, caps, façade, faster same `cue → pin_map → mutate`). Efficiency on the current loop is **`0.19.c`**, not `0.20`. Do not invent a 0.20 extra. Do not claim 1.0.

Expand Down
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ LLM hub for this system repo. Prefer in-repo skills and docs over ad-hoc inventi

## Mission

**MemNet** (Net of Memory) is **mission working memory** — a session graph (GQL **node**/vertex, **edge**/relationship, **property**) **between** LLM call pipelines and data search, not the corpus and not GraphRAG. Agents read a bounded **live pin map** each turn and write in the same **GQL (openCypher-shaped)** family — redefined **Write = display** via shaped subgraph emit ([`docs/grammar/gql-wire-profile.md`](docs/grammar/gql-wire-profile.md)). In-session recall is **serial**: kind/keyword cue, then `pin_map` neighbourhood. Primary read: MCP `pin_map` / CLI `query pin-map`; leftover `query_warm` / `query warm` are leftover aliases. Aims (MN-REQ-00): save wall-clock time and tokens while keeping factual accuracy. Aids **system**, **programme**, **software**, **firmware**, **hardware**, and **documentation**. Transport: **in-process first** (single-agent; TCP fallback). **Multitask** requires TCP serve or streamable-http MCP — see Multitask policy below. This repo is **engine + generic memnet-mcp** only — novel-writer dropped. Repo product **0.19.5** (Hatch SSOT; last PyPI **`memnet-llm==0.19.4`** until upload; [#148](https://github.com/chouswei/MemNet/pull/148) nickname-off-`pin_map` published; 0.19.5 `SHAPE_DROP_KEYS`). **1.0** = 0.5–0.8 claimed (unclaimed). See `README.md`, [`docs/SHAPE.md`](docs/SHAPE.md), and `docs/grammar/`.
**MemNet** (Net of Memory) is **mission working memory** — a session graph (GQL **node**/vertex, **edge**/relationship, **property**) **between** LLM call pipelines and data search, not the corpus and not GraphRAG. Agents read a bounded **live pin map** each turn and write in the same **GQL (openCypher-shaped)** family — redefined **Write = display** via shaped subgraph emit ([`docs/grammar/gql-wire-profile.md`](docs/grammar/gql-wire-profile.md)). In-session recall is **serial**: kind/keyword cue, then `pin_map` neighbourhood. Primary read: MCP `pin_map` / CLI `query pin-map`; leftover `query_warm` / `query warm` are leftover aliases. Aims (MN-REQ-00): save wall-clock time and tokens while keeping factual accuracy. Aids **system**, **programme**, **software**, **firmware**, **hardware**, and **documentation**. Transport: **in-process first** (single-agent; TCP fallback). **Multitask** requires TCP serve or streamable-http MCP — see Multitask policy below. This repo is **engine + generic memnet-mcp** only — novel-writer dropped. Repo product **0.19.5** (Hatch SSOT; published PyPI **`memnet-llm==0.19.5`**; [#148](https://github.com/chouswei/MemNet/pull/148) nickname-off-`pin_map` published; 0.19.5 honesty `c`: `SHAPE_DROP_KEYS`). **1.0** = 0.5–0.8 claimed (unclaimed). See `README.md`, [`docs/SHAPE.md`](docs/SHAPE.md), and `docs/grammar/`.

## Where to look

Expand Down
4 changes: 2 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ This project uses Semantic Versioning as **interpreted for MemNet**: package `a.
## [0.19.5] - 2026-09-06

### Changed
- **Honesty `c` — store-identity keys off shaped emit** — Audit after [#148](https://github.com/chouswei/MemNet/pull/148): nickname `id` was already off `pin_map`, but `DROP_KEYS` was not a real strip. `hid` / `_memnet_hid` / `elementId` on `Record.fields` could still appear on GQL emit. SSOT is `SHAPE_DROP_KEYS` in `memnet.models`, applied in `_emit_props` (mutate ack and shaped present) and jsonl. Nickname `id` stays off **shaped read** only. RSV product errors no longer print hid. Ranking excludes `elementId` as well as hid / nickname. Package **0.19.5** patch on **0.19**. Numbered extras **0.10–0.19** unchanged. No 0.20 extra. `operatorCount` stays 2. Last published PyPI wheel remains **`memnet-llm==0.19.4`** until upload. Do not dump \(S\). Do not invent `rag_query`. **1.0** stays unclaimed. Surfaces: [`docs/operations/honesty-c-wire-audit.md`](docs/operations/honesty-c-wire-audit.md).
- **Package identity 0.19.5** — Hatch / `project.toml` / `memnet.__version__` honesty cut on **0.19**. Hatch **0.19.5**; PyPI last **0.19.4** until upload.
- **Honesty `c` — store-identity keys off shaped emit** — Audit after [#148](https://github.com/chouswei/MemNet/pull/148): nickname `id` was already off `pin_map`, but `DROP_KEYS` was not a real strip. `hid` / `_memnet_hid` / `elementId` on `Record.fields` could still appear on GQL emit. SSOT is `SHAPE_DROP_KEYS` in `memnet.models`, applied in `_emit_props` (mutate ack and shaped present) and jsonl. Nickname `id` stays off **shaped read** only. RSV product errors no longer print hid. Ranking excludes `elementId` as well as hid / nickname. Package **0.19.5** patch on **0.19**. Numbered extras **0.10–0.19** unchanged. No 0.20 extra. `operatorCount` stays 2. Published as **`memnet-llm==0.19.5`**. Do not dump \(S\). Do not invent `rag_query`. **1.0** stays unclaimed. Surfaces: [`docs/operations/honesty-c-wire-audit.md`](docs/operations/honesty-c-wire-audit.md).
- **Package identity 0.19.5** — Hatch / `project.toml` / `memnet.__version__` honesty cut on **0.19**. Hatch and PyPI are both **0.19.5**; 0.19.5 honesty `c` (`SHAPE_DROP_KEYS`) is published.

## [0.19.4] - 2026-09-04

Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,13 @@ MemNet sits **between** LLM call pipelines and data search (MN-REQ-00). Corpus l

This repo ships the engine + generic MCP only. **Product shape:** [`docs/SHAPE.md`](docs/SHAPE.md). **Pinned role:** working set of **a few technical documents** (atoms and locators, not PDF bytes) plus live `TSK`/`USR`/`MOD`, re-read fast. Tens of MiB typical; **hundreds of MiB still in role**; gigabytes = RAG/cabinet.

Package **`memnet-llm`** (CLI **`memnet`**). Python ≥ 3.11. Hatch **0.19.5**; last published PyPI wheel is **`memnet-llm==0.19.4`** until upload ([#148](https://github.com/chouswei/MemNet/pull/148) nickname-off-`pin_map`; 0.19.5 `SHAPE_DROP_KEYS`). **1.0** stays unclaimed. SemVer meaning (`a.b.c`): [`docs/ROADMAP.md`](docs/ROADMAP.md).
Package **`memnet-llm`** (CLI **`memnet`**). Python ≥ 3.11. Hatch **0.19.5**; published PyPI wheel is **`memnet-llm==0.19.5`** ([#148](https://github.com/chouswei/MemNet/pull/148) nickname-off-`pin_map`; 0.19.5 honesty `c`: `SHAPE_DROP_KEYS`). **1.0** stays unclaimed. SemVer meaning (`a.b.c`): [`docs/ROADMAP.md`](docs/ROADMAP.md).

## Install + quick CLI

```bash
pip install memnet-llm
# or pin published: pip install memnet-llm==0.19.4
# or pin published: pip install memnet-llm==0.19.5
# optional extras (drivers only — not AgensGraph/Neo4j servers):
# pip install 'memnet-llm[mcp]'
# pip install 'memnet-llm[agensgraph]'
Expand Down
4 changes: 2 additions & 2 deletions docs/LLM-GUIDE.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# MemNet — Agent Playbook (for LLMs)

**Class:** developers — MemNet engine / MCP / GQL wire / agent operating doctrine. Index: [`docs/README.md`](README.md). Product shape: [`SHAPE.md`](SHAPE.md). **Product 0.19.5.** Hatch **0.19.5**; last published PyPI is **`memnet-llm==0.19.4`** until upload. **1.0** = 0.5–0.8 claimed (unclaimed). SemVer `a.b.c`: [`ROADMAP.md`](ROADMAP.md).
**Class:** developers — MemNet engine / MCP / GQL wire / agent operating doctrine. Index: [`docs/README.md`](README.md). Product shape: [`SHAPE.md`](SHAPE.md). **Product 0.19.5.** Hatch **0.19.5**; published PyPI is **`memnet-llm==0.19.5`**. **1.0** = 0.5–0.8 claimed (unclaimed). SemVer `a.b.c`: [`ROADMAP.md`](ROADMAP.md).

**Dialect teach = GQL only** — [`grammar/gql-wire-profile.md`](grammar/gql-wire-profile.md). ADR: [`adr/ADR-001-gql-agent-wire.md`](adr/ADR-001-gql-agent-wire.md).
**M2 shipped:** engine/MCP accept openCypher-shaped GQL and emit shaped `pin_map`. Do **not** teach Layer / Tier A / `@TAG` pipe as agent wire.
Expand Down Expand Up @@ -66,7 +66,7 @@ Formal wire: [`grammar/gql-wire-profile.md`](grammar/gql-wire-profile.md).

| Mode | When | Setup |
|------|------|-------|
| **MCP in-process** | Cursor / local agents (**primary**) | Register `memnet-mcp` in `.cursor/mcp.json`; extra `[mcp]`. `pip install 'memnet-llm[mcp]'` (Hatch **0.19.5**; PyPI last **0.19.4**). **No** `memnet serve` |
| **MCP in-process** | Cursor / local agents (**primary**) | Register `memnet-mcp` in `.cursor/mcp.json`; extra `[mcp]`. `pip install 'memnet-llm[mcp]'` (Hatch **0.19.5**; PyPI **0.19.5**). **No** `memnet serve` |
| **CLI + serve** | Scripts, TCP shared process | Terminal 1: `memnet serve`; Terminal 2: CLI with `MEMNET_SESSION` |
| **MCP streamable-http** | Remote shared graph | `memnet-mcp --transport streamable-http` on `:18766/mcp` |

Expand Down
6 changes: 3 additions & 3 deletions docs/ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@

**Audience:** product developers. Dialect teach = **GQL** ([`grammar/gql-wire-profile.md`](grammar/gql-wire-profile.md)). Product shape: [`SHAPE.md`](SHAPE.md). British English.

**Package now:** Hatch **0.19.5** (`memnet.__version__`). Last published PyPI wheel is **`memnet-llm==0.19.4`** until upload. Numbered extras **0.10–0.19** are in this package (unchanged). [#148](https://github.com/chouswei/MemNet/pull/148) nickname-off-`pin_map` is published; **0.19.5** honesty `c` applies `SHAPE_DROP_KEYS` on GQL emit. GraphGlot parse front is on master (#109 @ 73a63c9b). Extra **0.14** claims `liveNeo4jClaimed=true`. **1.0** is still unclaimed (0.5–0.8).
**Package now:** Hatch **0.19.5** (`memnet.__version__`). Published PyPI wheel is **`memnet-llm==0.19.5`**. Numbered extras **0.10–0.19** are in this package (unchanged). [#148](https://github.com/chouswei/MemNet/pull/148) nickname-off-`pin_map` is published; **0.19.5** honesty `c` applies `SHAPE_DROP_KEYS` on GQL emit. GraphGlot parse front is on master (#109 @ 73a63c9b). Extra **0.14** claims `liveNeo4jClaimed=true`. **1.0** is still unclaimed (0.5–0.8).

**Last updated:** 2026-09-06 (`a.b.c` law locked; package **0.19.5** honesty `c` — store-identity keys off shaped emit; extras **0.10–0.19** unchanged; Hatch **0.19.5**; PyPI last **0.19.4** until upload; ranking honesty [#147](https://github.com/chouswei/MemNet/pull/147); do not claim **1.0**; do not invent a **0.20** extra).
**Last updated:** 2026-09-07 (`a.b.c` law locked; package **0.19.5** honesty `c` — store-identity keys off shaped emit; extras **0.10–0.19** unchanged; Hatch **0.19.5**; PyPI **`memnet-llm==0.19.5`**; ranking honesty [#147](https://github.com/chouswei/MemNet/pull/147); do not claim **1.0**; do not invent a **0.20** extra).

Patch notes: [`../CHANGELOG.md`](../CHANGELOG.md). CHANGELOG still follows Keep a Changelog. This file is how MemNet **interprets** SemVer — not a silent switch to npm-strict major=breaking for 0.x extras.

Expand Down Expand Up @@ -99,7 +99,7 @@ Handoff = **session id** (+ cue / write scope). Peers **re-`pin_map`** from labe
| **0.7.0** | Live AgensGraph hydrate/flush; `liveCabinetClaimed=true`. Server not vendored. Fake + skip unless `MEMNET_AGENSGRAPH_URL` | **Shipped** (`v0.7.0`) |
| **0.8.0** | GQL-only **teach** + product **shape for people** (`SHAPE.md`, playbook, application-note contract, Multitask honesty). Docs only. **No** engine cut. Cabinet stays claimed | **Shipped** (`v0.8.0`) |
| **0.9.0** | Neo4j `DurableStoreAdapter` client (`memnet-llm[neo4j]`); factory both-URL rule; [`cabinet/neo4j-buffer.md`](cabinet/neo4j-buffer.md). Live round-trip claimed later as extra **0.14**. Cabinet extra, **not** a 1.0 gate | **Shipped** (`v0.9.0` era; extras later packaged as 0.19.0) |
| **0.10–0.19** | Numbered extras (table below). Each row is one `b` (usage-method revision). Same pattern as 0.9: **not** 1.0 gates | **Packaged** (Hatch **0.19.5**; PyPI last **0.19.4** until upload; extras first shipped as 0.19.0) |
| **0.10–0.19** | Numbered extras (table below). Each row is one `b` (usage-method revision). Same pattern as 0.9: **not** 1.0 gates | **Packaged** (Hatch **0.19.5**; PyPI **0.19.5**; extras first shipped as 0.19.0) |
| **1.0.0** | **Claim** of **0.5 + 0.6 + 0.7 + 0.8**. Shape mature for people. Not GraphRAG. Not cabinet-only. Not a new engine. This is `a=1` | **Claim when coordinator tags** — package **0.19.5** does not claim 1.0 |
| **Later** | Grammar Open / hosted product / leftover ACL; N-server research (#47). GraphGlot parse-front is **shipped**. If **1.0 tags first**, remaining extras become **1.1, 1.2, …** with the same owns (`b` after the claim) | **Out** of 1.0 |

Expand Down
2 changes: 1 addition & 1 deletion docs/SHAPE.md
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ Do not call MemNet a “shaped RAG” or a “shaped Cypher proxy”.

**0.8.0** is this shape **taught for people** in-repo: this file, GQL-only playbook, application-note contract, Multitask honesty (RSV + Path-B ingest shipped; full ACL modes still to-be).

**1.0.0** is **0.5 + 0.6 + 0.7 + 0.8** claimed — the shape is mature for people: one GQL dialect, goldfish `pin_map`, gated mutate, cue-then-shape (including find when there is no ego), optional **proven** cabinet so \(S\) can outlive a process. Not GraphRAG. Not cabinet-only. Map and **`a.b.c` law:** [`ROADMAP.md`](ROADMAP.md). **Honest install:** Hatch **0.19.5**; last published PyPI wheel is **`memnet-llm==0.19.4`** until upload (extras 0.10–0.19; Neo4j client from 0.9; live claimed as extra **0.14**; [#148](https://github.com/chouswei/MemNet/pull/148) nickname-off-`pin_map` is published; 0.19.5 `SHAPE_DROP_KEYS`). Optional extras `[mcp]`, `[agensgraph]`, `[neo4j]` (drivers only). **1.0** stays unclaimed.
**1.0.0** is **0.5 + 0.6 + 0.7 + 0.8** claimed — the shape is mature for people: one GQL dialect, goldfish `pin_map`, gated mutate, cue-then-shape (including find when there is no ego), optional **proven** cabinet so \(S\) can outlive a process. Not GraphRAG. Not cabinet-only. Map and **`a.b.c` law:** [`ROADMAP.md`](ROADMAP.md). **Honest install:** Hatch **0.19.5**; published PyPI wheel is **`memnet-llm==0.19.5`** (extras 0.10–0.19; Neo4j client from 0.9; live claimed as extra **0.14**; [#148](https://github.com/chouswei/MemNet/pull/148) nickname-off-`pin_map`; 0.19.5 honesty `c`: `SHAPE_DROP_KEYS`). Optional extras `[mcp]`, `[agensgraph]`, `[neo4j]` (drivers only). **1.0** stays unclaimed.

---

Expand Down
2 changes: 1 addition & 1 deletion docs/operations/honesty-c-wire-audit.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Honesty `c` wire audit (0.19.5)

**Date:** 2026-09-06. **Package:** Hatch **0.19.5** (same-method cut on **0.19**). Last published PyPI wheel remains **`memnet-llm==0.19.4`** until upload. Numbered extras **0.10–0.19** unchanged. No usage-method `b`. No claim `a`. No 0.20. No 1.0. No `rag_query`.
**Date:** 2026-09-06. **Package:** Hatch **0.19.5** (same-method cut on **0.19**). Published PyPI wheel is **`memnet-llm==0.19.5`**. Numbered extras **0.10–0.19** unchanged. No usage-method `b`. No claim `a`. No 0.20. No 1.0. No `rag_query`.

This note records the hot-path audit after [#148](https://github.com/chouswei/MemNet/pull/148) (nickname off `pin_map`) and [#147](https://github.com/chouswei/MemNet/pull/147) (observable rank). Chat is not SSOT.

Expand Down
Loading