<feed xmlns='http://www.w3.org/2005/Atom'>
<title>soryu, branch makima/add-learning</title>
<subtitle>soryu-co/soryu mirror</subtitle>
<id>http://src.eirin.xyz/soryu/atom?h=makima%2Fadd-learning</id>
<link rel='self' href='http://src.eirin.xyz/soryu/atom?h=makima%2Fadd-learning'/>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/'/>
<updated>2026-01-24T13:05:46+00:00</updated>
<entry>
<title>feat: Integrate learning modules into task manager</title>
<updated>2026-01-24T13:05:46+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-01-24T13:05:46+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=854075a944f9f70bccb90cd2ef42c07a3a4bcc91'/>
<id>urn:sha1:854075a944f9f70bccb90cd2ef42c07a3a4bcc91</id>
<content type='text'>
When tasks complete (success or failure), the task manager now:
- Creates a ProgressLogEntry with task status and timestamp
- Extracts learnings from Claude output using extract_learnings_from_output
- Gets list of changed files from git diff
- Appends the entry to progress.log in the task's worktree

This enables cross-task learning where future tasks can benefit from
patterns, gotchas, and tips discovered during previous task executions.

Co-Authored-By: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>[WIP] Heartbeat checkpoint - 2026-01-24 13:04:22 UTC</title>
<updated>2026-01-24T13:04:22+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-01-24T13:04:22+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=1bd24cba69291432cc182bc2a718dcc4aaac45e2'/>
<id>urn:sha1:1bd24cba69291432cc182bc2a718dcc4aaac45e2</id>
<content type='text'>
</content>
</entry>
<entry>
<title>feat: Add learning injection module for enhanced prompts</title>
<updated>2026-01-24T13:02:22+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-01-24T13:02:22+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=36287d12a601409ae803a4e2d1bc6c88e4227fe0'/>
<id>urn:sha1:36287d12a601409ae803a4e2d1bc6c88e4227fe0</id>
<content type='text'>
Implements Ralph-inspired learning injection that prepends context recovery
and previous learnings to Claude prompts. This enables cross-task learning
and context preservation.

Features:
- LearningInjector struct with configurable options (max_entries, include_context_recovery)
- inject_learnings() function to enhance base prompts with context and learnings
- extract_learnings_from_output() to parse Claude output for learning patterns
- Supports markers: LEARNING:, PATTERN:, GOTCHA:, TIP:
- Deduplicates learnings by description
- Also fixes TaskState::Pending -&gt; Initializing in context_recovery tests

Co-Authored-By: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>feat: Add context recovery module for task resumption</title>
<updated>2026-01-24T12:58:01+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-01-24T12:58:01+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=4eb2d89335fe5ec573443b91fed8614bebb23011'/>
<id>urn:sha1:4eb2d89335fe5ec573443b91fed8614bebb23011</id>
<content type='text'>
Implements a standardized context recovery pattern that helps rebuild
context when tasks resume or restart, ensuring Claude can quickly
orient itself and reducing confusion and repeated work.

The ContextRecoveryInfo struct captures:
- Current git branch name
- Git status summary (uncommitted changes count)
- Last checkpoint info (timestamp, message, SHA)
- Recent progress log entries from progress.log
- Current contract phase

Includes to_markdown() method for generating prompt-injection-ready
context blocks.

Co-Authored-By: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>feat: Add progress logging module for cross-task learning</title>
<updated>2026-01-24T12:54:18+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-01-24T12:54:18+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=ba3906c05d8979236600385656dd454c1aa34352'/>
<id>urn:sha1:ba3906c05d8979236600385656dd454c1aa34352</id>
<content type='text'>
Implement structured progress logging as specified in ralph-features-spec.md
Section 1.1. This module provides:

- ProgressLogEntry struct capturing timestamp, task ID/name, status,
  files changed, and learnings (patterns, gotchas, tips)
- append_entry() to write entries to progress.log in worktree
- read_recent_entries() to retrieve last N entries for context injection
- Markdown format for human readability and easy parsing

This is the foundation for Ralph-inspired cross-task learning that
persists context across task iterations.

Co-Authored-By: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Add resume to daemon tasks</title>
<updated>2026-01-23T23:52:35+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-01-23T23:52:35+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=579c983d3efb8f1414ffb45b9e031f741cce5f76'/>
<id>urn:sha1:579c983d3efb8f1414ffb45b9e031f741cce5f76</id>
<content type='text'>
</content>
</entry>
<entry>
<title>feat: Add client-side polling for CLI wait command (#23)</title>
<updated>2026-01-23T19:49:58+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-01-23T19:49:58+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=f6f0790217d4098ffb6d2b3df08b0cf83ff61727'/>
<id>urn:sha1:f6f0790217d4098ffb6d2b3df08b0cf83ff61727</id>
<content type='text'>
* [WIP] Heartbeat checkpoint - 2026-01-23 03:34:44 UTC

* feat: Add client-side polling for CLI wait command

When contracts wait for tasks in makima, the CLI now polls and returns
once the task has changed state. This provides resilient task status
detection even if:
- Server's broadcast channels miss a notification
- Network connections are intermittent
- Long-polling HTTP requests timeout at load balancers

The implementation uses a hybrid approach:
1. First tries server-side wait with short timeout (30s)
2. Falls back to polling via supervisor_get_task endpoint
3. Configurable poll_interval (default 5s) via --poll-interval flag

Co-Authored-By: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;

---------

Co-authored-by: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;</content>
</entry>
<entry>
<title>docs: Add ralph analysis and feature specification (#22)</title>
<updated>2026-01-23T02:57:13+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-01-23T02:57:13+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=5595a2fce2e426fd9f1b6224df467a2300f06238'/>
<id>urn:sha1:5595a2fce2e426fd9f1b6224df467a2300f06238</id>
<content type='text'>
- ralph-analysis.md: Comprehensive analysis of ralph repository
  - Stateless AI loop pattern with file-based persistence
  - prd.json for task tracking, progress.txt for learnings
  - AGENTS.md for consolidated patterns

- makima-architecture.md: Analysis of makima's current architecture
  - Existing COMPLETION_GATE, circuit breaker, autonomous loop
  - Extension points for ralph-inspired features

- ralph-features-spec.md: Detailed feature specification
  - 6 opinionated features (always enabled)
  - 7 optional features (flag-controlled)
  - Implementation priorities and migration path

Co-authored-by: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;</content>
</entry>
<entry>
<title>Add patch checkpointing</title>
<updated>2026-01-23T01:03:04+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-01-22T22:32:46+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=1ed362424dafec690f919154f5116471951cda9c'/>
<id>urn:sha1:1ed362424dafec690f919154f5116471951cda9c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fix completion actions: default to PR and support remote repos (#21)</title>
<updated>2026-01-22T13:17:17+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-01-22T13:17:17+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=265f8cf14fec9d7116d09af49e4b48b357faceda'/>
<id>urn:sha1:265f8cf14fec9d7116d09af49e4b48b357faceda</id>
<content type='text'>
* Fix completion actions: default to PR and support remote repos

- Change default completion action from 'branch' to 'pr' for tasks
  using daemon working directory
- Allow PR completion action to work without target_repo_path if the
  worktree already has an origin remote configured (e.g., when cloned
  from a remote URL)
- Update create_pull_request to accept optional target_repo parameter

Co-Authored-By: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;

* Add dismiss functionality for completed standalone tasks

## Changes

### Backend
- Add 'hidden' field to Task model (models.rs)
- Add database migration for hidden column (20250122000000_add_task_hidden.sql)
- Update task listing queries to include hidden field and filter out hidden tasks
- Update update_task_for_owner to handle hidden field

### Frontend
- Add hidden field to TaskSummary interface (api.ts)
- Add dismissTask API function (api.ts)
- Add hideTask function to useTasks hook
- Add Dismiss button to TaskList for completed standalone tasks
- Wire up onDismiss handler in mesh.tsx route

## Behavior
- Completed standalone tasks (tasks without a contract) show a "Dismiss" button
- Dismissing a task sets hidden=true and removes it from the task list
- Hidden tasks are filtered out by default in all task listing queries

Co-Authored-By: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;

---------

Co-authored-by: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;</content>
</entry>
</feed>
