session-memory: weekly retro entrypoint + hub publish (AGENTIC-WP-0010)

The analysis half of the weekly coding retrospection. retro/build.py: windowed
detect+measure -> top-3 improvement suggestions per repo (cross-flavor first,
recommendations pulled from the Pattern Catalog) + fleet snapshot. retro/publish.py:
publishes the report to the hub as the coding_retro read model (event_type=
coding_retro progress event) + local JSON/md, graceful degrade. retro entrypoint
with --window-days/--publish/--json. Live verify over real sessions surfaced
per-repo suggestions with catalog recommendations. 13 new tests; suite 152/152.

Consumed by activity-core ACTIVITY-WP-0008 (Weekly Coding Retrospection, Sat 19:00).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-07 19:17:24 +02:00
parent 15ba625351
commit 0d05dfcc5d
12 changed files with 932 additions and 0 deletions

View File

@@ -0,0 +1,76 @@
---
id: AGENTIC-WP-0010
type: workplan
title: "Coding Session Memory — Weekly Retro entrypoint + hub publish"
domain: helix_forge
repo: agentic-resources
status: finished
owner: codex
topic_slug: helix-forge
created: "2026-06-07"
updated: "2026-06-07"
state_hub_workstream_id: "6b9816e4-65bc-4fc7-b8e1-33f4edd51e7a"
---
# Coding Session Memory — Weekly Retro entrypoint + hub publish
The **analysis half** of a weekly coding retrospection. A windowed retro runs
detect + measure over the previous week, ranks the **top-3 improvement
suggestions per repo** (impact × frequency, cross-flavor first; recommendations
pulled from the Pattern Catalog), and **publishes the ranked result to the State
Hub as a read model** (an `event_type=coding_retro` progress event, mirroring how
`daily-triage-report` publishes).
This is the dependency that activity-core's weekly schedule consumes
(`activity-wp-0008`*Weekly Coding Retrospection schedule*). Keeping the analysis
here and publishing to the hub keeps activity-core decoupled from the
workstation-local session store.
## Windowed Weekly Retro Report (top-3 per repo)
```task
id: AGENTIC-WP-0010-T01
status: done
priority: high
state_hub_task_id: "34d30250-c0d3-4837-81c7-1c858c2ee801"
```
`retro/build.py`: window digests by date (last N days), run
`extract_signals` + `cluster` over the window, explode problem patterns per repo,
rank by score and cap at **3 per repo**. Attach a recommendation per suggestion
from the Pattern Catalog (lookup by pattern key → first resolution) with a sensible
default. Include a fleet measure snapshot for context. Pure function over digests;
unit-tested.
## Publish Retro to the Hub + Local Report
```task
id: AGENTIC-WP-0010-T02
status: done
priority: high
state_hub_task_id: "cbe1288a-ce51-48c0-b741-adf4a6cbce3a"
```
Publish the ranked retro to the State Hub as a read model: POST a progress event
(`event_type=coding_retro`) with the structured report (`suggestions[]`, window,
`generated_at`) in `detail`. Also write a local JSON + markdown report. **Graceful
degrade** when the hub is unreachable (write local, skip publish). Hub URL under
`[retro]` in `config.toml`.
## Retro Entrypoint + Tests + Live Verify
```task
id: AGENTIC-WP-0010-T03
status: done
priority: medium
state_hub_task_id: "af540220-58dd-4cf5-a9dc-6db4b995fa08"
```
`python -m session_memory.retro [--window-days 7] [--publish] [--json]`: windowed
retro → ranked top-3 per repo → optional hub publish + local report. Document in
`session_memory/README.md`. Live verify over the real local sessions. After
workplan updates, notify the operator to run from `~/state-hub`:
```bash
make fix-consistency REPO=agentic-resources
```