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
63 changes: 63 additions & 0 deletions docs/reviews/2026-10-20-memo083-annotations.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
# Memo selected annotation workflow review

Status: published Memo0.83 is independently verified and adopted locally; portal deployment and
production verification remain pending.

## Reader outcome and source

The reader can retain selected aliases, facts and generic links, inspect explicit destination
bindings and understand the owner-only restore boundary. The format does not include notes,
specialized meeting memberships, tasks, memories, labels or findings and cannot justify a live reset.

- Native implementation and guides: [Memo #356](https://github.com/WireCatLabs/cli-memo/pull/356),
feature source31650f12238a149a83896cdc94653da09c2c2429; released source
5a2a5b2b594bbf9454ac27e1eb43721d036f8c9e, release run39454675571.
- Shared runtime: published Core0.374 and Base0.47.4; immutable registry and validated artifacts match.
- [Independent installed SDK reproduction](https://github.com/WireCatLabs/cli-testing/tree/91787332f0943f6eba9657e312abf4088ae0d2df/performance/projects/restore)
verifies different destination IDs, source/preview byte preservation, historical proposed state,
stale preview refusal and repeat refusal. This is not an extraction-quality score.
- Memo's605 tests pass under coverage. Independent installed Memo0.83 CLI and actual stdio MCP
acceptance pass with the published dependency graph. The npm/validated Memo tarballs match SHA-256
8df6a8f5c2d290c32e88a21b65f92f30f4bfa29446f3f033164078912d728852.

## Prose and reference review

The complete current recipe, MCP and security guides were read in English, Russian and Spanish.
Changed command reference sections and the person-reference option were checked against the native
generated command tree. The existing technical reference and historical changelog remain in English
where the localized pages already explain that choice; task instructions are localized.

| Page | Locales | Review result |
| --- | --- | --- |
| recipes | EN/RU/ES | Explains the outcome, prepared target, explicit references, omitted facets, private new file, exact check fingerprint, rollback and repeat refusal; links back to project review |
| MCP | EN/RU/ES | Exactly two reading tools, no restore tool; bounded reads and audit entry remain distinct; local example requests translated |
| security | EN/RU/ES | Note exports and annotation exports described separately; restore preserves historical state and does not newly confirm proposals |
| commands | EN/RU/ES | Three leaves, budget value names, required target/bindings/fingerprint, file effects and JSON projections match the command tree |
| changelog | EN/RU/ES | Technical source notes retained; no historical section rewritten |

Editorial corrections include an obsolete claim that only note export writes files, untranslated
MCP example requests, inconsistent Russian words for findings and unclear wording for omitted
meeting-project memberships. Executable fences, reference values and incoming anchors are preserved.
The projects task mapping now includes the existing recipe page.

The native release also includes earlier permission-guide corrections. Retire the five fixed guide
overrides only when their content is included in the adopted release; verify index, how-it-works,
memories and usage against the already deployed corrections rather than silently dropping them.

## Validation and remaining delivery

- Published0.83 source and validated/registry bytes match; independent CLI and actual stdio MCP checks pass.
- Five native guide overrides are retired. The four unchanged guide/README bodies match their earlier
fixed source exactly; security includes the native export correction and retains the permission guidance.
- All five released command contracts were freshly captured with network blocked. Strict documentation
validation reports1415 reference entries, zero gaps and zero invalid examples;144 syntax illustrations
remain marked for manual review. The projects task mapping includes the recipe.
- Lint passes with the same three existing warnings, typechecking passes and325 unit cases pass.
- Source-preview mobile checks pass15 HTML pages and15 Markdown twins across EN/RU/ES at390px,
including the new leaves/tools, selected-annotation anchor, old security anchor and configuration links.
The preview source is the exact released commit. The existing Sidebar React key warning remains;
no page errors or horizontal overflow were observed. The owned development server was stopped.
- PR checks, deployment and verification of the changed public routes remain pending.

No UI behavior or route is changed by this task. Reader verification supplements the existing shared
browser coverage rather than adding repeated permanent layout cases.
2 changes: 1 addition & 1 deletion docs/tasks.json
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@
},
{
"id": "memo-people",
"pages": ["memo/people.md", "memo/mail.md"],
"pages": ["memo/people.md", "memo/mail.md", "memo/recipes.md"],
"families": {
"memo": ["context", "organizations", "projects", "relationships", "vocabulary", "mail"]
}
Expand Down
11 changes: 2 additions & 9 deletions tools.json
Original file line number Diff line number Diff line change
Expand Up @@ -61,14 +61,7 @@
"ru": "Заметки, почта и сообщения в одном месте для вашего ИИ-агента: поиск, теги, люди и память, на вашем компьютере.",
"es": "Tus notas, correo y mensajes en un solo lugar para tu agente de IA: búsqueda, etiquetas, personas y recuerdos, en tu ordenador."
},
"docsRef": "v0.82.0",
"profile": false,
"guideRefs": {
"index": "a46159857442f2008324001468b440f009ea9b8c",
"security": "a46159857442f2008324001468b440f009ea9b8c",
"how-it-works": "a46159857442f2008324001468b440f009ea9b8c",
"memories": "a46159857442f2008324001468b440f009ea9b8c",
"usage": "a46159857442f2008324001468b440f009ea9b8c"
}
"docsRef": "v0.83.0",
"profile": false
}
]
25 changes: 24 additions & 1 deletion translations/memo/changelog.es.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,30 @@ la API.

Las notas técnicas exactas de las nuevas versiones se conservan en inglés; las instrucciones de uso están traducidas en sus guías.

## Unreleased
## 0.83.0 — 20.10.2026

### Added

- `memo projects evidence --contact person:<id>` (MCP `project_evidence` `contact`) searches the person's stored name and
keeps the `person:<id>` reference on the lane; an unknown id is refused with `not_found` instead of searched as text,
and a person with no stored name is refused with `validation_error` rather than searched under an identity's name.
- **`projects annotations export|check|restore`** retains selected project aliases, facts and generic
links, with explicit external bindings and historical state. Export writes a new private file from
read-only source access; preview checks an existing explicit target; owner-only restore requires its
exact fingerprint and refuses populated/conflicting targets. Notes, meeting memberships, tasks,
memories, labels and findings remain omitted, so this selected format is not a full project backup.
- **`project_annotations_snapshot` and `project_annotations_preview` MCP tools** read the same bounded
selected graph and destination conflicts. Restore is not exposed through MCP. Calls keep the normal
audit record, and schema, file reading, reference policy and transactions come from shared Core.

### Fixed

- MCP connection instructions distinguish direct proposed records, configurable project decisions and
owner-only meeting findings and annotation restoration.
- Guides consistently distinguish proposed memories and direct facts from project proposals that an
agent can decide with a recorded reason, and explain the owner decision setting and meeting boundary.
- **`sync --retry-attachments` help no longer says to install an extraction engine.** The PDF and Word
readers ship with memo; the option is for attachments an older memo or a broken install left unread.

## 0.82.0 — 20.10.2026

Expand Down
25 changes: 24 additions & 1 deletion translations/memo/changelog.ru.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,30 @@ title: "История изменений"

Точные технические записи новых выпусков сохранены на английском; инструкции по использованию переведены в соответствующих руководствах.

## Unreleased
## 0.83.0 — 20.10.2026

### Added

- `memo projects evidence --contact person:<id>` (MCP `project_evidence` `contact`) searches the person's stored name and
keeps the `person:<id>` reference on the lane; an unknown id is refused with `not_found` instead of searched as text,
and a person with no stored name is refused with `validation_error` rather than searched under an identity's name.
- **`projects annotations export|check|restore`** retains selected project aliases, facts and generic
links, with explicit external bindings and historical state. Export writes a new private file from
read-only source access; preview checks an existing explicit target; owner-only restore requires its
exact fingerprint and refuses populated/conflicting targets. Notes, meeting memberships, tasks,
memories, labels and findings remain omitted, so this selected format is not a full project backup.
- **`project_annotations_snapshot` and `project_annotations_preview` MCP tools** read the same bounded
selected graph and destination conflicts. Restore is not exposed through MCP. Calls keep the normal
audit record, and schema, file reading, reference policy and transactions come from shared Core.

### Fixed

- MCP connection instructions distinguish direct proposed records, configurable project decisions and
owner-only meeting findings and annotation restoration.
- Guides consistently distinguish proposed memories and direct facts from project proposals that an
agent can decide with a recorded reason, and explain the owner decision setting and meeting boundary.
- **`sync --retry-attachments` help no longer says to install an extraction engine.** The PDF and Word
readers ship with memo; the option is for attachments an older memo or a broken install left unread.

## 0.82.0 — 20.10.2026

Expand Down
81 changes: 80 additions & 1 deletion translations/memo/commands.es.md
Original file line number Diff line number Diff line change
Expand Up @@ -1238,7 +1238,7 @@ memo projects evidence <project> [options]
| `--source <accounts>` | where to look, or all: which accounts, separated by commas: provider:account (email:personal), a provider (email), a kind (mail, notes, documents) or group:<name>. |
| `--alias <name>` | another name of the project, searched on its own; repeat for more. |
| `--context-query <words>` | more words that all appear in one text; repeat for another search. |
| `--contact <person>` | a person's name; what only names them is context, not the project. |
| `--contact <person>` | label a contact identity, with --account. |
| `--since-time <time>` | how far back: days (90d, at most 730d) or a start date (2026-09-01). Default: `60d`. |
| `--before-time <time>` | fixed exclusive end: ISO 8601 timestamp with UTC offset; days back count from it. |
| `--limit <n>` | new references at most, up to 500. Default: `100`. |
Expand Down Expand Up @@ -1358,6 +1358,85 @@ memo projects actions reject <project> <id> [options]

**Example:** `memo projects actions reject SYH 12 --fingerprint 3f9a0c --reason 'not about this project'`

### `memo projects annotations`

selected project aliases, facts and generic links; not a full backup

#### `memo projects annotations export`

write selected annotations to a new private file, omitting source bodies

This command changes the local store or your files.

```sh
memo projects annotations export <project> [options]
```

| Argument | | What it is |
|---|---|---|
| `project` | required | the project's id, key, exact name or alias. |

| Option | What it does |
|---|---|
| `--output <file>` | new snapshot file; parent folder must exist and existing paths are refused. |
| `--max-read-bytes <bytes>` | source input byte budget, at most 4194304. |
| `--json` | print JSON; --json=project,counts keeps only those fields. |

**Returns:** write selected annotations to a new private file, omitting source bodies

**Example:** `memo projects annotations export HRB --output harbour-annotations.json --json`

#### `memo projects annotations check`

check bindings and conflicts in an existing target without restoring

```sh
memo projects annotations check <file> [options]
```

| Argument | | What it is |
|---|---|---|
| `file` | required | version2 snapshot JSON file, at most 4194304 UTF-8 bytes. |

| Option | What it does |
|---|---|
| `--target-store <file>` | explicit existing destination store; never created by preview. |
| `--project <project>` | explicit destination project:<id>; its key and name must match the snapshot. |
| `--bindings <file>` | JSON object mapping every external source reference and the project to explicit target references. |
| `--max-read-bytes <bytes>` | destination input byte budget, at most 4194304. |
| `--json` | print JSON; --json=ready,fingerprint keeps only those fields. |

**Returns:** check bindings and conflicts in an existing target without restoring

**Example:** `memo projects annotations check harbour-annotations.json --target-store ./trial/wirecat.db --project project:2 --bindings bindings.json --json`

#### `memo projects annotations restore`

owner: restore selected annotations with the exact successful check fingerprint

This command changes the local store or your files.

```sh
memo projects annotations restore <file> [options]
```

| Argument | | What it is |
|---|---|---|
| `file` | required | version2 snapshot JSON file, at most 4194304 UTF-8 bytes. |

| Option | What it does |
|---|---|
| `--target-store <file>` | explicit existing destination store; never created by preview. |
| `--project <project>` | explicit destination project:<id>; its key and name must match the snapshot. |
| `--bindings <file>` | JSON object mapping every external source reference and the project to explicit target references. |
| `--max-read-bytes <bytes>` | destination input byte budget, at most 4194304. |
| `--json` | print JSON; --json=project,counts keeps only those fields. |
| `--fingerprint <hash>` | exact fingerprint returned by the successful target preview. |

**Returns:** owner: restore selected annotations with the exact successful check fingerprint

**Example:** `memo projects annotations restore harbour-annotations.json --target-store ./trial/wirecat.db --project project:2 --bindings bindings.json --fingerprint aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --json`

### `memo projects key-documents`

the notes, files and messages to read first about a project, each with why
Expand Down
81 changes: 80 additions & 1 deletion translations/memo/commands.ru.md
Original file line number Diff line number Diff line change
Expand Up @@ -1238,7 +1238,7 @@ memo projects evidence <project> [options]
| `--source <accounts>` | where to look, or all: which accounts, separated by commas: provider:account (email:personal), a provider (email), a kind (mail, notes, documents) or group:<name>. |
| `--alias <name>` | another name of the project, searched on its own; repeat for more. |
| `--context-query <words>` | more words that all appear in one text; repeat for another search. |
| `--contact <person>` | a person's name; what only names them is context, not the project. |
| `--contact <person>` | label a contact identity, with --account. |
| `--since-time <time>` | how far back: days (90d, at most 730d) or a start date (2026-09-01). Default: `60d`. |
| `--before-time <time>` | fixed exclusive end: ISO 8601 timestamp with UTC offset; days back count from it. |
| `--limit <n>` | new references at most, up to 500. Default: `100`. |
Expand Down Expand Up @@ -1358,6 +1358,85 @@ memo projects actions reject <project> <id> [options]

**Example:** `memo projects actions reject SYH 12 --fingerprint 3f9a0c --reason 'not about this project'`

### `memo projects annotations`

selected project aliases, facts and generic links; not a full backup

#### `memo projects annotations export`

write selected annotations to a new private file, omitting source bodies

This command changes the local store or your files.

```sh
memo projects annotations export <project> [options]
```

| Argument | | What it is |
|---|---|---|
| `project` | required | the project's id, key, exact name or alias. |

| Option | What it does |
|---|---|
| `--output <file>` | new snapshot file; parent folder must exist and existing paths are refused. |
| `--max-read-bytes <bytes>` | source input byte budget, at most 4194304. |
| `--json` | print JSON; --json=project,counts keeps only those fields. |

**Returns:** write selected annotations to a new private file, omitting source bodies

**Example:** `memo projects annotations export HRB --output harbour-annotations.json --json`

#### `memo projects annotations check`

check bindings and conflicts in an existing target without restoring

```sh
memo projects annotations check <file> [options]
```

| Argument | | What it is |
|---|---|---|
| `file` | required | version2 snapshot JSON file, at most 4194304 UTF-8 bytes. |

| Option | What it does |
|---|---|
| `--target-store <file>` | explicit existing destination store; never created by preview. |
| `--project <project>` | explicit destination project:<id>; its key and name must match the snapshot. |
| `--bindings <file>` | JSON object mapping every external source reference and the project to explicit target references. |
| `--max-read-bytes <bytes>` | destination input byte budget, at most 4194304. |
| `--json` | print JSON; --json=ready,fingerprint keeps only those fields. |

**Returns:** check bindings and conflicts in an existing target without restoring

**Example:** `memo projects annotations check harbour-annotations.json --target-store ./trial/wirecat.db --project project:2 --bindings bindings.json --json`

#### `memo projects annotations restore`

owner: restore selected annotations with the exact successful check fingerprint

This command changes the local store or your files.

```sh
memo projects annotations restore <file> [options]
```

| Argument | | What it is |
|---|---|---|
| `file` | required | version2 snapshot JSON file, at most 4194304 UTF-8 bytes. |

| Option | What it does |
|---|---|
| `--target-store <file>` | explicit existing destination store; never created by preview. |
| `--project <project>` | explicit destination project:<id>; its key and name must match the snapshot. |
| `--bindings <file>` | JSON object mapping every external source reference and the project to explicit target references. |
| `--max-read-bytes <bytes>` | destination input byte budget, at most 4194304. |
| `--json` | print JSON; --json=project,counts keeps only those fields. |
| `--fingerprint <hash>` | exact fingerprint returned by the successful target preview. |

**Returns:** owner: restore selected annotations with the exact successful check fingerprint

**Example:** `memo projects annotations restore harbour-annotations.json --target-store ./trial/wirecat.db --project project:2 --bindings bindings.json --fingerprint aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --json`

### `memo projects key-documents`

the notes, files and messages to read first about a project, each with why
Expand Down
Loading
Loading