feat: proactive enrichment-recall subsystem (the "π§ Help me remember" loop)#179
Open
jordanrburger wants to merge 2 commits into
Open
feat: proactive enrichment-recall subsystem (the "π§ Help me remember" loop)#179jordanrburger wants to merge 2 commits into
jordanrburger wants to merge 2 commits into
Conversation
β¦ loop) Implements the spec merged in #150 (docs/superpowers/specs/2026-06-21-enrichment-recall-subsystem-design.md): the pull-capture half of the feedback loop, where a dreaming run proactively asks the user a small ranked set of questions about facts no connector can see, and feeds the answers back into the KB. - Port + de-personalize the generator β templates/scripts/generate-enrichment-questions.py (cat-1, copied verbatim like recurring-task-status.py). Read-only KB scanner that ranks connector-blind candidate questions (rank 0 [needs:] flags β rank 4 thin stubs), with one-run --exclude rotation and a persistent --reject-file stoplist. De-personalization: stripped dated feedback quotes, real names, Pattern #NN citations, and generalized the connector-answerable regex guard off the employer-specific alternation to employer-agnostic phrasing (the subtlest change β flagged for review). - Seed vault-owned state install-only so upgrades never clobber accumulated history: scripts/enrichment-stoplist.txt + knowledge-base/enrichment-qa-log.md. - Add the recall section to phases/modes/feedback-processing.md (dreaming-scoped): generate β quality-gate β compose the "π§ Help me remember" block β record dismissals to the stoplist and rounds to the Q&A log. - Tests: generator ranking/dedupe/stoplist/rotation, the guards (research- answerable dropped, excluded dirs scoped out, resolved gaps skipped), the read-only contract, bootstrap wiring, and assembly scoping (recall lands in DREAMING, not SKILL/RESEARCH). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Implements the design spec merged in #150 (
docs/superpowers/specs/2026-06-21-enrichment-recall-subsystem-design.md) β the pull-capture half of the feedback loop. At the end of a dreaming run the system appends a small ranked set of "π§ Help me remember β¦" questions to its wrap DM, asking about facts no connector can see (in-person events, decisions, head-knowledge), and later feeds the answers back into the KB.What's here (matches the spec's 4-part plan)
templates/scripts/generate-enrichment-questions.py, wired into_CAT1_FILES_FROM_PLUGINexactly likerecurring-task-status.py(raw.py, copied verbatim, no template rendering). A pure-stdlib, read-only KB scanner that ranks connector-blind candidates (rank 0 explicit[needs:]flags β rank 4 thin stubs), with one-run--excluderotation and a persistent--reject-filestoplist.scripts/enrichment-stoplist.txt+knowledge-base/enrichment-qa-log.md, added to_INSTALL_ONLY_TEMPLATES. Shipped as empty headers.phases/modes/feedback-processing.md(dreaming-scoped): generate β quality-gate β compose the "π§ Help me remember" block β record dismissals to the stoplist and rounds to the Q&A log. NewStep 1f; old commit step renumbered to1g.engine/tests/unit/test_enrichment_questions.py.De-personalization (this is the public engine)
The generator was ported from a running instance and scrubbed: stripped dated user-feedback quotes, real names, employer references, and
Pattern #NNcitations; genericized the argparse/header string literals.RESEARCH_ANSWERABLEpreviously hardcoded the employer name in an alternation (β¦|<employer> customer|β¦) plus product-specific jargon. It's now employer-agnostic (customer status,account id,crm record,deal stage,renewal date, attribution phrasing, named-non-user-person phrasing, connector/profile identity facts) β aiming to keep the connector-answerable-vs-head-fact discrimination without baking in any org/product vocabulary. A scrub check confirms no leaked identifiers.Verification
883 passed(full engine unit suite) β incl. bootstrap install/upgrade wiring.ruff checkclean on the new/changed files.--excluderotation, the guards (research-answerable dropped,projects/+ontology/entities/scoped out, resolved gaps skipped), the read-only contract (asserts the KB is byte-identical after a run), bootstrap wiring, and assembly scoping (recall lands in DREAMING, not SKILL/RESEARCH).Open questions carried from the spec
feedback-processing.md(the closest existing home). A future consolidation would be a cleaner home β out of scope here.enrichment-qa-log.mdgrowth is unbounded today; a retention policy is a possible follow-up.π€ Generated with Claude Code