<feed xmlns='http://www.w3.org/2005/Atom'>
<title>soryu/makima/src, branch makima/task-task-e6b5334f-e6b5334f</title>
<subtitle>soryu-co/soryu mirror</subtitle>
<id>http://src.eirin.xyz/soryu/atom?h=makima%2Ftask-task-e6b5334f-e6b5334f</id>
<link rel='self' href='http://src.eirin.xyz/soryu/atom?h=makima%2Ftask-task-e6b5334f-e6b5334f'/>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/'/>
<updated>2026-01-26T18:19:03+00:00</updated>
<entry>
<title>[WIP] Heartbeat checkpoint - 2026-01-26 18:19:03 UTC</title>
<updated>2026-01-26T18:19:03+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-01-26T18:19:03+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=4ae5035f3902cc7db6c3bf07fe7bf07489946cf3'/>
<id>urn:sha1:4ae5035f3902cc7db6c3bf07fe7bf07489946cf3</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add automatic phase transitions and fix PR creation</title>
<updated>2026-01-25T04:39:37+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-01-25T04:39:37+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=cb4f2fc40dbabb40de948512eee74c7e46264665'/>
<id>urn:sha1:cb4f2fc40dbabb40de948512eee74c7e46264665</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Update create contract page to use dynamic templates (#29)</title>
<updated>2026-01-25T03:53:55+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-01-25T03:53:55+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=c908854e7e3571c99cce9f46497ce5337ea0aed1'/>
<id>urn:sha1:c908854e7e3571c99cce9f46497ce5337ea0aed1</id>
<content type='text'>
* feat: Add contract type templates API endpoint

Add a new API endpoint to provide contract type templates (workflow
definitions) separate from file templates. This enables the create
contract page to dynamically show available contract types.

Changes:
- Add ContractTypeTemplate struct in templates.rs with id, name,
  description, phases, default_phase, and is_builtin fields
- Add built-in contract types: 'simple' (plan/execute) and
  'specification' (research/specify/plan/execute/review)
- Add GET /api/v1/contract-types endpoint returning all contract types
- Add frontend ContractTypeTemplate interface and listContractTypes()
  API function

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

* feat: Update create contract modal to use dynamic templates

- Add ContractTypeTemplate interface and listContractTypes API function
  to frontend api.ts
- Add GET /api/v1/contract-types backend endpoint that returns built-in
  contract types (simple, specification) with their phases and defaults
- Update create contract modal to fetch contract types dynamically when
  opened, with loading state and fallback to hardcoded types on error
- Dynamically render contract type selection buttons from fetched types
- Update phase dropdown to use phases from selected contract type
- Replace static getValidPhases/getDefaultPhase calls with dynamic data

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>feat: Simplify contract deliverables and add Templates UI</title>
<updated>2026-01-24T20:06:28+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-01-24T20:06:28+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=6364363d1418728351f252b799d397b756e1f985'/>
<id>urn:sha1:6364363d1418728351f252b799d397b756e1f985</id>
<content type='text'>
## Backend Changes

### Phase Deliverables Simplified
- **Simple contract type**:
  - Plan phase: Only 'Plan' deliverable (required)
  - Execute phase: Only 'PR' deliverable (required)

- **Specification contract type**:
  - Research phase: Only 'Research Notes' deliverable (required)
  - Specify phase: Only 'Requirements Document' deliverable (required)
  - Plan phase: Only 'Plan' deliverable (required)
  - Execute phase: Only 'PR' deliverable (required)
  - Review phase: Only 'Release Notes' deliverable (required)

### New 'execute' Contract Type
- Only has 'execute' phase (no plan or review phases)
- NO deliverables at all - executes tasks directly
- Added to ContractType enum with proper Display/FromStr implementations
- Added helper methods: `initial_phase()`, `terminal_phase()`

### API Updates
- Added `get_phase_deliverables_for_type()` for contract-type-aware deliverables
- Added `get_phase_checklist_for_type()` for contract-type-aware checklists
- Added `check_phase_completion_for_type()` for contract-type-aware completion checks
- Added `check_deliverables_met()` function for deliverable validation
- Added `should_auto_progress()` for autonomous contract progression
- Added new ContractToolRequest::CheckDeliverablesMet tool

## Frontend Changes (makima/frontend)

### Templates Page
- Add TemplateEditor component for editing phase deliverables
- Create Templates page with template card grid layout
- Add navigation link in NavStrip
- Implement three built-in templates: Simple, Specification, Execute
- Support for creating custom templates with configurable phases/deliverables
- Templates are persisted to localStorage

Co-Authored-By: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Fix history and add retries to makima CLI</title>
<updated>2026-01-24T18:11:41+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-01-24T18:11:41+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=792d12df6b1b1bc4f327cbe8e71e7986c67e98f6'/>
<id>urn:sha1:792d12df6b1b1bc4f327cbe8e71e7986c67e98f6</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Increase concurrency limit</title>
<updated>2026-01-24T15:43:45+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-01-24T15:43:45+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=4ea35373c08ca7c212dbc7739901168ee4b30753'/>
<id>urn:sha1:4ea35373c08ca7c212dbc7739901168ee4b30753</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Clean up questions after removing tasks or contracts</title>
<updated>2026-01-24T14:54:21+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-01-24T14:54:21+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=9b028d8085d308e43239972348ab117d473caf73'/>
<id>urn:sha1:9b028d8085d308e43239972348ab117d473caf73</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fix pushing heartbeat commits</title>
<updated>2026-01-24T14:17:30+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-01-24T14:17:30+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=1abc91f1da9beb96a54e466102f97e8e8c0b70e5'/>
<id>urn:sha1:1abc91f1da9beb96a54e466102f97e8e8c0b70e5</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Reclone if can't find repository</title>
<updated>2026-01-24T12:35:24+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-01-24T12:35:24+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=df774a06324954b9c90497f83eca44279b70f6d5'/>
<id>urn:sha1:df774a06324954b9c90497f83eca44279b70f6d5</id>
<content type='text'>
</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>
</feed>
