Skip to content

Make MN-REQ-13 the Recall/Commit spine (merge-and-report + playbooks) - #214

Draft
chouswei wants to merge 2 commits into
masterfrom
cursor/mn-req-13-recall-commit-spine-c5ad
Draft

chouswei wants to merge 2 commits into
masterfrom
cursor/mn-req-13-recall-commit-spine-c5ad

Conversation

@chouswei

@chouswei chouswei commented Oct 13, 2026 •

Copy link
Copy Markdown
Owner

SysML-only restructure. No engine or MCP Python changes.

MN-REQ-13 is the product spine: Recall(q) = pin_map, Commit(Δ) = mutate. Agent-facing leaves reparent to nested MN-REQ-13.Recall / MN-REQ-13.Commit via #derivation (existing deriveReqt idiom). Requirement ids are unchanged except the new leaf MN-REQ-04.13. Organisational groups MN-REQ-01…12 stay nested under MN-REQ-00.

Agent surface verbs are exactly: recall, commit, session open, save, close. Every other agent-visible operation is marked as an option of one of those, or as internal, on agentSurface and in the leaf doc.

Owner update (this commit)

  1. Cut 2 approved — merge-and-report default Commit. Replaces the earlier “do not change strict add/update” instruction.

    • Default Commit merges by GraphElement identity (labels + properties; edge = type + ends) and reports created, updated, or unchanged for each item in Δ.
    • Strict AddFailsIfExists / UpdateFailsIfAbsent (MN-REQ-03.1 / 03.2) is an opt-in Commit mode. leftover add / update façades MAY select that mode.
    • MN-REQ-03.3 (no-silent-upsert) revised: the merge is never silent, because each item’s outcome is reported. Ids 03.1–03.3 stay stable; mapping notes the contract change.
    • MN-VER-03-S02 names planned pytest tests/test_mutate_merge_report.py::test_commit_reports_created_updated_unchanged (decidingTestImplemented=false).
  2. Playbooks as a Recall option (not a new verb). Modelled on Endleaf listPlaybooks / getPlaybook: read-only guides that teach an agent how to use MemNet’s tools.

    • New requirement MN-REQ-04.13 (option:Recall).
    • Satisfying part PlaybookGuide under Recall, plus CmdListPlaybooks / CmdGetPlaybook nested on McpFacade and CliFacade (productCommand=false, implemented=false).
    • MN-VER-04-S07 names planned pytest tests/test_memnet_playbooks.py::test_list_playbooks_and_get_playbook (decidingTestImplemented=false).

Spine

MN-REQ-00 Mission
├── MN-REQ-13 RecallCommit                         SPINE
│   ├── MN-REQ-13.1 TwoOperators
│   ├── MN-REQ-13.Recall   Recall(q) = pin_map
│   │   └── agent-facing read leaves via #derivation
│   │       (04.* minus housekeep, playbooks option 04.13, …)
│   └── MN-REQ-13.Commit   Commit(Δ) = mutate
│       ├── MN-REQ-13.2 SameThingAbsorb            nested
│       └── agent-facing write leaves via #derivation
│           (03.* merge-and-report default; 03.1/03.2 opt-in strict)
├── MN-REQ-01 SessionLifecycle   open / save / close
├── MN-REQ-02, 05, 07–12         organisational (importers stay)
└── MN-REQ-06 ProcessBoundary    ops (later PR may split)

Mapping table: sysml-models/outputs/mn-req-13-spine-mapping.md.

Kept unchanged

  • Session id is the handoff capability and secret (MN-REQ-01.7 / 01.8).
  • No graph dumps on handoff.
  • Hard caps; truncation flagged on the wire (truncated=true on MN-REQ-04.3 / 05.2).
  • Empty cue returns the session outline (MN-REQ-04.9).
  • Parser is the single source of truth (MN-REQ-09.1).

Counts (agentSurface)

Bucket Count
Recall (Recall + option:Recall) 27
Commit (Commit + option:Commit) 30
Session (session + option:session) 10
Internal 44
Ops 17
Other (mission / spine / surface listing) 5
Defs / usages 133 (132 at e518e9a + MN-REQ-04.13)
Named by some verify 56 (MN-VER-03-S02 binds 03.1–03.3; MN-VER-04-S07 binds 04.13)
Still unverified 77

Did not fit cleanly under Recall or Commit

  • MN-REQ-01 session open / save / close — agent surface beside the two operators.
  • MN-REQ-05 hard caps — 05.1 internal store, 05.2 Recall, 05.3 Commit (and snapshot).
  • MN-REQ-07.1 names all five verbs; not a sub-rule of one operator.
  • MN-REQ-08 I/O grammar applies to both; 08.7 / 08.9 hang on Recall (emit) with Commit sharing the family.
  • MN-REQ-11.1–11.5 SysML v2 export / round-trip text vs live export_pin_map GQL write-out (option of Recall); .sysml reverse still unclaimed.
  • MN-REQ-11 Path-B importers stay nested here; marked option of Commit.
  • MN-REQ-12 Multitask is host protocol (workers Recall then Commit); 12.4 is dual; 12.2 is ops transport.
  • MN-REQ-04.12 housekeep sits in the slice-economy group but is internal.
  • MN-REQ-04.13 playbooks fit as an option of Recall (not a sixth verb).
  • MN-REQ-13.1 is the two-operator law itself.

Later PRs (not this cut)

  • Split deploy/ops out of MN-REQ-06 / deploy.sysml ops parts.
  • Move Path-B importers (MN-REQ-11.6…11.16) to a dedicated ingest nest.
  • Move cousins.sysml / archive.sysml (or rename leftover coinages).
  • Engine/MCP for merge-and-report (MN-REQ-03.3) and playbooks (MN-REQ-04.13).

Do not merge until reviewed.

Open in Web Open in Cursor 

cursoragent and others added 2 commits October 13, 2026 08:53
Agent-facing leaves reparent to nested 13.Recall / 13.Commit via
#derivation. SameThingAbsorb nests under Commit. Strict add/update
semantics stay as they stand. Mapping table records old parent to
new parent. Ops, importers, cousins, and archive are not moved.

Co-authored-by: chouswei <chouswei@users.noreply.github.com>
Default Commit merges by GraphElement identity and reports created,
updated, or unchanged per item (MN-REQ-03.3 never silent). Strict
AddFailsIfExists / UpdateFailsIfAbsent is an opt-in Commit mode.
Playbooks (MN-REQ-04.13) are a Recall option modelled on Endleaf
list/get, on paper, with planned deciding tests named in verify.

Co-authored-by: chouswei <chouswei@users.noreply.github.com>
@cursor cursor Bot changed the title Make MN-REQ-13 Recall/Commit the requirements spine Make MN-REQ-13 the Recall/Commit spine (merge-and-report + playbooks) Oct 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants