fix(evolution): clarify learned capabilities and memory capture - #60
Merged
Conversation
Approving a personal evolution candidate used to be a leap of faith: a sequence-only skill candidate carried no inspectable content, so the approval list showed a bare hypothesis with no detail view, and legacy candidates wrapping a single repeated tool call were presented as decisions the user ought to make. - user_settings: sequence-only candidates now surface a concrete change preview (display name, description, allowed tools, ordered steps, ordering rules), reusing the materialiser's wording so the preview and the installed skill never disagree. Legacy noise — single-step sequences with no ordering rules, or skill candidates with no inspectable content at all — is filtered from the pending list while the evidence stays intact for audit. - memory gate: the write-gate prompt now states explicit inclusion criteria (identity, preference, procedural, graph, task, corrections) instead of a blanket "when in doubt, skip" stance that under-captured clearly durable facts; explicit one-off instructions remain excluded. - frontend: the approval card renders the sequence preview with a detail view (steps, ordering rules, allowed tools), i18n strings and styles included; `call_subagent` gains a readable tool label. - desktop: only full-flavor bundles validate the build target triple — thin bundles carry no native runtime, so any target is buildable on any host. - tests: pending-list filtering and preview shape covered in test_personal_approval; single-tool mislabelling regression in test_promotion_chain.
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.
Problem
Approving a personal evolution candidate was a leap of faith. Sequence-only skill candidates carry no authored SKILL.md, so
_change_previewreturned{}, the frontend silently dropped the detail button, and the user was asked to approve something they could not inspect. Legacy candidates that wrapped a single repeated tool call were still shown as pending decisions. Separately, the memory write gate's blanket "when in doubt, skip" stance under-captured facts that are clearly durable (identity, standing preferences, org-specific rules).Change
Backend
user_settings.pending_for_user/_change_preview: sequence-only candidates now produce a concreteskill_sequencepreview — display name, description, allowed tools, ordered steps and ordering rules — reusing the materialiser's own wording (activation._skill_label/_skill_description) so the preview and the installed skill never disagree about what was accepted.extractors/gate.py: the write-gate prompt now states explicit inclusion criteria per memory type (identity / preference / procedural / graph / task / corrections-and-invalidations) alongside the existing exclusions; one-off instructions stay excluded.Frontend
call_subagentgains a readable tool label.Desktop
prepare-bundle.mjs: only full-flavor bundles validate the build target triple — thin bundles carry no native runtime, so any target (includinguniversal-apple-darwin) is buildable on any host.Tests
test_personal_approval.py: pending-list filtering and theskill_sequencepreview shape.test_promotion_chain.py: regression — a single repeated tool call is never mislabelled as a sequence skill.