Skip to content

eidetic-memory: refresh wrappers (eidetic 0.10) + memory-discipline convention#13

Merged
OriNachum merged 1 commit into
mainfrom
rollout/eidetic-memory-0.10
Jun 24, 2026
Merged

eidetic-memory: refresh wrappers (eidetic 0.10) + memory-discipline convention#13
OriNachum merged 1 commit into
mainfrom
rollout/eidetic-memory-0.10

Conversation

@OriNachum

Copy link
Copy Markdown
Contributor

Added

  • Memory-discipline "Conventions and workflow" section in CLAUDE.md — a
    per-task recall-before / remember-after convention (scope localized to this
    repo's nick) so the vendored remember / recall skills are actually used,
    not just present: /recall before non-trivial work to build on prior
    decisions instead of re-deriving them, and /remember when a non-obvious
    decision, constraint, fix-and-why, or hard-won gotcha surfaces. The section
    documents this repo's memory as in-repo and public — records resolve to
    <repo-root>/.eidetic/memory (committed, team- and mesh-shared). Inserted
    idempotently (skipped if already present), slotted under an existing
    "Conventions and workflow" heading when one exists, else appended.

Changed

  • Refreshed the remember + recall wrappers from eidetic-cli 0.10.0
    (cite-don't-import) — picks up eidetic's project-local store default: the
    files backend now resolves per record by visibility — PUBLIC records inside a
    git repo go to <repo-root>/.eidetic/memory (committed, team-shared), PRIVATE
    records (or any record outside a repo) go to $HOME/.eidetic/memory (never
    committed), an explicit EIDETIC_DATA_DIR still wins, and recall reads both
    stores and merges. Also carries the 0.9.3 hardening (interactive-stdin guard,
    help as a search term, SIGPIPE-safe suffix parsing). Recipe policy
    override (the wrappers here are NOT byte-verbatim):
    the injected default
    visibility is flipped from eidetic's private to public, so a plain
    /remember lands the note in ./.eidetic/memory in this repo, kept as part
    of the repo — pass --visibility private to route a record to $HOME
    instead. remember drives eidetic remember (idempotent upsert of one JSON
    record or an NDJSON batch on stdin); recall drives eidetic recall with
    four search modes (exact / approximate / keyword / hybrid). Each SKILL.md is
    localized only in the illustrative --scope <nick> examples (Provenance keeps
    "First-party to eidetic-cli"). Runtime dep: the eidetic CLI on PATH (else a
    local eidetic-cli checkout with uv) — eidetic >= 0.10.0 for the
    in-repo routing; on an older CLI the public records still work but are stored
    in $HOME/.eidetic/memory instead of in-repo. Propagated by rollout-cli's
    eidetic-memory recipe.

- **Memory-discipline "Conventions and workflow" section in `CLAUDE.md`** — a
  per-task *recall-before / remember-after* convention (scope localized to this
  repo's nick) so the vendored `remember` / `recall` skills are actually used,
  not just present: `/recall` before non-trivial work to build on prior
  decisions instead of re-deriving them, and `/remember` when a non-obvious
  decision, constraint, fix-and-why, or hard-won gotcha surfaces. The section
  documents this repo's memory as **in-repo and public** — records resolve to
  `<repo-root>/.eidetic/memory` (committed, team- and mesh-shared). Inserted
  idempotently (skipped if already present), slotted under an existing
  "Conventions and workflow" heading when one exists, else appended.

### Changed

- **Refreshed the `remember` + `recall` wrappers from eidetic-cli 0.10.0**
  (cite-don't-import) — picks up eidetic's **project-local store default**: the
  files backend now resolves per record by visibility — PUBLIC records inside a
  git repo go to `<repo-root>/.eidetic/memory` (committed, team-shared), PRIVATE
  records (or any record outside a repo) go to `$HOME/.eidetic/memory` (never
  committed), an explicit `EIDETIC_DATA_DIR` still wins, and recall reads both
  stores and merges. Also carries the 0.9.3 hardening (interactive-stdin guard,
  `help` as a search term, SIGPIPE-safe suffix parsing). **Recipe policy
  override (the wrappers here are NOT byte-verbatim):** the injected default
  visibility is flipped from eidetic's `private` to **`public`**, so a plain
  `/remember` lands the note in `./.eidetic/memory` in this repo, kept as part
  of the repo — pass `--visibility private` to route a record to `$HOME`
  instead. `remember` drives `eidetic remember` (idempotent upsert of one JSON
  record or an NDJSON batch on stdin); `recall` drives `eidetic recall` with
  four search modes (exact / approximate / keyword / hybrid). Each `SKILL.md` is
  localized only in the illustrative `--scope <nick>` examples (Provenance keeps
  "First-party to eidetic-cli"). Runtime dep: the `eidetic` CLI on PATH (else a
  local eidetic-cli checkout with `uv`) — **`eidetic >= 0.10.0`** for the
  in-repo routing; on an older CLI the public records still work but are stored
  in `$HOME/.eidetic/memory` instead of in-repo. Propagated by rollout-cli's
  `eidetic-memory` recipe.
@qodo-code-review

Copy link
Copy Markdown

Looking for bugs?

Check back in a few minutes. Qodo's review agents are on it.

@qodo-code-review

Copy link
Copy Markdown

PR Summary by Qodo

Refresh eidetic remember/recall wrappers for eidetic 0.10 + repo memory discipline
✨ Enhancement 📝 Documentation ⚙️ Configuration changes 🕐 20-40 Minutes

Grey Divider

Description

• Refresh vendored remember/recall wrappers to match eidetic-cli 0.10 store routing semantics.
• Default wrapper visibility to public so repo memory lands in ./.eidetic/memory by default.
• Document and enforce a recall-before / remember-after workflow in CLAUDE.md, with release bump.
Diagram

graph TD
A["Claude / Colleague agent"] --> B["remember.sh / recall.sh"] --> C["eidetic CLI (>=0.10)"]
B --> F["culture.yaml suffix"]
C --> D[("Repo .eidetic/memory")]
C --> E[("Home ~/.eidetic/memory")]
Loading
High-Level Assessment

The following are alternative approaches to this PR:

1. Keep upstream default visibility = private
  • ➕ Reduces risk of accidentally committing sensitive notes
  • ➕ Aligns with eidetic-cli upstream wrapper defaults
  • ➖ Undercuts the stated goal of repo-shared memory discipline (people forget to add --visibility public)
  • ➖ More private siloing; less benefit for team/mesh agents
2. Require explicit visibility (no injected default)
  • ➕ Avoids opinionated policy in wrappers
  • ➕ Forces the user to choose public vs private every time
  • ➖ Adds friction; likely reduces remember usage and increases inconsistent placement
  • ➖ More error-prone for automation and scripted use
3. Enforce store location via EIDETIC_DATA_DIR only
  • ➕ Single knob to control storage without wrapper policy changes
  • ➕ Works even with older eidetic versions
  • ➖ Cannot leverage the 0.10 per-visibility split (repo public + home private simultaneously)
  • ➖ Harder to support mixed public/private workflows without manual switching

Recommendation: The chosen approach (defaulting wrapper visibility to public, plus explicit warnings when scope/visibility are ambiguous) best matches the repo’s intent: make shared, in-repo memory the path of least resistance while still providing an escape hatch via --visibility private. The main tradeoff is the risk of committing sensitive info; the added warnings and the documented convention in CLAUDE.md are the right mitigations.

Files changed (5) +142 / -54

Enhancement (2) +74 / -53
recall.shUpdate recall wrapper for eidetic 0.10 routing + stricter CLI/arg handling +35/-27

Update recall wrapper for eidetic 0.10 routing + stricter CLI/arg handling

• Updates header/docs to reflect eidetic 0.10 per-visibility store resolution and removal of repo-local EIDETIC_DATA_DIR forcing. Tightens help/query parsing so empty query is an error (and 'help' remains a valid search term), hardens suffix parsing against SIGPIPE under pipefail, and defaults injected visibility to 'public' with a warning when no culture suffix is resolvable.

.claude/skills/recall/scripts/recall.sh

remember.shUpdate remember wrapper for eidetic 0.10 routing + stdin safety + public-by-default policy +39/-26

Update remember wrapper for eidetic 0.10 routing + stdin safety + public-by-default policy

• Updates wrapper documentation for eidetic 0.10 routing, simplifies missing-CLI messaging, and adds an interactive-stdin guard to avoid hanging on batch mode. Hardens suffix parsing against SIGPIPE and changes injected default visibility from 'private' to 'public', warning when no culture suffix is found to prevent unintentional public writes.

.claude/skills/remember/scripts/remember.sh

Documentation (2) +67 / -0
CHANGELOG.mdAdd 0.4.0 changelog entry for eidetic wrapper refresh and memory discipline +39/-0

Add 0.4.0 changelog entry for eidetic wrapper refresh and memory discipline

• Adds a new 0.4.0 section documenting the new memory-discipline convention and the eidetic 0.10 wrapper refresh, including the public-by-default policy override and storage routing behavior.

CHANGELOG.md

CLAUDE.mdDocument memory-discipline workflow and in-repo public eidetic store +28/-0

Document memory-discipline workflow and in-repo public eidetic store

• Adds a new "Conventions and workflow" section defining recall-before/remember-after practices and explicitly describing in-repo public memory storage at '<repo-root>/.eidetic/memory', with guidance on using '--visibility private' when needed.

CLAUDE.md

Other (1) +1 / -1
pyproject.tomlBump project version to 0.4.0 +1/-1

Bump project version to 0.4.0

• Updates the project version from 0.3.0 to 0.4.0 to match the documented release in the changelog.

pyproject.toml

@OriNachum OriNachum merged commit 74a9f70 into main Jun 24, 2026
7 checks passed
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.

1 participant