memgineering 0.9.1 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -11,6 +11,97 @@ language the reader wants. The bilingual rule the monorepo applies to
11
11
 
12
12
  ## [Unreleased]
13
13
 
14
+ ## [0.11.0] — 2026-08-26
15
+
16
+ ### Added
17
+
18
+ - **`memgineering rename <new-name> [--brain <name-or-id>]` — a wrong name is
19
+ one command, not an orphan.** Renames a hosted brain in place: notes, ledger
20
+ and id untouched, this machine's pointer healed, other machines picking the
21
+ new name up on their next command. A server that predates renaming is told
22
+ apart from a missing brain and says which side needs updating.
23
+ - **`memgineering delete-brain <name-or-id> --confirm "<exact name>"`.**
24
+ Deletes a hosted brain — every note, its ledger, its measurements — behind a
25
+ three-way gate: an exact-name `--confirm`, a retype-the-name prompt when a
26
+ person is at the terminal, and a hard refusal when nobody can answer.
27
+ Deleting the brain this machine reads also clears the pointer, and says so.
28
+ The server route existed since 0.6; the CLI now exposes it.
29
+
30
+ ### Changed
31
+
32
+ - `create`'s follow-up and the `brains` listing hints now name `rename` (and,
33
+ on the listing, `delete-brain`) so an agent mid-task finds the right verb
34
+ instead of inventing a copy-rename that strands an orphan brain — the
35
+ failure measured 3/3 in round 9.
36
+
37
+ ### Agent guidance
38
+
39
+ - The `memgineering-setup` skill gained "Renaming and deleting a hosted
40
+ brain": rename-not-delete for wrong names, the delete confirm contract
41
+ (only on the person's explicit ask, never to tidy up), and `unlink --brain`
42
+ as the non-destructive sibling. Skill trigger phrases now include renaming
43
+ and deleting. Restart your agent session after upgrading.
44
+
45
+ ## [0.10.0] — 2026-08-26
46
+
47
+ ### Added
48
+
49
+ - **`memgineering create <name> [--user] [--language] [--about]` — a hosted
50
+ brain without a folder first.** Creates the brain on the account (claiming a
51
+ just-approved sign-in on its own), writes the six starter notes, records the
52
+ answers as real content, asks the index to catch up without dying when it
53
+ cannot, and points this machine at the result. A taken name is refused with
54
+ nothing written — unless the brain holds only its own untouched scaffolding,
55
+ which is an interrupted create, finished by running the same command again.
56
+ - **`onboard` reaches a hosted brain.** Same questions and JSON shape as a
57
+ folder brain, judged with the server's own emptiness rule; a base note the
58
+ brain does not hold at all is reported as `missing` with a hint that can
59
+ succeed, never a revise instruction that would answer `ref_not_found`. The
60
+ command gained `--brain <name>` and `--local`, resolving the same way every
61
+ other verb does.
62
+ - **Setup now says how to connect a brain, cloud first.** The report gained a
63
+ `brain` section telling the agent exactly what to run next in every state —
64
+ pick one of the account's brains, create one, or carry a folder up — instead
65
+ of ending at sign-in and leaving the machine brainless.
66
+
67
+ ### Changed
68
+
69
+ - **An agent writing durable user facts into its own harness memory now gets
70
+ redirected, once per session, at that exact moment.** The guard watches
71
+ write-shaped tool calls aimed at an agent's own memory store (Claude Code's
72
+ `projects/<dir>/memory` today) and says where the shared copy belongs —
73
+ only on machines that actually have a brain. It never blocks anything.
74
+ - `use --brain` and `brains` refusals no longer name `push --brain` as the
75
+ only way to make a hosted brain: `create` is the no-upload creator,
76
+ `push --brain` the carry-a-folder-up one.
77
+
78
+ ### Agent guidance
79
+
80
+ - The hub now opens with a reflex table: a standing rule runs `remember
81
+ --rule` NOW, a correction runs `remember`, anything settled runs `recall`
82
+ first; plus two measured traps spelled out (loading a skill page saves
83
+ nothing, and a correction that should hold next time takes `--rule`).
84
+ Measured on the weakest tier: corrections reached the brain as binding
85
+ rules in 1 of 10 baseline sessions and 4 of 5 with the table. The table
86
+ then moved to judging INTENT over marker words — the one test is whether
87
+ the words are meant to bind future sessions, in any language, with the
88
+ English phrases demoted to examples and a counter-example added, trading
89
+ weakest-tier literalism for generality on the owner's direction. Restart
90
+ your agent session after upgrading.
91
+ - **An ambiguous correction no longer becomes a guessed rule.** When the
92
+ user's words could mean just-this-task or from-now-on, the hub now says:
93
+ do not guess — record without `--rule`, do the task, and ask in one line
94
+ whether it should hold. Measured: bare corrections produced guessed binding
95
+ rules in 2 of 3 baseline sessions and 0 of 5 with the path, with no new
96
+ questions on clear-cut cases.
97
+ - The `memgineering-setup` skill reorders "Connect a brain" cloud-first —
98
+ the account's brains, then `create`, then migrating a folder up with
99
+ `push --brain` + `reindex`, with `link`/`init` as the machine-only path —
100
+ and adds a section on turning migrated prose into memory (revise reinforce,
101
+ never inventing a claim the note does not contain). Restart your agent
102
+ session after upgrading.
103
+
104
+
14
105
  ## [0.9.1] — 2026-08-25
15
106
 
16
107
  ### Changed
@@ -2,7 +2,7 @@
2
2
  name: memgineering
3
3
  description: Use whenever the user refers to something they told you before, asks what was decided, tells you something worth keeping, or settles something that should hold next time. The memory lives in their own folder and outlives this session; check it before answering from guesswork, and write to it when you learn something durable.
4
4
  type: skill
5
- version: 0.9.1
5
+ version: 0.11.0
6
6
  ---
7
7
 
8
8
  # memgineering
@@ -12,6 +12,35 @@ the `memgineering` CLI by any AI tool that can run it. It outlives this session
12
12
  and this tool, so treat it as where what they know actually lives. Never edit
13
13
  those files by hand: only the CLI records the change and keeps `undo` working.
14
14
 
15
+ ## The reflexes — run these the moment the meaning appears
16
+
17
+ One judgement decides everything in this table, and it is about intent, not
18
+ wording: **is this meant to bind future sessions, or only the thing in front
19
+ of you right now?** Any language, any phrasing — a standing decision often
20
+ arrives with no marker words at all, and marker-looking words are often not
21
+ one ("from now on" said about the next five minutes is a schedule, not a
22
+ rule; an instruction scoped to "this file" or "here" usually ends with the
23
+ task). Judge the meaning, then move:
24
+
25
+ | what the user meant | run NOW |
26
+ | --- | --- |
27
+ | they settled something that should hold beyond this session (however phrased — e.g. "from now on…", "always…", "never…") | `memgineering remember "<their words>" --rule --reason "<why>"` |
28
+ | they corrected what you made, for this task (e.g. "again", "no, like this", showed the right way) | `memgineering remember "<what turned out right>" --reason "<their correction>"` — and if the correction is meant to hold beyond this session, that is the row above: add `--rule` |
29
+ | they asked about something that sounds already settled (e.g. "what did we decide", "how do we do this again") | `memgineering recall "<their words>"` FIRST, answer second |
30
+
31
+ When the words could mean just-this-task or from-now-on, do not guess a
32
+ binding rule: record it WITHOUT `--rule`, do the task, and ask in one line
33
+ whether it should hold from now on. A wrong rule silently binds every future
34
+ session; the question costs a second.
35
+
36
+ These are SHELL commands — run them with your shell tool. Opening or loading a
37
+ memgineering skill page saves nothing; measured: a model passed the command as
38
+ a skill argument, told the user it was saved, and nothing was stored. Done
39
+ means the CLI printed `Remembered.` and an undo id.
40
+
41
+ Durable facts about the user never go into this tool's own memory files or
42
+ directories — the brain is the one store every tool they use shares.
43
+
15
44
  ## When to reach for it
16
45
 
17
46
  - **Anything that sounds already settled** — a past decision, their setup, their
@@ -23,9 +52,6 @@ those files by hand: only the CLI records the change and keeps `undo` working.
23
52
  what you did and said it was right: `memgineering remember "<it>" --reason
24
53
  "<why>"`. Reversible by design, so do not ask permission for ordinary
25
54
  observations.
26
- - **They settled something that should hold next time** — "from now on",
27
- "never", "we always do it this way" — the same verb with `--rule`, which puts
28
- it in front of an agent before it edits a file rather than after someone asks.
29
55
  - **A new folder, or "where were we"** — `memgineering resurface`, no query.
30
56
  - **Their notes have piled up** — duplicates, notes that disagree:
31
57
  `memgineering consolidate` finds candidates and changes nothing; a change is
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: memgineering-setup
3
- description: Use when installing or configuring memgineering, when moving a brain between a machine and an account, or whenever the user asks WHICH of their AI tools can see this memory. Triggers include "set up memgineering", "connect my notes", "does my other AI see this too", "which of my tools can read this", "will it work in the app on my phone", "no brain is linked".
3
+ description: Use when installing or configuring memgineering, when moving a brain between a machine and an account, when renaming or deleting a hosted brain, or whenever the user asks WHICH of their AI tools can see this memory. Triggers include "set up memgineering", "connect my notes", "rename my brain", "delete that brain", "does my other AI see this too", "which of my tools can read this", "will it work in the app on my phone", "no brain is linked".
4
4
  type: skill
5
5
  allowed-tools: Bash(memgineering:*)
6
6
  ---
@@ -130,6 +130,79 @@ set nothing up, so wait for it rather than reporting done.
130
130
 
131
131
  ## 2. Connect a brain
132
132
 
133
+ Signed in — the default — a brain belongs on the account, where every machine
134
+ and every tool they use reads the same one. Three openings; run
135
+ `memgineering brains` first to learn which one you are in:
136
+
137
+ **The account already holds brains** — list, ask which, point:
138
+
139
+ ```
140
+ memgineering brains # what it holds, with note counts
141
+ memgineering use --brain work # nothing is uploaded by switching
142
+ ```
143
+
144
+ **The account holds nothing and there are no notes here** — make one:
145
+
146
+ ```
147
+ memgineering create work --user "Rayul" --language Korean --about "one line"
148
+ ```
149
+
150
+ Agree the NAME with the user first, and ask the three base questions in their
151
+ language — what to call them, which language to answer in, one line about who
152
+ they are. Every flag except the name is optional: leave out what they do not
153
+ want to say. `create` makes the brain on the account, writes the six starter
154
+ notes, records those answers as real content, points this machine at it, and
155
+ its output says how many base files are still empty templates —
156
+ `memgineering onboard` prints what to ask for the rest, and it now reaches a
157
+ hosted brain too. Its `--json` may also report `missing`: base notes the brain
158
+ does not hold at all, with a `missing_hint` naming the way to put them there —
159
+ never a revise instruction that cannot succeed.
160
+
161
+ A name the account already holds is refused with nothing written — `use
162
+ --brain <name>` points at it instead, or agree a different name. The one
163
+ exception is a brain holding nothing but its own untouched scaffolding: that
164
+ is an interrupted `create`, and running the same command again finishes it.
165
+
166
+ ### Renaming and deleting a hosted brain
167
+
168
+ **A wrongly-named brain is a rename, not a delete.** `memgineering rename
169
+ <new name>` changes what the brain this machine reads is called, in place —
170
+ notes, ledger and id untouched; `--brain <name-or-id>` renames another one.
171
+ Other machines pick the new name up on their own next command; nothing on
172
+ them breaks, because pointers hold the id. Never create a second brain to
173
+ fix a name.
174
+
175
+ `memgineering delete-brain <name-or-id> --confirm "<exact name>"` is the
176
+ destructive one: the brain, every note in it, its ledger and its
177
+ measurements, gone from the server, not recoverable. Run it ONLY when the
178
+ person has explicitly asked for THIS brain to be deleted, and take the
179
+ confirm name from what they said — never type it for them from a listing to
180
+ tidy an account up. Without `--confirm` in a real terminal it asks the
181
+ person to retype the brain's name; with no terminal it refuses rather than
182
+ deciding. `unlink --brain` is the gentle sibling: it only stops this machine
183
+ reading a brain and deletes nothing.
184
+
185
+ **They already keep notes in a folder on this machine** — carry them up
186
+ instead of starting empty:
187
+
188
+ ```
189
+ memgineering push --brain work # folder → account; deletes nothing local
190
+ memgineering reindex # makes the moved notes searchable by meaning
191
+ ```
192
+
193
+ ### Migrating notes that were never memgineering notes
194
+
195
+ `push` carries files; it does not turn prose into memory. After a migration,
196
+ offer — do not sweep — a pass over the notes they actually care about: ask
197
+ WHICH matter, `memgineering open` each, then
198
+ `memgineering revise <path> --action reinforce --claim "<one factual line the
199
+ note itself contains>" --summary "<what recall should show>"`. Never write a
200
+ claim the note does not contain: a guessed fact recalled later is
201
+ indistinguishable from something they said. One `reindex` at the end covers
202
+ the whole batch.
203
+
204
+ ### Machine-only (they chose `--no-login`)
205
+
133
206
  **They already keep notes somewhere:**
134
207
 
135
208
  ```
@@ -201,8 +274,9 @@ It moves the one hosted brain this machine reads and touches no notes — `push`
201
274
  and `pull` are what move those. It does not create: an unknown name is refused
202
275
  with the account's list, because pointing at a brain that does not exist would
203
276
  have every recall answer from an empty one, and from the outside that looks like
204
- the notes are gone. Before this, `push --brain <name>` was the only thing that
205
- could move the pointer, so switching meant uploading a folder first.
277
+ the notes are gone. Making a NEW brain is `create <name>` (empty, scaffolded)
278
+ or `push --brain <name>` (filled from a folder) — both point this machine at
279
+ the result on their own.
206
280
 
207
281
  It refuses a folder path, `--default` or `--here` in the same call. Those bind a
208
282
  folder; this is one setting for the whole machine.