safishamsi
d193b6277d
feat(reflect): --if-stale to skip redundant runs; agent uses it at session start
...
Both the agent (session start) and the post-commit hook can run reflect; the runs
are deterministic and idempotent, but back-to-back ones are wasted work. Add
`graphify reflect --if-stale`, which no-ops when LESSONS.md is already at least as
new as every input (the memory docs and the graph). The skill's session-start
guidance now uses `--if-stale`, so when the hook just refreshed the file the
agent's run costs almost nothing, while a skill-only install still refreshes
on demand.
New lessons_fresh() helper + 5 tests (mtime freshness in each direction, and the
CLI skip/run behavior). Regenerated per-host references + re-blessed expected/;
all five skillgen guards pass; full suite 2388 passed.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-24 12:26:39 +01:00
..
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-23 17:26:49 +01:00
2026-06-22 17:29:33 +01:00
2026-06-23 12:47:02 +01:00
2026-06-23 12:47:02 +01:00
2026-06-23 12:47:02 +01:00
2026-06-23 12:47:02 +01:00
2026-06-22 17:29:33 +01:00
2026-06-23 12:47:02 +01:00
2026-06-23 12:47:02 +01:00
2026-06-23 12:47:02 +01:00
2026-06-23 12:47:02 +01:00
2026-06-23 12:47:02 +01:00
2026-06-23 12:47:02 +01:00
2026-06-23 12:47:02 +01:00
2026-06-23 12:47:02 +01:00
2026-06-23 12:47:02 +01:00
2026-06-23 17:26:49 +01:00
2026-06-23 17:26:49 +01:00
2026-06-23 17:26:49 +01:00
2026-06-23 17:26:49 +01:00
2026-06-23 17:26:49 +01:00
2026-06-24 12:26:39 +01:00
2026-06-23 17:26:49 +01:00
2026-06-23 17:26:49 +01:00
2026-06-19 15:37:11 +01:00
2026-06-19 15:37:11 +01:00
2026-06-19 15:37:11 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-24 12:26:39 +01:00
2026-06-19 15:37:11 +01:00
2026-06-22 17:29:33 +01:00
2026-06-19 15:37:11 +01:00
2026-06-19 15:37:11 +01:00
2026-06-19 15:37:11 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-24 12:26:39 +01:00
2026-06-19 15:37:11 +01:00
2026-06-22 17:29:33 +01:00
2026-06-19 15:37:11 +01:00
2026-06-19 15:37:11 +01:00
2026-06-19 15:37:11 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-24 12:26:39 +01:00
2026-06-19 15:37:11 +01:00
2026-06-22 17:29:33 +01:00
2026-06-19 15:37:11 +01:00
2026-06-19 15:37:11 +01:00
2026-06-19 15:37:11 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-24 12:26:39 +01:00
2026-06-19 15:37:11 +01:00
2026-06-22 17:29:33 +01:00
2026-06-19 15:37:11 +01:00
2026-06-19 15:37:11 +01:00
2026-06-19 15:37:11 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-24 12:26:39 +01:00
2026-06-19 15:37:11 +01:00
2026-06-22 17:29:33 +01:00
2026-06-19 15:37:11 +01:00
2026-06-19 15:37:11 +01:00
2026-06-19 15:37:11 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-24 12:26:39 +01:00
2026-06-19 15:37:11 +01:00
2026-06-22 17:29:33 +01:00
2026-06-19 15:37:11 +01:00
2026-06-19 15:37:11 +01:00
2026-06-19 15:37:11 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-24 12:26:39 +01:00
2026-06-19 15:37:11 +01:00
2026-06-22 17:29:33 +01:00
2026-06-19 15:37:11 +01:00
2026-06-19 15:37:11 +01:00
2026-06-19 15:37:11 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-24 12:26:39 +01:00
2026-06-19 15:37:11 +01:00
2026-06-22 17:29:33 +01:00
2026-06-19 15:37:11 +01:00
2026-06-19 15:37:11 +01:00
2026-06-19 15:37:11 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-24 12:26:39 +01:00
2026-06-19 15:37:11 +01:00
2026-06-22 17:29:33 +01:00
2026-06-19 15:37:11 +01:00
2026-06-19 15:37:11 +01:00
2026-06-19 15:37:11 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-24 12:26:39 +01:00
2026-06-19 15:37:11 +01:00
2026-06-22 17:29:33 +01:00
2026-06-19 15:37:11 +01:00
2026-06-19 15:37:11 +01:00
2026-06-19 15:37:11 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-24 12:26:39 +01:00
2026-06-19 15:37:11 +01:00
2026-06-22 17:29:33 +01:00
2026-06-19 15:37:11 +01:00
2026-06-19 15:37:11 +01:00
2026-06-19 15:37:11 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-24 12:26:39 +01:00
2026-06-19 15:37:11 +01:00
2026-06-22 17:29:33 +01:00
2026-06-19 15:37:11 +01:00
2026-06-19 15:37:11 +01:00
2026-06-19 15:37:11 +01:00
2026-06-02 20:48:13 +01:00
2026-06-02 20:48:13 +01:00
2026-06-24 12:26:39 +01:00
2026-06-19 15:37:11 +01:00
2026-06-22 17:29:33 +01:00