personal memory agent

fix(think): gate level:low facets out of activity creation; per-facet descriptions master

ActivityStateMachine.update treated every sense facet as activity-worthy and stamped the segment-level activity_summary onto every record. A code-signing segment with five facets produced five activity records — two of them peripheral (level:low) — all sharing the dominant work summary. Two surgical changes in update(): - Exclude any facet whose raw level is exactly "low" when building current_facets, so it is treated identically to an absent facet: it never creates or continues an activity, and a previously-active facet that drops to low winds down through the existing 2-segment facet-gone hysteresis (no new/abrupt end path). Missing/invalid level still normalizes to medium and stays engaged. - Source each record's description from that facet's own facets[i].activity, falling back to activity_summary only when the per-facet text is missing/empty. Forward-behavior only; already-written records are unchanged. level_avg, active_entities, idle/gap/type-change handling, and completed-record shape are untouched for high/medium facets. Tests: new TestLevelGate covers AC1-AC5 (the founder's example facet set, per-facet vs distinct descriptions, summary fallback, drop-to-low hysteresis, all-low wind-down). Reconciled six low->medium fixtures whose intent was multi-facet/pipeline behavior, and three description assertions plus a facet_activity test-helper param so the per-facet description source is proven. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>