feat: manifest-first entity recall for all platforms (#224)#226
Conversation
📝 WalkthroughWalkthroughEntity discovery/search now includes both ChangesManifest-First Entity Recall
Sequence DiagramsequenceDiagram
participant Agent as Agent (Claude/Codex/Bob)
participant Retrieve as retrieve_entities.py
participant EntityIO as entity_io (load_manifest)
participant FS as FileSystem (.evolve/<dirs>)
participant Manifest as Manifest Output
Agent->>Retrieve: request entity guidance
Retrieve->>EntityIO: find_recall_entity_dirs()
EntityIO-->>Retrieve: [entities/, public/] (existing ones)
loop per recall root
Retrieve->>EntityIO: load_manifest(root_dir)
EntityIO->>FS: scan **/*.md (skip symlinks, .git)
FS-->>EntityIO: markdown files
EntityIO->>EntityIO: _parse_frontmatter_only()
EntityIO->>EntityIO: _manifest_path() normalize path
EntityIO-->>Retrieve: {path,type,trigger} entries
end
Retrieve->>EntityIO: dedupe_manifest_entries()
EntityIO-->>Retrieve: deduped, sorted entries
Retrieve->>Manifest: format_entities() -> header + JSON/markdown lines
Manifest-->>Agent: manifest-only output
Agent->>FS: read_file(path) when trigger matches
FS-->>Agent: full entity markdown (on demand)
Estimated code review effort🎯 4 (Complex) | ⏱️ ~60 minutes Possibly related issues
Possibly related PRs
Suggested reviewers
Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Tip 💬 Introducing Slack Agent: The best way for teams to turn conversations into code.Slack Agent is built on CodeRabbit's deep understanding of your code, so your team can collaborate across the entire SDLC without losing context.
Built for teams:
One agent for your entire SDLC. Right inside Slack. Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
218edec to
46ab12c
Compare
|
Haven't tested this in the agent harnresses yet claude, codex, and IBM Bob. |
87d1b15 to
da2adbc
Compare
There was a problem hiding this comment.
Actionable comments posted: 1
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (7)
plugin-source/skills/evolve-lite/recall/SKILL.md.j2 (1)
70-72:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winFailure conditions / completion note still reference only
entities/.The Required Action and Minimum Acceptable Procedure now include
${EVOLVE_DIR:-.evolve}/public/, but the failure condition on line 72 and the "Required Visible Completion Note" examples on lines 48-52 still say only${EVOLVE_DIR:-.evolve}/entities/. Worth syncing these so an agent that searches onlyentities/(and skipspublic/) is correctly flagged as not-complete, and so the completion note records both roots.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@plugin-source/skills/evolve-lite/recall/SKILL.md.j2` around lines 70 - 72, Update the failure condition and the "Required Visible Completion Note" examples in SKILL.md.j2 so they reference both `${EVOLVE_DIR:-.evolve}/entities/` and `${EVOLVE_DIR:-.evolve}/public/` instead of only `entities/`; specifically edit the failure condition around the existing text that mentions `${EVOLVE_DIR:-.evolve}/entities/` and the sample completion notes (lines that list required visible files) to include `${EVOLVE_DIR:-.evolve}/public/` as an additional root so an agent that only checks `entities/` will be marked incomplete and the completion note records both roots.tests/platform_integrations/test_retrieve.py (1)
146-159:⚠️ Potential issue | 🟡 Minor | ⚡ Quick win
real_file.write_text()bypasses thefile_assertionsfixture, violating the test guidelines.Line 151 writes a file directly rather than through
file_assertions.write_text(). The symlink creation on line 152 is fine sincefile_assertionslikely has no symlink API, but the regular file write should go through the fixture.📝 Proposed fix
def test_skips_symlinked_markdown_entities(self, temp_project_dir, retrieve_script, expected_header, platform_name): d = temp_project_dir / ".evolve" gdir = d / "entities" / "subscribed" / "alice" / "guideline" - gdir.mkdir(parents=True) - real_file = gdir / "real.md" - real_file.write_text("---\ntype: guideline\ntrigger: when testing\n---\n\nReal content.\n") + real_file = gdir / "real.md" + file_assertions.write_text(real_file, "---\ntype: guideline\ntrigger: when testing\n---\n\nReal content.\n") (gdir / "link.md").symlink_to(real_file)Add
file_assertionsto the test's parameter list if it isn't already there. As per coding guidelines, all file operations in platform integration tests must usefile_assertions— do not manually create files.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@tests/platform_integrations/test_retrieve.py` around lines 146 - 159, The test function test_skips_symlinked_markdown_entities is directly calling real_file.write_text(), bypassing the file_assertions fixture; add file_assertions to the test signature and replace the direct write with file_assertions.write_text(...) to create the markdown file (keep the subsequent symlink creation via (gdir / "link.md").symlink_to(real_file) as-is), ensuring all file writes in platform integration tests go through the file_assertions API.platform-integrations/claw-code/plugins/evolve-lite/skills/evolve-lite/recall/SKILL.md (1)
39-40:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winSame stale
public/omission as the Claude and Codex SKILL.md files.Lines 39–40 (Completion Note templates) and line 54 (Failure Condition) still only reference
entities/. Apply the same fix.Also applies to: 54-54
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@platform-integrations/claw-code/plugins/evolve-lite/skills/evolve-lite/recall/SKILL.md` around lines 39 - 40, Update the Completion Note templates and the Failure Condition in SKILL.md to include the missing public/ path the same way as the Claude and Codex SKILL.md fixes: change the two completion templates that currently mention only "entities/" (`Recall complete: searched ${EVOLVE_DIR:-.evolve}/entities/, read <files>, applicable guidance: <summary>` and `Recall complete: searched ${EVOLVE_DIR:-.evolve}/entities/, no relevant entities found`) to reference both "entities/" and "public/" (e.g. `${EVOLVE_DIR:-.evolve}/entities/ and ${EVOLVE_DIR:-.evolve}/public/`), and make the same update to the Failure Condition line that currently references only `entities/` so it also includes `public/`.platform-integrations/bob/evolve-lite/skills/evolve-lite-recall/SKILL.md (1)
39-40:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winSame stale
public/omission as the other SKILL.md files.Lines 39–40 (Completion Note templates) and line 54 (Failure Condition) still only reference
entities/. Apply the same fix from the ClaudeSKILL.mdcomment.Also applies to: 54-54
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@platform-integrations/bob/evolve-lite/skills/evolve-lite-recall/SKILL.md` around lines 39 - 40, The Completion Note templates and Failure Condition in SKILL.md (the lines that render the completion messages like "Recall complete: searched ${EVOLVE_DIR:-.evolve}/entities/..." and the failure text) still omit the public/ prefix; update those templates to reference ${EVOLVE_DIR:-.evolve}/public/entities/ (or include both paths if intended) so they match the other SKILL.md files (apply the same change you made in the Claude SKILL.md to the Completion Note templates and the Failure Condition).platform-integrations/claude/plugins/evolve-lite/skills/evolve-lite/recall/SKILL.md (1)
40-41:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winFailure Conditions and Completion Note templates don't mention
public/.Lines 40–41 and line 55 still only reference
${EVOLVE_DIR:-.evolve}/entities/, but the updated Completion Rule (line 31) and Minimum Acceptable Procedure (line 45) now require inspecting bothentities/andpublic/. An agent that skipspublic/will not trigger the Failure Condition and would produce a completion note that doesn't acknowledge searchingpublic/.📝 Proposed fix
-`Recall complete: searched ${EVOLVE_DIR:-.evolve}/entities/, quoted <files> verbatim below` -`Recall complete: searched ${EVOLVE_DIR:-.evolve}/entities/, no relevant entities found` +`Recall complete: searched ${EVOLVE_DIR:-.evolve}/entities/ and ${EVOLVE_DIR:-.evolve}/public/, quoted <files> verbatim below` +`Recall complete: searched ${EVOLVE_DIR:-.evolve}/entities/ and ${EVOLVE_DIR:-.evolve}/public/, no relevant entities found`-- You did not inspect `${EVOLVE_DIR:-.evolve}/entities/` +- You did not inspect `${EVOLVE_DIR:-.evolve}/entities/` or `${EVOLVE_DIR:-.evolve}/public/`The same fix applies to the Codex, Claw-code, and Bob
SKILL.mdfiles.Also applies to: 55-55
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@platform-integrations/claude/plugins/evolve-lite/skills/evolve-lite/recall/SKILL.md` around lines 40 - 41, Update the Failure Conditions and Completion Note templates so they reference both the entities and public directories; replace occurrences of `${EVOLVE_DIR:-.evolve}/entities/` in the Failure Condition strings and Completion Note templates (the lines containing `Recall complete: searched ${EVOLVE_DIR:-.evolve}/entities/, quoted <files> verbatim below` and `Recall complete: searched ${EVOLVE_DIR:-.evolve}/entities/, no relevant entities found`) with wording that includes `${EVOLVE_DIR:-.evolve}/public/` (e.g., `searched ${EVOLVE_DIR:-.evolve}/entities/ and ${EVOLVE_DIR:-.evolve}/public/`), and apply the same change to the equivalent SKILL.md files for Codex, Claw-code, and Bob so the Completion Rule and Minimum Acceptable Procedure align with the Failure Condition.platform-integrations/codex/plugins/evolve-lite/skills/evolve-lite/recall/SKILL.md (1)
39-40:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winSame stale
public/omission as the Claude SKILL.md.Lines 39–40 (Completion Note templates) and line 54 (Failure Condition) still only reference
entities/. Apply the same fix described for the ClaudeSKILL.md.Also applies to: 54-54
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@platform-integrations/codex/plugins/evolve-lite/skills/evolve-lite/recall/SKILL.md` around lines 39 - 40, Update the Completion Note and Failure Condition templates to include the public entities path in addition to the existing entities path: replace references to `${EVOLVE_DIR:-.evolve}/entities/` in the two completion templates (`Recall complete: searched ${EVOLVE_DIR:-.evolve}/entities/, read <files>, applicable guidance: <summary>` and `Recall complete: searched ${EVOLVE_DIR:-.evolve}/entities/, no relevant entities found`) and the failure-condition template so they mention both `${EVOLVE_DIR:-.evolve}/entities/` and `${EVOLVE_DIR:-.evolve}/public/entities/` (or otherwise include `public/entities/`) to mirror the fix applied in the Claude SKILL.md.platform-integrations/claw-code/plugins/evolve-lite/skills/evolve-lite/recall/scripts/retrieve_entities.py (1)
1-96:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winAdd claw-code to test coverage for the updated retrieve script.
The PR adds
test_claude_retrieve_manifest.pyandtest_codex_retrieve_manifest.py, buttest_retrieve.py'sSCRIPT_VARIANTScovers onlyclaudeandcodex. The claw-coderetrieve_entities.pyscript was updated to manifest-first behavior but appears in no test file—it's currently out of scope for smoke tests. Consider adding claw-code toSCRIPT_VARIANTSor documenting why it's intentionally excluded.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@platform-integrations/claw-code/plugins/evolve-lite/skills/evolve-lite/recall/scripts/retrieve_entities.py` around lines 1 - 96, The test matrix misses the "claw-code" variant so the updated retrieve_entities.py isn't exercised; update the test_retrieve.py constant SCRIPT_VARIANTS to include a "claw-code" entry that maps the variant name used by the new script (retrieve_entities.py) into the existing test harness (the same way "claude" and "codex" are defined), then ensure the test runner picks up that variant so test_claude_retrieve_manifest.py and test_codex_retrieve_manifest.py behavior is mirrored for "claw-code".
🧹 Nitpick comments (3)
plugin-source/skills/evolve-lite/recall/SKILL.md.j2 (1)
153-158: 💤 Low value“On-Demand Expansion” section is bob-only — confirm intentional.
Manifest-first recall is the new default for claude / claw-code / codex too, but the explicit "use
read_fileto expand the entity" guidance is gated toplatform == "bob". The non-bobHow It Worksstep 4 mentions on-demand reading briefly, so this may be by design — but consider whether non-bob agents would benefit from the same explicit instruction (especially for the rationale-section reminder).🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@plugin-source/skills/evolve-lite/recall/SKILL.md.j2` around lines 153 - 158, The "On-Demand Expansion" block is currently gated by the template condition platform == "bob" but the guidance to "use `read_file` to load the full entity" (and the `## Rationale` reminder) may be relevant to other agents referenced in the docs; confirm intent and either (a) remove the platform conditional around the "On-Demand Expansion" section so the `read_file` guidance and rationale reminder appear for all platforms, or (b) explicitly duplicate or adapt the text for non-bob platforms (e.g., under the existing "How It Works" step 4) so agents like claude/claw-code/codex receive the same expansion instructions; update the template surrounding the "On-Demand Expansion" header and the `read_file` mention accordingly.plugin-source/lib/entity_io.py (1)
267-278: 💤 Low value
_manifest_pathfallback to absolute path may surface in edge configs.
get_evolve_dir().resolve().parentis the project root only whenEVOLVE_DIRis unset (or points inside the project). If a user setsEVOLVE_DIRto e.g./tmp/evolve-cache, the parent is/tmp, so most repo files happen to fall outside it and therelative_toraisesValueError→ fallback emits an absolute path in the manifest. Probably fine for now since the manifest is consumed line-by-line by the agent, but worth keeping in mind if any downstream consumer relies on relative paths.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@plugin-source/lib/entity_io.py` around lines 267 - 278, _manifest_path currently uses get_evolve_dir().resolve().parent as the project root which can be outside the real repo when EVOLVE_DIR is set; change the project-root determination in _manifest_path to fall back to a more appropriate repo root (e.g. detect the VCS/root by walking parents for a .git or similar marker or use Path.cwd().resolve()) when the evolve dir parent is not an ancestor of the provided path, then call path.resolve().relative_to(found_project_root); keep the existing ValueError catch to return str(path) only as a last resort and reference _manifest_path and get_evolve_dir to locate the change.plugin-source/skills/evolve-lite/recall/scripts/retrieve_entities.py.j2 (1)
41-46: 💤 Low valueBob markdown format is fine, but consider trigger sanitation.
The bullet line interpolates
e['trigger']raw into a markdown bullet. If a trigger ever contains a newline or stray markdown (e.g. unbalanced backticks), the manifest renders poorly in Cline. Triggers are meant to be short single-line strings, so this is unlikely in practice — but flattening newlines defensively (e.g.e['trigger'].replace('\n', ' ')) would harden the UI rendering without behavior changes for well-formed entities.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@plugin-source/skills/evolve-lite/recall/scripts/retrieve_entities.py.j2` around lines 41 - 46, The Bob markdown branch currently injects e['trigger'] raw into the bullet lines which can break rendering; in the platform == "bob" branch where lines = [f"- `{e['path']}` [{e['type']}] — {e['trigger']}" for e in entities], sanitize the trigger first by flattening newlines (e['trigger'].replace('\n', ' ')) and escaping backticks (e.g., replace '`' with '\`') or otherwise escaping markdown before interpolating into lines, then use that sanitized_trigger when building the list so header + "\n".join(lines) remains unchanged.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@platform-integrations/bob/evolve-lite/skills/evolve-lite-recall/SKILL.md`:
- Around line 85-88: The fenced code block containing the two list lines
starting with "-
`.evolve/entities/guideline/use-context-managers-for-file-operations.md`" should
include a language specifier to satisfy MD040; update the opening fence from ```
to ```text so the block becomes a text-fenced code block in SKILL.md, preserving
the existing content and closing fence.
---
Outside diff comments:
In `@platform-integrations/bob/evolve-lite/skills/evolve-lite-recall/SKILL.md`:
- Around line 39-40: The Completion Note templates and Failure Condition in
SKILL.md (the lines that render the completion messages like "Recall complete:
searched ${EVOLVE_DIR:-.evolve}/entities/..." and the failure text) still omit
the public/ prefix; update those templates to reference
${EVOLVE_DIR:-.evolve}/public/entities/ (or include both paths if intended) so
they match the other SKILL.md files (apply the same change you made in the
Claude SKILL.md to the Completion Note templates and the Failure Condition).
In
`@platform-integrations/claude/plugins/evolve-lite/skills/evolve-lite/recall/SKILL.md`:
- Around line 40-41: Update the Failure Conditions and Completion Note templates
so they reference both the entities and public directories; replace occurrences
of `${EVOLVE_DIR:-.evolve}/entities/` in the Failure Condition strings and
Completion Note templates (the lines containing `Recall complete: searched
${EVOLVE_DIR:-.evolve}/entities/, quoted <files> verbatim below` and `Recall
complete: searched ${EVOLVE_DIR:-.evolve}/entities/, no relevant entities
found`) with wording that includes `${EVOLVE_DIR:-.evolve}/public/` (e.g.,
`searched ${EVOLVE_DIR:-.evolve}/entities/ and ${EVOLVE_DIR:-.evolve}/public/`),
and apply the same change to the equivalent SKILL.md files for Codex, Claw-code,
and Bob so the Completion Rule and Minimum Acceptable Procedure align with the
Failure Condition.
In
`@platform-integrations/claw-code/plugins/evolve-lite/skills/evolve-lite/recall/scripts/retrieve_entities.py`:
- Around line 1-96: The test matrix misses the "claw-code" variant so the
updated retrieve_entities.py isn't exercised; update the test_retrieve.py
constant SCRIPT_VARIANTS to include a "claw-code" entry that maps the variant
name used by the new script (retrieve_entities.py) into the existing test
harness (the same way "claude" and "codex" are defined), then ensure the test
runner picks up that variant so test_claude_retrieve_manifest.py and
test_codex_retrieve_manifest.py behavior is mirrored for "claw-code".
In
`@platform-integrations/claw-code/plugins/evolve-lite/skills/evolve-lite/recall/SKILL.md`:
- Around line 39-40: Update the Completion Note templates and the Failure
Condition in SKILL.md to include the missing public/ path the same way as the
Claude and Codex SKILL.md fixes: change the two completion templates that
currently mention only "entities/" (`Recall complete: searched
${EVOLVE_DIR:-.evolve}/entities/, read <files>, applicable guidance: <summary>`
and `Recall complete: searched ${EVOLVE_DIR:-.evolve}/entities/, no relevant
entities found`) to reference both "entities/" and "public/" (e.g.
`${EVOLVE_DIR:-.evolve}/entities/ and ${EVOLVE_DIR:-.evolve}/public/`), and make
the same update to the Failure Condition line that currently references only
`entities/` so it also includes `public/`.
In
`@platform-integrations/codex/plugins/evolve-lite/skills/evolve-lite/recall/SKILL.md`:
- Around line 39-40: Update the Completion Note and Failure Condition templates
to include the public entities path in addition to the existing entities path:
replace references to `${EVOLVE_DIR:-.evolve}/entities/` in the two completion
templates (`Recall complete: searched ${EVOLVE_DIR:-.evolve}/entities/, read
<files>, applicable guidance: <summary>` and `Recall complete: searched
${EVOLVE_DIR:-.evolve}/entities/, no relevant entities found`) and the
failure-condition template so they mention both
`${EVOLVE_DIR:-.evolve}/entities/` and `${EVOLVE_DIR:-.evolve}/public/entities/`
(or otherwise include `public/entities/`) to mirror the fix applied in the
Claude SKILL.md.
In `@plugin-source/skills/evolve-lite/recall/SKILL.md.j2`:
- Around line 70-72: Update the failure condition and the "Required Visible
Completion Note" examples in SKILL.md.j2 so they reference both
`${EVOLVE_DIR:-.evolve}/entities/` and `${EVOLVE_DIR:-.evolve}/public/` instead
of only `entities/`; specifically edit the failure condition around the existing
text that mentions `${EVOLVE_DIR:-.evolve}/entities/` and the sample completion
notes (lines that list required visible files) to include
`${EVOLVE_DIR:-.evolve}/public/` as an additional root so an agent that only
checks `entities/` will be marked incomplete and the completion note records
both roots.
In `@tests/platform_integrations/test_retrieve.py`:
- Around line 146-159: The test function test_skips_symlinked_markdown_entities
is directly calling real_file.write_text(), bypassing the file_assertions
fixture; add file_assertions to the test signature and replace the direct write
with file_assertions.write_text(...) to create the markdown file (keep the
subsequent symlink creation via (gdir / "link.md").symlink_to(real_file) as-is),
ensuring all file writes in platform integration tests go through the
file_assertions API.
---
Nitpick comments:
In `@plugin-source/lib/entity_io.py`:
- Around line 267-278: _manifest_path currently uses
get_evolve_dir().resolve().parent as the project root which can be outside the
real repo when EVOLVE_DIR is set; change the project-root determination in
_manifest_path to fall back to a more appropriate repo root (e.g. detect the
VCS/root by walking parents for a .git or similar marker or use
Path.cwd().resolve()) when the evolve dir parent is not an ancestor of the
provided path, then call path.resolve().relative_to(found_project_root); keep
the existing ValueError catch to return str(path) only as a last resort and
reference _manifest_path and get_evolve_dir to locate the change.
In `@plugin-source/skills/evolve-lite/recall/scripts/retrieve_entities.py.j2`:
- Around line 41-46: The Bob markdown branch currently injects e['trigger'] raw
into the bullet lines which can break rendering; in the platform == "bob" branch
where lines = [f"- `{e['path']}` [{e['type']}] — {e['trigger']}" for e in
entities], sanitize the trigger first by flattening newlines
(e['trigger'].replace('\n', ' ')) and escaping backticks (e.g., replace '`' with
'\`') or otherwise escaping markdown before interpolating into lines, then use
that sanitized_trigger when building the list so header + "\n".join(lines)
remains unchanged.
In `@plugin-source/skills/evolve-lite/recall/SKILL.md.j2`:
- Around line 153-158: The "On-Demand Expansion" block is currently gated by the
template condition platform == "bob" but the guidance to "use `read_file` to
load the full entity" (and the `## Rationale` reminder) may be relevant to other
agents referenced in the docs; confirm intent and either (a) remove the platform
conditional around the "On-Demand Expansion" section so the `read_file` guidance
and rationale reminder appear for all platforms, or (b) explicitly duplicate or
adapt the text for non-bob platforms (e.g., under the existing "How It Works"
step 4) so agents like claude/claw-code/codex receive the same expansion
instructions; update the template surrounding the "On-Demand Expansion" header
and the `read_file` mention accordingly.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: dcf4fdfd-c7f1-457e-b77c-c455454140e4
📒 Files selected for processing (24)
platform-integrations/bob/evolve-lite/lib/entity_io.pyplatform-integrations/bob/evolve-lite/skills/evolve-lite-recall/SKILL.mdplatform-integrations/bob/evolve-lite/skills/evolve-lite-recall/scripts/retrieve_entities.pyplatform-integrations/claude/plugins/evolve-lite/lib/entity_io.pyplatform-integrations/claude/plugins/evolve-lite/skills/evolve-lite/recall/SKILL.mdplatform-integrations/claude/plugins/evolve-lite/skills/evolve-lite/recall/scripts/retrieve_entities.pyplatform-integrations/claw-code/plugins/evolve-lite/lib/entity_io.pyplatform-integrations/claw-code/plugins/evolve-lite/skills/evolve-lite/recall/SKILL.mdplatform-integrations/claw-code/plugins/evolve-lite/skills/evolve-lite/recall/scripts/retrieve_entities.pyplatform-integrations/codex/plugins/evolve-lite/lib/entity_io.pyplatform-integrations/codex/plugins/evolve-lite/skills/evolve-lite/recall/SKILL.mdplatform-integrations/codex/plugins/evolve-lite/skills/evolve-lite/recall/scripts/retrieve_entities.pyplugin-source/lib/entity_io.pyplugin-source/skills/evolve-lite/recall/SKILL.md.j2plugin-source/skills/evolve-lite/recall/scripts/retrieve_entities.py.j2tests/platform_integrations/conftest.pytests/platform_integrations/test_bob_sharing.pytests/platform_integrations/test_claude_retrieve_manifest.pytests/platform_integrations/test_codex_retrieve_manifest.pytests/platform_integrations/test_codex_sharing.pytests/platform_integrations/test_entity_io_core.pytests/platform_integrations/test_retrieve.pytests/platform_integrations/test_subscribe.pytests/platform_integrations/test_sync.py
✅ Files skipped from review due to trivial changes (3)
- tests/platform_integrations/conftest.py
- tests/platform_integrations/test_entity_io_core.py
- tests/platform_integrations/test_bob_sharing.py
🚧 Files skipped from review as they are similar to previous changes (6)
- tests/platform_integrations/test_sync.py
- platform-integrations/claude/plugins/evolve-lite/lib/entity_io.py
- tests/platform_integrations/test_subscribe.py
- tests/platform_integrations/test_codex_retrieve_manifest.py
- tests/platform_integrations/test_codex_sharing.py
- tests/platform_integrations/test_claude_retrieve_manifest.py
Rewrite the recall hook output from full entity bodies to a minimal
manifest of {path, type, trigger}, so the agent reads entity files on
demand rather than loading every stored entity into every turn.
- plugin-source/lib/entity_io.py: add load_manifest,
dedupe_manifest_entries, frontmatter-only parser; include public/ in
find_recall_entity_dirs so published entities participate in recall;
_manifest_path now resolves relative to the evolve root's parent so
paths stay stable regardless of caller cwd.
- plugin-source/skills/evolve-lite/recall/scripts/retrieve_entities.py
renamed to .py.j2 with platform-aware format_entities (bob emits
human-readable markdown; claude/claw-code/codex emit JSON Lines).
- plugin-source/skills/evolve-lite/recall/SKILL.md.j2: describe
manifest emission per platform; cover public/ in the manual
fallback; note the injected manifest supersedes directory scanning
when present.
- tests/platform_integrations: add test_entity_io_core.py,
test_claude_retrieve_manifest.py, test_codex_retrieve_manifest.py;
update test_retrieve.py, test_bob_sharing.py and the sharing/sync
suites for manifest-first assertions.
- platform-integrations/*: regenerated from plugin-source via
build_plugins.py render.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
3be24a6 to
a3b61cf
Compare
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
Change tested in claude code. |
|
Change tested in codex. |
|
Tested in IBM bob as well. |
|
@vinodmut @illeatmyhat this PR is ready for review and merge |
There was a problem hiding this comment.
Actionable comments posted: 2
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (5)
platform-integrations/bob/evolve-lite/skills/evolve-lite-recall/SKILL.md (1)
30-44:⚠️ Potential issue | 🟠 Major | ⚡ Quick winCompletion criteria text is now inconsistent with manifest/public search requirements.
The updated workflow (Line 30, Line 44) correctly requires injected manifest or both
entities/+public/, but the completion templates and failure condition still validate onlyentities/. That allows a “Recall complete” message even when required sources were skipped.Suggested doc patch
- - `Recall complete: searched ${EVOLVE_DIR:-.evolve}/entities/, read <files>, applicable guidance: <summary>` - - `Recall complete: searched ${EVOLVE_DIR:-.evolve}/entities/, no relevant entities found` + - `Recall complete: checked injected manifest or searched ${EVOLVE_DIR:-.evolve}/entities/ and ${EVOLVE_DIR:-.evolve}/public/, read <files>, applicable guidance: <summary>` + - `Recall complete: checked injected manifest or searched ${EVOLVE_DIR:-.evolve}/entities/ and ${EVOLVE_DIR:-.evolve}/public/, no relevant entities found` - - You did not inspect `${EVOLVE_DIR:-.evolve}/entities/` + - You did not inspect injected manifest (if present) or both `${EVOLVE_DIR:-.evolve}/entities/` and `${EVOLVE_DIR:-.evolve}/public/`🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@platform-integrations/bob/evolve-lite/skills/evolve-lite-recall/SKILL.md` around lines 30 - 44, The completion templates and failure check in SKILL.md are inconsistent: the procedure requires using an injected manifest or searching both `${EVOLVE_DIR:-.evolve}/entities/` and `${EVOLVE_DIR:-.evolve}/public/`, but the visible completion note and "no relevant entities" template only mention `entities/`; update these templates and any validation logic to require and reflect both sources (or the injected manifest) — specifically change the required completion note examples (`Recall complete: searched ${EVOLVE_DIR:-.evolve}/entities/, read <files>, applicable guidance: <summary>` and the "no relevant entities" variant) to reference both `${EVOLVE_DIR:-.evolve}/entities/` and `${EVOLVE_DIR:-.evolve}/public/` (or the injected manifest alternative), and adjust any failure-condition text that currently validates only `entities/` so it enforces the joint check.platform-integrations/codex/plugins/evolve-lite/skills/evolve-lite/recall/SKILL.md (2)
54-54:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winUpdate failure condition to include both directories.
The failure condition only mentions
${EVOLVE_DIR:-.evolve}/entities/but the workflow now requires inspecting both/entities/and/public/directories (as stated throughout the document). This could mislead users into thinking they only need to check one directory.📝 Proposed fix to include both directories
-- You did not inspect `${EVOLVE_DIR:-.evolve}/entities/` +- You did not inspect `${EVOLVE_DIR:-.evolve}/entities/` and `${EVOLVE_DIR:-.evolve}/public/`🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@platform-integrations/codex/plugins/evolve-lite/skills/evolve-lite/recall/SKILL.md` at line 54, Update the failure message that currently reads "You did not inspect `${EVOLVE_DIR:-.evolve}/entities/`" so it explicitly references both directories required by the workflow: `${EVOLVE_DIR:-.evolve}/entities/` and `${EVOLVE_DIR:-.evolve}/public/`; locate the string in SKILL.md and change the wording to mention both directories (and scan the surrounding text in SKILL.md for any other occurrences to ensure consistency with the rest of the document).
39-40:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winUpdate completion note examples to include both directories.
The completion note examples only mention
${EVOLVE_DIR:-.evolve}/entities/but the workflow now scans both/entities/and/public/directories (as stated in lines 30 and 44). Users following these examples would omit the/public/directory from their completion notes.📝 Proposed fix to include both directories
-- `Recall complete: searched ${EVOLVE_DIR:-.evolve}/entities/, read <files>, applicable guidance: <summary>` -- `Recall complete: searched ${EVOLVE_DIR:-.evolve}/entities/, no relevant entities found` +- `Recall complete: searched ${EVOLVE_DIR:-.evolve}/entities/ and ${EVOLVE_DIR:-.evolve}/public/, read <files>, applicable guidance: <summary>` +- `Recall complete: searched ${EVOLVE_DIR:-.evolve}/entities/ and ${EVOLVE_DIR:-.evolve}/public/, no relevant entities found`🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@platform-integrations/codex/plugins/evolve-lite/skills/evolve-lite/recall/SKILL.md` around lines 39 - 40, Update the completion note examples in SKILL.md to reference both scanned directories instead of only entities: change the templates that currently mention `${EVOLVE_DIR:-.evolve}/entities/` to include `${EVOLVE_DIR:-.evolve}/entities/` and `${EVOLVE_DIR:-.evolve}/public/` (e.g., `Recall complete: searched ${EVOLVE_DIR:-.evolve}/entities/ and ${EVOLVE_DIR:-.evolve}/public/, read <files>, applicable guidance: <summary>` and `Recall complete: searched ${EVOLVE_DIR:-.evolve}/entities/ and ${EVOLVE_DIR:-.evolve}/public/, no relevant entities found`), updating the examples that appear in SKILL.md so they match the workflow described around lines referencing the scan of both /entities/ and /public/.platform-integrations/claude/plugins/evolve-lite/skills/evolve-lite/recall/SKILL.md (2)
55-55:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winUpdate failure condition to include both recall directories.
Line 55 mentions only
.evolve/entities/, but the documented behavior (lines 31, 45, 63) requires inspecting both.evolve/entities/and.evolve/public/. Update this failure condition to be consistent.📝 Proposed fix to include both directories
-- You did not inspect `${EVOLVE_DIR:-.evolve}/entities/` +- You did not inspect `${EVOLVE_DIR:-.evolve}/entities/` and `${EVOLVE_DIR:-.evolve}/public/`🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@platform-integrations/claude/plugins/evolve-lite/skills/evolve-lite/recall/SKILL.md` at line 55, Update the failure-condition sentence that currently references only `${EVOLVE_DIR:-.evolve}/entities/` so it mentions and checks both `${EVOLVE_DIR:-.evolve}/entities/` and `${EVOLVE_DIR:-.evolve}/public/` (to match the documented behavior on lines 31, 45, and 63); locate the single-line failure condition in SKILL.md (the line that starts "You did not inspect ...") and rewrite it to include both directories explicitly and consistently.
40-41:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winUpdate completion note examples to include both recall directories.
The completion note examples still reference only
.evolve/entities/, but lines 31, 45, and 63 document that both.evolve/entities/and.evolve/public/should be searched. Update these examples to match.📝 Proposed fix to include both directories
-- `Recall complete: searched ${EVOLVE_DIR:-.evolve}/entities/, quoted <files> verbatim below` -- `Recall complete: searched ${EVOLVE_DIR:-.evolve}/entities/, no relevant entities found` +- `Recall complete: searched ${EVOLVE_DIR:-.evolve}/entities/ and ${EVOLVE_DIR:-.evolve}/public/, quoted <files> verbatim below` +- `Recall complete: searched ${EVOLVE_DIR:-.evolve}/entities/ and ${EVOLVE_DIR:-.evolve}/public/, no relevant entities found`🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@platform-integrations/claude/plugins/evolve-lite/skills/evolve-lite/recall/SKILL.md` around lines 40 - 41, Update the completion note examples that currently reference only `${EVOLVE_DIR:-.evolve}/entities/` so they list both directories; replace instances of the strings like "Recall complete: searched ${EVOLVE_DIR:-.evolve}/entities/, quoted <files> verbatim below" and "Recall complete: searched ${EVOLVE_DIR:-.evolve}/entities/, no relevant entities found" with versions that include both paths (e.g. "Recall complete: searched ${EVOLVE_DIR:-.evolve}/entities/ and ${EVOLVE_DIR:-.evolve}/public/, quoted <files> verbatim below" and "Recall complete: searched ${EVOLVE_DIR:-.evolve}/entities/ and ${EVOLVE_DIR:-.evolve}/public/, no relevant entities found") so the examples match the documented search behavior referenced elsewhere in SKILL.md (the examples near the existing completion notes).
🧹 Nitpick comments (2)
plugin-source/skills/evolve-lite/recall/SKILL.md.j2 (1)
124-137: ⚡ Quick winManifest examples should include a
public/entry to match the new behaviorBoth example outputs only show
.evolve/entities/..., which weakens the new dual-root guidance and can bias readers away frompublic/.Suggested example tweak
```text - `.evolve/entities/guideline/use-context-managers-for-file-operations.md` [guideline] — When processing files or managing resources +- `.evolve/public/guideline/review-checklist.md` [guideline] — When performing code review - `.evolve/entities/subscribed/alice/guideline/error-handling.md` [guideline] — When writing error handlers@@
{"path": ".evolve/entities/guideline/use-context-managers-for-file-operations.md", "type": "guideline", "trigger": "When processing files or managing resources"} +{"path": ".evolve/public/guideline/review-checklist.md", "type": "guideline", "trigger": "When performing code review"}</details> <details> <summary>🤖 Prompt for AI Agents</summary>Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.In
@plugin-source/skills/evolve-lite/recall/SKILL.md.j2around lines 124 - 137,
Update the manifest examples in SKILL.md.j2 so they include a representative
.evolve/public/...entry alongside the existing.evolve/entities/...
entries; specifically modify both the human-readable (platform == "bob") block
and the JSON manifest block to add a public guideline (e.g., a path like
.evolve/public/guideline/review-checklist.mdwith an appropriate "type" and
"trigger") so the examples reflect the new dual-root behavior implemented around
the platform conditional.</details> </blockquote></details> <details> <summary>platform-integrations/codex/plugins/evolve-lite/skills/evolve-lite/recall/SKILL.md (1)</summary><blockquote> `87-87`: _💤 Low value_ **Capitalize "Markdown" for proper noun.** The word "markdown" should be capitalized as "Markdown" when referring to the formatting language. As per coding guidelines, proper nouns should be capitalized. <details> <summary>✏️ Proposed fix</summary> ```diff -Each file still uses markdown with YAML frontmatter: +Each file still uses Markdown with YAML frontmatter:🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@platform-integrations/codex/plugins/evolve-lite/skills/evolve-lite/recall/SKILL.md` at line 87, The phrase "Each file still uses markdown with YAML frontmatter:" uses a lowercase "markdown"; update it to "Markdown" (capitalize the proper noun) in SKILL.md by replacing "markdown" with "Markdown" and check for any other occurrences of the lowercase term in the same file (e.g., within the YAML frontmatter example or headings) to ensure consistency.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In
`@platform-integrations/claw-code/plugins/evolve-lite/skills/evolve-lite/recall/SKILL.md`:
- Around line 30-33: Update the completion-note examples in SKILL.md to reflect
the manifest-or-dual-root discovery described in the steps: when a manifest
exists this should be used to choose entity files, otherwise fall back to
inspecting `${EVOLVE_DIR:-.evolve}/entities/` and
`${EVOLVE_DIR:-.evolve}/public/`; adjust the “required note” examples so at
least one shows the manifest-aware form (e.g., mentions using the injected
manifest to select files) and/or shows both roots
`${EVOLVE_DIR:-.evolve}/entities/` and `${EVOLVE_DIR:-.evolve}/public/` so the
examples match the runtime `manifest-or-dual-root` behavior described in the
numbered steps.
In `@plugin-source/skills/evolve-lite/recall/SKILL.md.j2`:
- Line 33: The completion/failure text in SKILL.md.j2 still only checks
`${EVOLVE_DIR:-.evolve}/entities/`, causing recall to be marked complete even
when `${EVOLVE_DIR:-.evolve}/public/` (or an injected manifest) should be
considered; update the mandatory completion-note templates and failure condition
checks in SKILL.md.j2 to reference both `${EVOLVE_DIR:-.evolve}/entities/` and
`${EVOLVE_DIR:-.evolve}/public/` (and allow for an injected manifest if
present), ensuring functions/sections that generate the "completion" message or
evaluate "failure" consult both paths (or the injected manifest) before deciding
recall success.
---
Outside diff comments:
In `@platform-integrations/bob/evolve-lite/skills/evolve-lite-recall/SKILL.md`:
- Around line 30-44: The completion templates and failure check in SKILL.md are
inconsistent: the procedure requires using an injected manifest or searching
both `${EVOLVE_DIR:-.evolve}/entities/` and `${EVOLVE_DIR:-.evolve}/public/`,
but the visible completion note and "no relevant entities" template only mention
`entities/`; update these templates and any validation logic to require and
reflect both sources (or the injected manifest) — specifically change the
required completion note examples (`Recall complete: searched
${EVOLVE_DIR:-.evolve}/entities/, read <files>, applicable guidance: <summary>`
and the "no relevant entities" variant) to reference both
`${EVOLVE_DIR:-.evolve}/entities/` and `${EVOLVE_DIR:-.evolve}/public/` (or the
injected manifest alternative), and adjust any failure-condition text that
currently validates only `entities/` so it enforces the joint check.
In
`@platform-integrations/claude/plugins/evolve-lite/skills/evolve-lite/recall/SKILL.md`:
- Line 55: Update the failure-condition sentence that currently references only
`${EVOLVE_DIR:-.evolve}/entities/` so it mentions and checks both
`${EVOLVE_DIR:-.evolve}/entities/` and `${EVOLVE_DIR:-.evolve}/public/` (to
match the documented behavior on lines 31, 45, and 63); locate the single-line
failure condition in SKILL.md (the line that starts "You did not inspect ...")
and rewrite it to include both directories explicitly and consistently.
- Around line 40-41: Update the completion note examples that currently
reference only `${EVOLVE_DIR:-.evolve}/entities/` so they list both directories;
replace instances of the strings like "Recall complete: searched
${EVOLVE_DIR:-.evolve}/entities/, quoted <files> verbatim below" and "Recall
complete: searched ${EVOLVE_DIR:-.evolve}/entities/, no relevant entities found"
with versions that include both paths (e.g. "Recall complete: searched
${EVOLVE_DIR:-.evolve}/entities/ and ${EVOLVE_DIR:-.evolve}/public/, quoted
<files> verbatim below" and "Recall complete: searched
${EVOLVE_DIR:-.evolve}/entities/ and ${EVOLVE_DIR:-.evolve}/public/, no relevant
entities found") so the examples match the documented search behavior referenced
elsewhere in SKILL.md (the examples near the existing completion notes).
In
`@platform-integrations/codex/plugins/evolve-lite/skills/evolve-lite/recall/SKILL.md`:
- Line 54: Update the failure message that currently reads "You did not inspect
`${EVOLVE_DIR:-.evolve}/entities/`" so it explicitly references both directories
required by the workflow: `${EVOLVE_DIR:-.evolve}/entities/` and
`${EVOLVE_DIR:-.evolve}/public/`; locate the string in SKILL.md and change the
wording to mention both directories (and scan the surrounding text in SKILL.md
for any other occurrences to ensure consistency with the rest of the document).
- Around line 39-40: Update the completion note examples in SKILL.md to
reference both scanned directories instead of only entities: change the
templates that currently mention `${EVOLVE_DIR:-.evolve}/entities/` to include
`${EVOLVE_DIR:-.evolve}/entities/` and `${EVOLVE_DIR:-.evolve}/public/` (e.g.,
`Recall complete: searched ${EVOLVE_DIR:-.evolve}/entities/ and
${EVOLVE_DIR:-.evolve}/public/, read <files>, applicable guidance: <summary>`
and `Recall complete: searched ${EVOLVE_DIR:-.evolve}/entities/ and
${EVOLVE_DIR:-.evolve}/public/, no relevant entities found`), updating the
examples that appear in SKILL.md so they match the workflow described around
lines referencing the scan of both /entities/ and /public/.
---
Nitpick comments:
In
`@platform-integrations/codex/plugins/evolve-lite/skills/evolve-lite/recall/SKILL.md`:
- Line 87: The phrase "Each file still uses markdown with YAML frontmatter:"
uses a lowercase "markdown"; update it to "Markdown" (capitalize the proper
noun) in SKILL.md by replacing "markdown" with "Markdown" and check for any
other occurrences of the lowercase term in the same file (e.g., within the YAML
frontmatter example or headings) to ensure consistency.
In `@plugin-source/skills/evolve-lite/recall/SKILL.md.j2`:
- Around line 124-137: Update the manifest examples in SKILL.md.j2 so they
include a representative `.evolve/public/...` entry alongside the existing
`.evolve/entities/...` entries; specifically modify both the human-readable
(platform == "bob") block and the JSON manifest block to add a public guideline
(e.g., a path like `.evolve/public/guideline/review-checklist.md` with an
appropriate "type" and "trigger") so the examples reflect the new dual-root
behavior implemented around the platform conditional.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: 069af796-30d9-4f29-9b11-2ac591868dc6
📒 Files selected for processing (24)
platform-integrations/bob/evolve-lite/lib/entity_io.pyplatform-integrations/bob/evolve-lite/skills/evolve-lite-recall/SKILL.mdplatform-integrations/bob/evolve-lite/skills/evolve-lite-recall/scripts/retrieve_entities.pyplatform-integrations/claude/plugins/evolve-lite/lib/entity_io.pyplatform-integrations/claude/plugins/evolve-lite/skills/evolve-lite/recall/SKILL.mdplatform-integrations/claude/plugins/evolve-lite/skills/evolve-lite/recall/scripts/retrieve_entities.pyplatform-integrations/claw-code/plugins/evolve-lite/lib/entity_io.pyplatform-integrations/claw-code/plugins/evolve-lite/skills/evolve-lite/recall/SKILL.mdplatform-integrations/claw-code/plugins/evolve-lite/skills/evolve-lite/recall/scripts/retrieve_entities.pyplatform-integrations/codex/plugins/evolve-lite/lib/entity_io.pyplatform-integrations/codex/plugins/evolve-lite/skills/evolve-lite/recall/SKILL.mdplatform-integrations/codex/plugins/evolve-lite/skills/evolve-lite/recall/scripts/retrieve_entities.pyplugin-source/lib/entity_io.pyplugin-source/skills/evolve-lite/recall/SKILL.md.j2plugin-source/skills/evolve-lite/recall/scripts/retrieve_entities.py.j2tests/platform_integrations/conftest.pytests/platform_integrations/test_bob_sharing.pytests/platform_integrations/test_claude_retrieve_manifest.pytests/platform_integrations/test_codex_retrieve_manifest.pytests/platform_integrations/test_codex_sharing.pytests/platform_integrations/test_entity_io_core.pytests/platform_integrations/test_retrieve.pytests/platform_integrations/test_subscribe.pytests/platform_integrations/test_sync.py
✅ Files skipped from review due to trivial changes (2)
- tests/platform_integrations/test_entity_io_core.py
- tests/platform_integrations/test_claude_retrieve_manifest.py
🚧 Files skipped from review as they are similar to previous changes (17)
- tests/platform_integrations/test_subscribe.py
- platform-integrations/bob/evolve-lite/lib/entity_io.py
- tests/platform_integrations/test_codex_sharing.py
- tests/platform_integrations/test_codex_retrieve_manifest.py
- plugin-source/lib/entity_io.py
- platform-integrations/codex/plugins/evolve-lite/skills/evolve-lite/recall/scripts/retrieve_entities.py
- platform-integrations/claw-code/plugins/evolve-lite/lib/entity_io.py
- tests/platform_integrations/conftest.py
- platform-integrations/claude/plugins/evolve-lite/skills/evolve-lite/recall/scripts/retrieve_entities.py
- platform-integrations/claude/plugins/evolve-lite/lib/entity_io.py
- platform-integrations/claw-code/plugins/evolve-lite/skills/evolve-lite/recall/scripts/retrieve_entities.py
- platform-integrations/bob/evolve-lite/skills/evolve-lite-recall/scripts/retrieve_entities.py
- tests/platform_integrations/test_bob_sharing.py
- plugin-source/skills/evolve-lite/recall/scripts/retrieve_entities.py.j2
- tests/platform_integrations/test_retrieve.py
- platform-integrations/codex/plugins/evolve-lite/lib/entity_io.py
- tests/platform_integrations/test_sync.py
| 1. If a manifest has already been injected for this turn, use it to pick which entity files to open. Otherwise inspect `${EVOLVE_DIR:-.evolve}/entities/` and `${EVOLVE_DIR:-.evolve}/public/` for guidance relevant to the current task. | ||
| 2. Read each matching entity file that appears relevant. | ||
| 3. Summarize the applicable guidance in your own words before proceeding. | ||
| 4. If no relevant entities exist, state that explicitly before proceeding. |
There was a problem hiding this comment.
Align completion-note examples with the new workflow.
Line 30 now requires manifest-or-dual-root discovery, but the required visible completion examples still only reference ${EVOLVE_DIR:-.evolve}/entities/. Please add a manifest-aware form and/or include both roots so the “required note” can’t drift from the actual procedure.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In
`@platform-integrations/claw-code/plugins/evolve-lite/skills/evolve-lite/recall/SKILL.md`
around lines 30 - 33, Update the completion-note examples in SKILL.md to reflect
the manifest-or-dual-root discovery described in the steps: when a manifest
exists this should be used to choose entity files, otherwise fall back to
inspecting `${EVOLVE_DIR:-.evolve}/entities/` and
`${EVOLVE_DIR:-.evolve}/public/`; adjust the “required note” examples so at
least one shows the manifest-aware form (e.g., mentions using the injected
manifest to select files) and/or shows both roots
`${EVOLVE_DIR:-.evolve}/entities/` and `${EVOLVE_DIR:-.evolve}/public/` so the
examples match the runtime `manifest-or-dual-root` behavior described in the
numbered steps.
| Do not proceed to other analysis or tool use until all steps below are complete. | ||
|
|
||
| 1. Inspect `${EVOLVE_DIR:-.evolve}/entities/` for guidance relevant to the current task. | ||
| 1. If a manifest has already been injected for this turn, use it to pick which entity files to open. Otherwise inspect `${EVOLVE_DIR:-.evolve}/entities/` and `${EVOLVE_DIR:-.evolve}/public/` for guidance relevant to the current task. |
There was a problem hiding this comment.
Required completion/failure text still enforces legacy single-root recall
The new rule adds ${EVOLVE_DIR:-.evolve}/public/ (or injected manifest), but the mandatory completion-note templates and failure conditions below still reference only ${EVOLVE_DIR:-.evolve}/entities/. That can incorrectly mark recall as complete without checking public/.
Suggested doc alignment patch
-{% if forked_context | default(false) -%}
-- `Recall complete: searched ${EVOLVE_DIR:-.evolve}/entities/, quoted <files> verbatim below`
-- `Recall complete: searched ${EVOLVE_DIR:-.evolve}/entities/, no relevant entities found`
-{%- else -%}
-- `Recall complete: searched ${EVOLVE_DIR:-.evolve}/entities/, read <files>, applicable guidance: <summary>`
-- `Recall complete: searched ${EVOLVE_DIR:-.evolve}/entities/, no relevant entities found`
-{%- endif %}
+{% if forked_context | default(false) -%}
+- `Recall complete: checked injected manifest (or searched ${EVOLVE_DIR:-.evolve}/entities/ and ${EVOLVE_DIR:-.evolve}/public/), quoted <files> verbatim below`
+- `Recall complete: checked injected manifest (or searched ${EVOLVE_DIR:-.evolve}/entities/ and ${EVOLVE_DIR:-.evolve}/public/), no relevant entities found`
+{%- else -%}
+- `Recall complete: checked injected manifest (or searched ${EVOLVE_DIR:-.evolve}/entities/ and ${EVOLVE_DIR:-.evolve}/public/), read <files>, applicable guidance: <summary>`
+- `Recall complete: checked injected manifest (or searched ${EVOLVE_DIR:-.evolve}/entities/ and ${EVOLVE_DIR:-.evolve}/public/), no relevant entities found`
+{%- endif %}
- You only read this `SKILL.md`
-- You did not inspect `${EVOLVE_DIR:-.evolve}/entities/`
+- You did not inspect `${EVOLVE_DIR:-.evolve}/entities/` and `${EVOLVE_DIR:-.evolve}/public/` (or check an injected manifest)
- You did not read the relevant entity files🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@plugin-source/skills/evolve-lite/recall/SKILL.md.j2` at line 33, The
completion/failure text in SKILL.md.j2 still only checks
`${EVOLVE_DIR:-.evolve}/entities/`, causing recall to be marked complete even
when `${EVOLVE_DIR:-.evolve}/public/` (or an injected manifest) should be
considered; update the mandatory completion-note templates and failure condition
checks in SKILL.md.j2 to reference both `${EVOLVE_DIR:-.evolve}/entities/` and
`${EVOLVE_DIR:-.evolve}/public/` (and allow for an injected manifest if
present), ensuring functions/sections that generate the "completion" message or
evaluate "failure" consult both paths (or the injected manifest) before deciding
recall success.
illeatmyhat
left a comment
There was a problem hiding this comment.
Approving — manifest-first recall delivers what #224 asks for.
Verified end-to-end against the kept smoke workspace: the hook emits {path, type, trigger} JSON-lines for Claude/Codex and a bullet markdown list for Bob; full bodies stay in the entity files and are only read on demand. The platform_integrations test suite pins all the data-layer claims (manifest shape, public/ discovery, dedupe determinism, symlink/missing-field skip), and the live smoke run was clean across all three CLIs (learn → recall → publish all green).
One non-blocking nit for follow-up: in plugin-source/skills/evolve-lite/recall/SKILL.md.j2, the Required Visible Completion Note templates (~lines 47–53) and the Failure Conditions entry (~line 71) still hard-code searched ${EVOLVE_DIR:-.evolve}/entities/. Step 1 and the Minimum Acceptable Procedure already include public/ and the injected manifest, so just bringing those two laggards into line keeps the prescribed agent self-report honest. The drift propagates to all four rendered platform copies — happy to file a follow-up.
Summary
UserPromptSubmithook (Claude/Codex) and manual recall skill (Bob) now emit onlypath,type, andtriggerper entity — full content is read on demandload_manifestanddedupe_manifest_entrieshelpers inentity_io.pypower all three implementationsChanges
entity_io.py— Added_parse_frontmatter_only,load_manifest,dedupe_manifest_entriesshared helpersretrieve_entities.py— Switched to manifest JSON outputretrieve_entities.py— Switched to manifest JSON outputretrieve_entities.py— Switched to human-readable manifest outputtest_claude_retrieve_manifest.py,test_codex_retrieve_manifest.py; updatedtest_retrieve.py,test_bob_sharing.py,test_codex_sharing.py,test_sync.py,test_subscribe.pyTest plan
path,type,triggeraddressing issue #224
Summary by CodeRabbit