Skip to content
Closed
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
5 changes: 5 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@

# NodeMem

NodeKit repository ownership and brownfield mapping are documented in
[`docs/NODEKIT_ADOPTION.md`](docs/NODEKIT_ADOPTION.md). NodeMem is a portable
memory implementation for host runtimes, not a second agent event or receipt
protocol.

### Notice passively. Act explicitly.

A provider-agnostic passive memory component for agent systems.
Expand Down
49 changes: 49 additions & 0 deletions docs/NODEKIT_ADOPTION.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
# NodeKit adoption

NodeMem is registered as a NodeKit `standalone-package` and maps its existing
provider-neutral memory core, in-memory adapter, and Convex schema adapter without
reorganizing working source code.

## Current conformance level

- **L1 registered:** `nodekit.yaml` declares repository identity, ownership,
lifecycle commands, no-key behavior, environment status, and the current proof
boundary.
- **L2 mapped:** the manifest identifies NodeMem as the current owner of
`nodemem.memory` and as a consumer of the canonical NodeAgent event concept and
ProofLoop certification.

NodeMem does **not** run a product agent, so it intentionally has no
`nodeagent.yaml`. Its `ScanInput` and `MemoryStore` are domain contracts used by a
host runtime. A future NodeAgent adapter may translate `nodeagent.event/v1` into
`ScanInput`, but this repository does not define a competing runtime event
envelope.

## Contract boundaries

| Concern | Current truth |
| --- | --- |
| Passive memory classification, policy, deduplication, and storage port | Owned by NodeMem |
| Runtime event envelope | Consumed from `nodeagent.event/v1`; a canonical adapter is not implemented here yet |
| Convex support | Schema definitions and schema-only smoke test; not a deployed backend proof |
| Certification receipt | ProofLoop owns `proofloop.receipt/v1` |
| NodeMem smoke JSON | Local evidence only; it is not yet a `proofloop.receipt/v1` implementation |

For that reason, `nodekit.yaml` declares `proof.receiptSchema: null`. The
`npm run proof` gate emits and verifies the existing local smoke evidence without
claiming canonical receipt compatibility.

## Commands

```bash
npm run demo
npm run doctor
npm run check
npm run proof
```

From a sibling NodeKit checkout, validate the repository contract with:

```bash
node ../node-platform/src/cli.mjs repo check --repo-root .
```
38 changes: 38 additions & 0 deletions nodekit.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
schemaVersion: nodekit.repo/v1
repository: HomenShum/NodeMem
lifecycle: preview
support: active
role: standalone-package
commandProfile: application

canonicalFor:
- nodemem.memory

consumes:
- nodeplatform.repo-contract
- nodeagent.event-protocol
- proofloop.certification

commands:
dev: { script: dev, mode: service }
demo: { script: demo, mode: finite }
doctor: { script: doctor, mode: finite }
check: { script: check, mode: finite }
proof: { script: proof, mode: finite }

noKey:
status: certified
command: npm run demo
externalAccountsRequired: 0
disclosure: The core and in-memory demonstration are deterministic and provider-agnostic; the included Convex lane validates schema shape only and does not prove a live deployment.

environment:
contractVersion: nodeplatform.env/v1
status: not-applicable

proof:
command: npm run proof
receiptSchema: null

contractDeclarations: []
architectureExceptions: []
5 changes: 4 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,10 @@
"node": ">=20"
},
"scripts": {
"dev": "vite",
"dev": "tsx watch demo/runNodeMemDemo.ts",
"doctor": "node --version",
"check": "npm run secret-scan && npm run typecheck && npm run test",
"proof": "npm run nodemem:smoke && npm run nodemem:in-memory:smoke && npm run nodemem:convex:smoke",
"build": "tsc --noEmit",
"demo": "tsx demo/runNodeMemDemo.ts",
"demo:node": "node demo/runNodeMemDemo.mjs",
Expand Down