# Claim verification This file maps externally visible claims to reproducible evidence. Code presence alone is not compatibility or security proof. Results use only `PASS`, `FAIL`, `PARTIAL`, or `UNVERIFIED`. | ID | README claim | Code location | Test location | Verification command | Result | Severity | Handling | | --- | --- | --- | --- | --- | --- | --- | --- | | C01 | Sessions are private by default | `src/database.ts` | `test/database.test.mjs` | `pnpm test` | PASS | P0 | No relationship exists until a user operation creates it. | | C02 | Sources and consumers are independent | `src/database.ts`, `src/ui-command.ts` | `test/database.test.mjs`, `test/plugin.test.mjs` | `pnpm test` | PASS | P0 | Separate tables, operations, and removal paths. | | C03 | Governance and durable writes require the current direct human event | `src/command-source.ts`, `src/ui-command.ts` | `test/plugin.test.mjs` | `pnpm test:security` | PASS | P0 | Public relationship verbs fail; the plugin exports no model tool. | | C04 | Recall and FTS use only active, non-expired versions | `src/database.ts`, `src/recall.ts` | `test/database.test.mjs`, `test/recall.test.mjs` | `pnpm test` and `pnpm doctor:fts` | PASS | P0 | Transactional lifecycle and FTS checks. | | C05 | Every memory has provenance, versions, and answer-use records | `src/database.ts` | `test/database.test.mjs`, `test/plugin.test.mjs` | `pnpm test` | PASS | P1 | Event ranges, excerpts, methods, chains, and usage are asserted. | | C06 | History import is optional and failures write nothing | `src/history-import.ts` | `test/history-import.test.mjs` | `pnpm test` | PASS | P0 | Cancellation, empty, tool, truncation, oversize, and provider failure paths are covered. | | C07 | Injection is bounded, previewable, suppressible, and once per turn | `src/index.ts`, `src/recall.ts`, `src/client/MemoryShareUi.tsx` | `test/plugin.test.mjs`, `test/client.test.mjs` | `pnpm test` plus browser core flow | PASS | P0 | Matching preview decisions are consumed once. | | C08 | Snapshots contain selected messages and use separated hashed tokens | `src/sharing.ts`, `src/database.ts` | `test/sharing.test.mjs`, `test/plugin.test.mjs`, `test/client.test.mjs` | `pnpm test:security` | PASS | P0 | Access and append purposes, expiry, revocation, and atomic limits are distinct. | | C09 | Schema 3 migration preserves data, creates a backup, and tolerates a two-process race | `src/database.ts` | `test/database.test.mjs`, `test/fixtures/open-store.mjs` | `pnpm test:migration` | PASS | P0 | Complex fixture, rollback, restart, unknown-schema, and process-race paths pass. | | C10 | Default storage is Profile-local | `src/profile-storage.ts` | `test/profile-storage.test.mjs` | `pnpm test` | PASS | P0 | Source links require an explicit path rather than guessing. | | C11 | The plugin uses published DSH interfaces without a core patch | `src/index.ts`, `src/client/index.ts`, `package.json` | `test/client.test.mjs`, packaging checks | `pnpm typecheck` and `pnpm package:check` | PASS | P0 | Public imports, published client slots, and version adapters only. | | C12 | Stock DSH `0.1.5-rc.3` works | current compatibility adapters | fresh-profile evidence in `DSH_COMPATIBILITY.md` | exact-version tarball/source mount script | PASS | P0 | Tarball, browser core, source link, repeated mount, and uninstall passed. | | C13 | Stock DSH `0.1.7-rc.2` works | current compatibility adapters | fresh-profile evidence in `DSH_COMPATIBILITY.md` | exact-version tarball/source mount script | PASS | P0 | Tarball, browser core, source link, repeated mount, and uninstall passed. | | C14 | Tarball and source installs uninstall cleanly | `package.json`, `cordis.patch.yml` | real DSH profile evidence | exact-version `dsh plugin add/remove` and `--dump-config` | PASS | P1 | Verified for both supported DSH aggregates. | | C15 | Retrieval remains bounded at the documented scales | `src/database.ts`, `scripts/benchmark.mjs` | benchmark output in `PERFORMANCE.md` | `pnpm benchmark -- --memories 100000 ...` | PARTIAL | P2 | Recall meets the reference target; the 100,000-memory governance view does not. | | C16 | Dialogs expose usable labels, errors, and controls | `src/client/MemoryShareUi.tsx` | `test/client.test.mjs`, browser core flow | `pnpm test` plus browser interaction | PARTIAL | P2 | Labels, alerts, dialog primitives, and primary interaction pass; full keyboard, screen-reader, contrast, and automated accessibility audits remain. | | C17 | Hosted Ubuntu, Windows, macOS and Node 22/24 CI passes | `.github/workflows/ci.yml` | GitHub Actions | hosted workflow | PASS | P1 | The cross-platform jobs and both supported stock-DSH mount jobs pass; every release tag reruns them. | | C18 | npm trusted publication with provenance works | `.github/workflows/release.yml`, `scripts/release-metadata.mjs` | `test/release.test.mjs`, npm registry attestation, and tagged GitHub workflow | `v0.1.1` release | PASS | P1 | The token-free workflow published through OIDC and npm recorded SLSA provenance. | | C19 | Memory is serialized as untrusted context without a prompt-injection-prevention guarantee | `src/serialization.ts`, `src/index.ts` | `test/recall.test.mjs`, `test/plugin.test.mjs` | `pnpm test:security` | PASS | P0 | The README makes no prevention guarantee and treats memory as untrusted data. | | C20 | Provenance clearing makes no secure physical-erasure claim | `src/database.ts` | `test/database.test.mjs` | `pnpm test` | PASS | P0 | The README explicitly disclaims physical erasure and names retained copies. | Summary: 18 PASS, 2 PARTIAL, 0 UNVERIFIED, and 0 FAIL. A `PARTIAL` row must not be described as complete in release notes.