[CL-CTRL-PLANE-RUFLO-AUTO-INGEST] Stop hook auto-ingests Claude session в ruflo memory #12

Merged
andrei merged 1 commit from feature/claude-ruflo-auto-ingest-stop-20260518 into master 2026-05-18 14:40:49 +00:00
Owner

Что сделано

  • ruflo-auto-ingest-stop.js Stop hook: extract last_prompt+tool_count из transcript, store через ruflo memory store namespace=sessions
  • 5 TDD tests RED→GREEN
  • settings.json: wired Stop array (6s timeout)

Зачем

Ruflo CLAUDE.md prescribes memory store after success. Claude tool calls сами не пишут в ruflo DB → замораживалась (last entry 2026-05-17). Hook закрывает gap.

Live smoke

  • BEFORE: sessions namespace = 0
  • HOOK invoke: spawned key=session-smoke-real-1 tools=1 pid=28576
  • AFTER: sessions namespace = 1 entry created 14:39:49

План тестирования

  • 5/5 TDD PASS
  • Live smoke: ruflo DB +1 entry

Где могу ошибаться

  • WSL spawn fail silently → logged fail-open
  • Last prompt stored 500 chars max
## Что сделано - ruflo-auto-ingest-stop.js Stop hook: extract last_prompt+tool_count из transcript, store через ruflo memory store namespace=sessions - 5 TDD tests RED→GREEN - settings.json: wired Stop array (6s timeout) ## Зачем Ruflo CLAUDE.md prescribes memory store after success. Claude tool calls сами не пишут в ruflo DB → замораживалась (last entry 2026-05-17). Hook закрывает gap. ## Live smoke - BEFORE: sessions namespace = 0 - HOOK invoke: spawned key=session-smoke-real-1 tools=1 pid=28576 - AFTER: sessions namespace = 1 entry created 14:39:49 ## План тестирования - 5/5 TDD PASS - Live smoke: ruflo DB +1 entry ## Где могу ошибаться - WSL spawn fail silently → logged fail-open - Last prompt stored 500 chars max
## Что сделано
- `hooks/ruflo-auto-ingest-stop.js` — Stop hook читает transcript_path, извлекает last_prompt + tool_count + line_count, store через `ruflo memory store --namespace sessions --key session-<sid>-<ts>`
- 5 TDD tests (RED→GREEN verified)
- Detached fire-and-forget spawn → не блокирует Stop
- Skip env: RUFLO_AUTO_INGEST_SKIP=1; dry-run: RUFLO_AUTO_INGEST_DRY=1
- settings.json: wired в Stop array (6s timeout)

## Зачем
Per ruflo CLAUDE.md "After Success": `memory store --namespace patterns --key "..." --value "..."`. Claude Code tool calls сами не пишут в ruflo memory — DB замораживалась (last entry 2026-05-17 15:56, 24h назад). Этот hook закрывает gap.

## Live smoke test
- BEFORE: `sessions` namespace = 0 entries
- HOOK invoke с fake transcript: log "spawned ... key=session-smoke-real-1-1779115189001 tools=1 pid=28576"
- AFTER (4s wait): `sessions` namespace = 1 entry created 2026-05-18 14:39:49

## План тестирования
- 5/5 TDD tests PASS
- Live smoke: ruflo memory DB +1 entry via hook
- node --check: OK
- settings.json JSON valid

## Где могу ошибаться
- WSL spawn fail silently если daemon dead — logged, fail-open. Closed: detached + log.
- Transcript path может содержать sensitive prompt content — stored full 500 chars. Closed: same namespace already had commands/feedback с user content, по design.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
andrei merged commit 0c7b68f1cc into master 2026-05-18 14:40:49 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
europa-tech-srl/claude-dotfiles!12
No description provided.