gating.py: two-tier evidence bar (OQ5) — promote floor (frequency/sessions/
cost_impact) plus a stricter distribution-eligibility floor that sets a
promoted pattern to approved+distribution_ready vs provisional. Wired into
review() so thin approvals land provisional. bloat_warnings flags duplicate
and near-duplicate (same signal-type+locus) candidates (OQ6). [curate]/
[curate.gate] knobs in config.toml. 6 new tests; suite 64/64 green.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
UI-free discuss/approve/reject engine driving detect candidates into the
catalog via a decide callback. candidate_to_pattern builds a provisional
SolutionPattern with per-flavor rendering-hint stubs. ReviewLog makes
re-review idempotent: prior rejects remembered, re-surfaced only when the
evidence fingerprint changes. 6 new tests; suite 58/58 green.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Files-first catalog (one JSON per pattern, id = source-key). Single
idempotent upsert path: added / unchanged / updated (status-only, no bump) /
versioned (content change bumps semver + archives prior to <id>.history.jsonl).
Dedup is structural on pattern id. 5 new tests; suite 52/52 green.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Marks AGENTIC-WP-0003 finished. Full suite 40/40 green; live pipeline
over real local sessions (Codex via fixtures) surfaced 3 candidate
patterns, 2 cross-flavor (Claude+Grok) — PRD success metric met.
README documents the detect entrypoint and Phase 0/1/next status.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- adapters/grok.py: reads the per-session dir (summary.json + chat_history.jsonl
+ events.jsonl + updates.jsonl); conversation from chat_history, lifecycle/
turn from events, tool-call names paired in order from updates ACP stream
- registered in ingest dispatch; codex+grok sources enabled in config.toml
- tests/test_grok_adapter.py (synthetic + real local sessions)
- live multi-flavor dry-run discovers 89 sessions across flavors
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- verified full sweep over 85 real local Claude transcripts: 63 sessions
ingested+analyzed, eviction under tiny cap freed 26MB with zero data loss,
digest-preservation invariant holds, idempotent re-run
- session_memory/README.md: usage, scheduling, retention knobs
- design doc: OQ4 resolved (median ~49KB/session), OQ6 (multi-file sessions)
- workplan AGENTIC-WP-0002 finished
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- session_memory/core/retention.py: RetentionConfig + sweep() with backstop,
budget (oldest-analyzed-first, never touches un-analyzed), and hard-cap
overflow (analyze-now then reported last-resort data_loss); EvictionReport
- tests/test_retention.py covers all four branches
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- docs/PRD-helix-forge.md: Capture→Detect→Curate→Distribute→Measure loop
- docs/DESIGN-session-memory.md: tiered store + budget-based eviction;
verified session-log schemas for Claude/Codex/Grok
- workplans/AGENTIC-WP-0002: Phase 0 (registered with State Hub)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>