<feed xmlns='http://www.w3.org/2005/Atom'>
<title>claudomator.git, branch story/task-project-fk</title>
<subtitle>claudomator — task automation server
</subtitle>
<id>https://git.terst.org/claudomator.git/atom?h=story%2Ftask-project-fk</id>
<link rel='self' href='https://git.terst.org/claudomator.git/atom?h=story%2Ftask-project-fk'/>
<link rel='alternate' type='text/html' href='https://git.terst.org/claudomator.git/'/>
<updated>2026-04-03T23:31:15+00:00</updated>
<entry>
<title>refactor: replace Task.Project+RepositoryURL+BranchName with ProjectID FK</title>
<updated>2026-04-03T23:31:15+00:00</updated>
<author>
<name>Claude Agent</name>
<email>agent@claudomator.local</email>
</author>
<published>2026-04-03T23:31:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/claudomator.git/commit/?id=97eef0c964fb5d0dd53c66cec389831de8316fe0'/>
<id>urn:sha1:97eef0c964fb5d0dd53c66cec389831de8316fe0</id>
<content type='text'>
- Task.Project (human-readable name) replaced by Task.ProjectID (FK to Project.ID)
- Task.RepositoryURL changed to derived-only (yaml:"-"), computed at runtime from ProjectID
- Validator now accepts project_id OR repository_url (either satisfies the requirement)
- Update task_test.go and validator_test.go accordingly

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>feat: require repository_url on tasks; fix UpdateTask to persist it; fix cascade-retry test race</title>
<updated>2026-04-03T08:44:02+00:00</updated>
<author>
<name>Peter Stone</name>
<email>thepeterstone@gmail.com</email>
</author>
<published>2026-04-03T08:44:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/claudomator.git/commit/?id=1271ba1d329c8b16062600dfafdec1d06c735c2e'/>
<id>urn:sha1:1271ba1d329c8b16062600dfafdec1d06c735c2e</id>
<content type='text'>
Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>fix: remove drain-lock circuit breaker that halted all executions after 3 consecutive failures</title>
<updated>2026-04-03T08:39:32+00:00</updated>
<author>
<name>Peter Stone</name>
<email>thepeterstone@gmail.com</email>
</author>
<published>2026-04-03T08:39:32+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/claudomator.git/commit/?id=5aa6a15ffdf68a8dbe12eb0fdfff93deafb9da10'/>
<id>urn:sha1:5aa6a15ffdf68a8dbe12eb0fdfff93deafb9da10</id>
<content type='text'>
Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>docs: add seed.go pointer to essential commands table</title>
<updated>2026-03-29T08:49:10+00:00</updated>
<author>
<name>Peter Stone</name>
<email>thepeterstone@gmail.com</email>
</author>
<published>2026-03-29T08:49:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/claudomator.git/commit/?id=2461fcf03ed2a49c7ac4aaed77fdde1aa01177c4'/>
<id>urn:sha1:2461fcf03ed2a49c7ac4aaed77fdde1aa01177c4</id>
<content type='text'>
</content>
</entry>
<entry>
<title>feat: register modal-shell project; document project registry</title>
<updated>2026-03-29T08:37:02+00:00</updated>
<author>
<name>Peter Stone</name>
<email>thepeterstone@gmail.com</email>
</author>
<published>2026-03-29T08:37:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/claudomator.git/commit/?id=59c9b40e5d45e82cc676061ca215feb6b56cd405'/>
<id>urn:sha1:59c9b40e5d45e82cc676061ca215feb6b56cd405</id>
<content type='text'>
Adds modal-shell to SeedProjects() and documents how to find
and edit seed.go in .agent/design.md.
</content>
</entry>
<entry>
<title>feat: add rotating background wallpaper</title>
<updated>2026-03-29T06:10:13+00:00</updated>
<author>
<name>Peter Stone</name>
<email>thepeterstone@gmail.com</email>
</author>
<published>2026-03-29T06:10:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/claudomator.git/commit/?id=3c5206a927fa7c71c6d77dbac4eb4f274b7a5a77'/>
<id>urn:sha1:3c5206a927fa7c71c6d77dbac4eb4f274b7a5a77</id>
<content type='text'>
Uses time-bucketed picsum seed (5-min intervals) so all sites
show the same image simultaneously. Sets --bg-url CSS custom
property on body, consumed by .bg-body background-image rule.
</content>
</entry>
<entry>
<title>fix: story stays PENDING when all subtasks complete but parent task stays QUEUED</title>
<updated>2026-03-26T09:36:30+00:00</updated>
<author>
<name>Peter Stone</name>
<email>thepeterstone@gmail.com</email>
</author>
<published>2026-03-26T09:36:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/claudomator.git/commit/?id=759396855a967a3d509498cc55faa3b4d8cadfba'/>
<id>urn:sha1:759396855a967a3d509498cc55faa3b4d8cadfba</id>
<content type='text'>
When a story is approved with pre-created subtasks, parent tasks are
QUEUED but never run. Their subtasks complete, but:
- maybeUnblockParent only handled BLOCKED parents, not QUEUED ones
- checkStoryCompletion required ALL tasks (incl. subtasks) to be done

Fixes:
- maybeUnblockParent now also promotes QUEUED parents to READY when all
  subtasks are COMPLETED
- checkStoryCompletion only checks top-level tasks (parent_task_id="")
- RecoverStaleBlocked now also scans QUEUED parents on startup and
  triggers checkStoryCompletion if it promotes them
- Add QUEUED→READY to valid state transitions (subtask delegation path)

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>feat: graceful shutdown — drain workers before exit (default 3m timeout)</title>
<updated>2026-03-26T09:14:14+00:00</updated>
<author>
<name>Peter Stone</name>
<email>thepeterstone@gmail.com</email>
</author>
<published>2026-03-26T09:09:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/claudomator.git/commit/?id=3f9843b34d7ae9df2dd9c69427ecab45744b97e9'/>
<id>urn:sha1:3f9843b34d7ae9df2dd9c69427ecab45744b97e9</id>
<content type='text'>
- Add workerWg to Pool; Shutdown() closes workCh and waits for all
  in-flight execute/executeResume goroutines to finish
- Signal handler now shuts down HTTP first, then drains the pool
- ShutdownTimeout config field (toml: shutdown_timeout); default 3m
- Tests: WaitsForWorkers and TimesOut

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>feat: show tasks and subtasks in story detail view</title>
<updated>2026-03-26T09:01:35+00:00</updated>
<author>
<name>Peter Stone</name>
<email>thepeterstone@gmail.com</email>
</author>
<published>2026-03-26T09:01:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/claudomator.git/commit/?id=dac676e8284725c8ec6de08282fe08a9b519ccc8'/>
<id>urn:sha1:dac676e8284725c8ec6de08282fe08a9b519ccc8</id>
<content type='text'>
Story detail modal now fetches /api/stories/{id}/tasks and renders
top-level tasks as a numbered list with subtasks nested beneath, using
the same state emoji as the blocked/task views.

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>fix: ensure story branch exists before cloning at task start</title>
<updated>2026-03-26T08:56:04+00:00</updated>
<author>
<name>Peter Stone</name>
<email>thepeterstone@gmail.com</email>
</author>
<published>2026-03-26T08:56:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/claudomator.git/commit/?id=909fa86bea1f55acc1ccb119e9509d2c724f6b5b'/>
<id>urn:sha1:909fa86bea1f55acc1ccb119e9509d2c724f6b5b</id>
<content type='text'>
Add ensureStoryBranch() that runs git ls-remote to check, then clones
into a temp dir to create and push the branch if missing. Called before
the task's own clone so checkout is guaranteed to succeed.

Removes the post-checkout fallback hack added in the previous commit.

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
</feed>
