Skip to content

fix(evolution): clarify learned capabilities and memory capture - #60

Merged
Luhaozhu merged 1 commit into
mainfrom
fix/approval-preview-and-memory-gate
Aug 4, 2026
Merged

fix(evolution): clarify learned capabilities and memory capture#60
Luhaozhu merged 1 commit into
mainfrom
fix/approval-preview-and-memory-gate

Conversation

@Luhaozhu

@Luhaozhu Luhaozhu commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

Problem

Approving a personal evolution candidate was a leap of faith. Sequence-only skill candidates carry no authored SKILL.md, so _change_preview returned {}, 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 concrete skill_sequence preview — 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.
  • Legacy noise is filtered from the pending list while its evidence remains stored for audit: single-step sequences with no ordering rules (nothing to preserve, tautological if installed) and skill candidates with no inspectable content at all (approval without content is not informed consent, and materialisation would fail later anyway).
  • 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

  • The approval card renders the sequence preview with a detail view (steps, ordering rules, allowed tools); new i18n strings and styles; call_subagent gains 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 (including universal-apple-darwin) is buildable on any host.

Tests

  • test_personal_approval.py: pending-list filtering and the skill_sequence preview shape.
  • test_promotion_chain.py: regression — a single repeated tool call is never mislabelled as a sequence skill.

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.
@Luhaozhu
Luhaozhu merged commit 4148aa1 into main Aug 4, 2026
5 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