From 35ae0d6ffc42f9d71fc3df2d23929c770ba4a9ed Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Mon, 7 Sep 2026 04:34:32 +0000 Subject: [PATCH] docs: record PyPI memnet-llm==0.19.5 as published Honesty c (SHAPE_DROP_KEYS) is already on PyPI. README long_description and current-state docs no longer say 0.19.4 until upload. 1.0 stays unclaimed. Co-authored-by: chouswei --- .cursor/skills/SKILL-GRAPH.md | 2 +- .cursor/skills/memnet-reference/SKILL.md | 2 +- AGENTS.md | 2 +- CHANGELOG.md | 4 ++-- README.md | 4 ++-- docs/LLM-GUIDE.md | 4 ++-- docs/ROADMAP.md | 6 +++--- docs/SHAPE.md | 2 +- docs/operations/honesty-c-wire-audit.md | 2 +- 9 files changed, 14 insertions(+), 14 deletions(-) diff --git a/.cursor/skills/SKILL-GRAPH.md b/.cursor/skills/SKILL-GRAPH.md index 8171af6..1780393 100644 --- a/.cursor/skills/SKILL-GRAPH.md +++ b/.cursor/skills/SKILL-GRAPH.md @@ -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 diff --git a/.cursor/skills/memnet-reference/SKILL.md b/.cursor/skills/memnet-reference/SKILL.md index 2f494d9..eda5a5b 100644 --- a/.cursor/skills/memnet-reference/SKILL.md +++ b/.cursor/skills/memnet-reference/SKILL.md @@ -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. diff --git a/AGENTS.md b/AGENTS.md index 4018861..fdc8c41 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -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 diff --git a/CHANGELOG.md b/CHANGELOG.md index fad86be..f15f5c3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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 diff --git a/README.md b/README.md index 9ad7cff..a79315a 100644 --- a/README.md +++ b/README.md @@ -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]' diff --git a/docs/LLM-GUIDE.md b/docs/LLM-GUIDE.md index 3097554..5837873 100644 --- a/docs/LLM-GUIDE.md +++ b/docs/LLM-GUIDE.md @@ -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. @@ -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` | diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md index fab2f85..df865f5 100644 --- a/docs/ROADMAP.md +++ b/docs/ROADMAP.md @@ -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. @@ -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 | diff --git a/docs/SHAPE.md b/docs/SHAPE.md index 49b0313..6dbfe58 100644 --- a/docs/SHAPE.md +++ b/docs/SHAPE.md @@ -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. --- diff --git a/docs/operations/honesty-c-wire-audit.md b/docs/operations/honesty-c-wire-audit.md index 1a411d3..177624c 100644 --- a/docs/operations/honesty-c-wire-audit.md +++ b/docs/operations/honesty-c-wire-audit.md @@ -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.