<feed xmlns='http://www.w3.org/2005/Atom'>
<title>soryu, branch makima/task-task-5f420783-5f420783</title>
<subtitle>soryu-co/soryu mirror</subtitle>
<id>http://src.eirin.xyz/soryu/atom?h=makima%2Ftask-task-5f420783-5f420783</id>
<link rel='self' href='http://src.eirin.xyz/soryu/atom?h=makima%2Ftask-task-5f420783-5f420783'/>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/'/>
<updated>2026-02-01T02:00:32+00:00</updated>
<entry>
<title>[WIP] Heartbeat checkpoint - 2026-02-01 02:00:32 UTC</title>
<updated>2026-02-01T02:00:32+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-02-01T02:00:32+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=158337a6c55b0e8b7fdaf7ae4e6086a11b7b906f'/>
<id>urn:sha1:158337a6c55b0e8b7fdaf7ae4e6086a11b7b906f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Merge pull request #52 from soryu-co/makima/contract-management-improvements</title>
<updated>2026-01-31T23:07:56+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-01-31T23:07:56+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=7567153e6281b94e39e52be5d060b381ed69597d'/>
<id>urn:sha1:7567153e6281b94e39e52be5d060b381ed69597d</id>
<content type='text'>
feat: Add contract management system improvements (Phase 1)</content>
</entry>
<entry>
<title>feat: Add contract management system improvements (Phase 1)</title>
<updated>2026-01-31T22:54:50+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-01-31T22:53:28+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=44bb3fe07ab191abd8260af6975bc175c223878e'/>
<id>urn:sha1:44bb3fe07ab191abd8260af6975bc175c223878e</id>
<content type='text'>
- Add docs/contract-management-spec.md with full system design
- Add docs/plans/implementation-plan.md with 5-phase rollout plan
- Add validate_deliverable() function and use in mark_deliverable_complete
- Add PhaseChangeResult enum and change_contract_phase_with_version() with FOR UPDATE locking
- Enforce phase_guard at API level for all callers

This addresses critical issues in contract management:
- Deliverable validation to prevent marking non-existent deliverables complete
- Version conflict detection for phase changes with row locking
- Phase guard enforcement at API level (applies to all callers including supervisors)
- Comprehensive specification and implementation plan for future phases
</content>
</entry>
<entry>
<title>Fix null handling for deliverables in create_template_for_owner (#51)</title>
<updated>2026-01-31T22:17:31+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-01-31T22:17:31+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=a6e36a8bfecb9ebe6c7b135b9e01557f7ebc3e58'/>
<id>urn:sha1:a6e36a8bfecb9ebe6c7b135b9e01557f7ebc3e58</id>
<content type='text'>
The previous code used `.unwrap_or_default()` which could produce
`Some(Value::Null)` if JSON serialization failed, leading to
inconsistent handling when the database returned NULL and sqlx
attempted to decode with the `#[sqlx(json)]` attribute on an Option type.

Changed to use `.ok()` which properly returns `None` when serialization
fails, ensuring consistent NULL handling between the application and
database layer.

Fixes: "Failed to create template: error occurred while decoding column
'deliverables': unexpected null; try decoding as an Option"

Co-authored-by: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;</content>
</entry>
<entry>
<title>Add auto_merge_local option for local-only contracts (#50)</title>
<updated>2026-01-31T22:17:09+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-01-31T22:17:09+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=3ea2c72e2c50c0d73614d9ac82f41508b6ab1ce4'/>
<id>urn:sha1:3ea2c72e2c50c0d73614d9ac82f41508b6ab1ce4</id>
<content type='text'>
When local_only=true on a contract, all completion actions are skipped.
This adds a new option auto_merge_local that, when enabled along with
local_only, will automatically merge completed task changes to the
master/main branch locally (without pushing or creating PRs).

Changes:
- Add auto_merge_local column to contracts table (migration)
- Add auto_merge_local field to Contract model and summary
- Update CreateContractRequest and UpdateContractRequest structs
- Update contract repository create/update functions
- Add auto_merge_local to WebSocket protocol StartTask command
- Pass auto_merge_local through spawn_task and run_task functions
- Modify task manager completion logic: if local_only=true AND
  auto_merge_local=true, execute 'merge' completion action locally
- Update all server handlers to retrieve and pass auto_merge_local
- Add TypeScript types to frontend components

Co-authored-by: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;</content>
</entry>
<entry>
<title>Fix Qwen3-TTS tensor paths to match HuggingFace model structure</title>
<updated>2026-01-30T03:07:52+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-01-30T03:07:52+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=c526f93aa4255cb581eeb3f7a495c1689683b0a2'/>
<id>urn:sha1:c526f93aa4255cb581eeb3f7a495c1689683b0a2</id>
<content type='text'>
The HuggingFace model uses different tensor name prefixes:
- talker.model.text_embedding instead of model.embed_tokens
- talker.codec_head instead of lm_head
- talker.code_predictor.model.codec_embedding instead of code_embeddings
- talker.code_predictor.lm_head instead of output_heads

Also removed input_proj which doesn't exist in the HF model.

Co-Authored-By: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Download vocab.json and merges.txt in container image</title>
<updated>2026-01-30T02:59:45+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-01-30T02:59:45+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=a9655dccdad116db2b92c13794ddd559f160148d'/>
<id>urn:sha1:a9655dccdad116db2b92c13794ddd559f160148d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fix download for hf TTS model</title>
<updated>2026-01-30T02:54:51+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-01-30T02:54:51+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=dac1adb138f532245a36fa16524f1e4fb9990173'/>
<id>urn:sha1:dac1adb138f532245a36fa16524f1e4fb9990173</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Support both tokenizor.json and vocab.json+merges.txt formats</title>
<updated>2026-01-30T02:16:45+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-01-30T02:16:45+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=9ddf9a9832924d591bdbd6a78057f55857a33e88'/>
<id>urn:sha1:9ddf9a9832924d591bdbd6a78057f55857a33e88</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Rename to command mode and update worktree to show committed changes</title>
<updated>2026-01-29T17:23:03+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-01-29T17:22:59+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=55bf0714a20e651ab70b1eed01ec665cfefac6b4'/>
<id>urn:sha1:55bf0714a20e651ab70b1eed01ec665cfefac6b4</id>
<content type='text'>
</content>
</entry>
</feed>
