<feed xmlns='http://www.w3.org/2005/Atom'>
<title>claudomator.git, branch story/repo-url</title>
<subtitle>claudomator — task automation server
</subtitle>
<id>https://git.terst.org/claudomator.git/atom?h=story%2Frepo-url</id>
<link rel='self' href='https://git.terst.org/claudomator.git/atom?h=story%2Frepo-url'/>
<link rel='alternate' type='text/html' href='https://git.terst.org/claudomator.git/'/>
<updated>2026-03-26T05:49:29+00:00</updated>
<entry>
<title>test: add TestPool_DependsOn_NoDeadlock</title>
<updated>2026-03-26T05:49:29+00:00</updated>
<author>
<name>Peter Stone</name>
<email>thepeterstone@gmail.com</email>
</author>
<published>2026-03-26T05:49:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/claudomator.git/commit/?id=ba6a83ae5a62c3e93d7a119c5d8e6690bee7c099'/>
<id>urn:sha1:ba6a83ae5a62c3e93d7a119c5d8e6690bee7c099</id>
<content type='text'>
Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>fix: resolve dep-chain deadlock; broadcast task_started for UI visibility</title>
<updated>2026-03-26T05:45:19+00:00</updated>
<author>
<name>Peter Stone</name>
<email>thepeterstone@gmail.com</email>
</author>
<published>2026-03-26T05:45:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/claudomator.git/commit/?id=2710eb8a3a58abbea95bd487797abbb3e67f0d0a'/>
<id>urn:sha1:2710eb8a3a58abbea95bd487797abbb3e67f0d0a</id>
<content type='text'>
With maxPerAgent=1, tasks with DependsOn were entering waitForDependencies
while holding the per-agent slot, preventing the dependency from ever running.

Fix: check deps before taking the slot. If not ready, requeue without holding
activePerAgent. Also accept StateReady (leaf tasks) as a satisfied dependency,
not just StateCompleted.

Add startedCh to pool and broadcast task_started WebSocket event when a task
transitions to RUNNING, so the UI immediately shows the running state during
the clone phase instead of waiting for completion.

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>fix: expose drained state in agent status API; fix AgentEvent JSON casing</title>
<updated>2026-03-26T05:10:56+00:00</updated>
<author>
<name>Peter Stone</name>
<email>thepeterstone@gmail.com</email>
</author>
<published>2026-03-26T05:10:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/claudomator.git/commit/?id=b009880307298abea11efad92da2cd955afafe99'/>
<id>urn:sha1:b009880307298abea11efad92da2cd955afafe99</id>
<content type='text'>
AgentStatusInfo was missing drained field so UI couldn't show drain lock.
AgentEvent had no JSON tags so ev.agent/event/timestamp were undefined in
the stats timeline. UI now shows "Drain locked" card state with undrain CTA.

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>fix: set RepositoryURL on tasks created via story approve</title>
<updated>2026-03-26T04:57:37+00:00</updated>
<author>
<name>Peter Stone</name>
<email>thepeterstone@gmail.com</email>
</author>
<published>2026-03-26T04:57:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/claudomator.git/commit/?id=5410069ae36bc5df5d7cc950fce5d2c5a251618a'/>
<id>urn:sha1:5410069ae36bc5df5d7cc950fce5d2c5a251618a</id>
<content type='text'>
handleApproveStory was creating tasks without RepositoryURL, causing
executions to fail with "task has no repository_url". Now looks up
the project's RemoteURL and sets it on all tasks and subtasks.

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>fix: story tasks get Project field; elaborate reads worklog; deploy chmod scripts</title>
<updated>2026-03-26T04:10:35+00:00</updated>
<author>
<name>Peter Stone</name>
<email>thepeterstone@gmail.com</email>
</author>
<published>2026-03-26T04:10:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/claudomator.git/commit/?id=b6e420a62a3e7e81a6f5d2819f12cca11b82e572'/>
<id>urn:sha1:b6e420a62a3e7e81a6f5d2819f12cca11b82e572</id>
<content type='text'>
- handleApproveStory: set Project = input.ProjectID on tasks and subtasks so
  the executor can resolve RepositoryURL from the project registry (was causing
  "task has no repository_url" on every story task)
- elaborate.go: read .agent/worklog.md instead of SESSION_STATE.md for project
  context injected into elaboration prompts
- deploy: explicitly chmod +x all scripts before restart (same root cause as
  the binary execute-bit loss — chown -R was stripping it)

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>fix: ensure claudomator binary is executable before service restart in deploy</title>
<updated>2026-03-26T02:51:46+00:00</updated>
<author>
<name>Peter Stone</name>
<email>thepeterstone@gmail.com</email>
</author>
<published>2026-03-26T02:51:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/claudomator.git/commit/?id=5a54e108f743afd2a2bf6e0598e7db815b01ac11'/>
<id>urn:sha1:5a54e108f743afd2a2bf6e0598e7db815b01ac11</id>
<content type='text'>
chown -R in fix-permissions was stripping the execute bit on the binary,
causing the service to fail with 203/EXEC on next restart. Explicitly
chmod +x both bin paths as the final step before systemctl restart.

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>fix: update deploy script to pull from main instead of master</title>
<updated>2026-03-25T23:29:15+00:00</updated>
<author>
<name>Peter Stone</name>
<email>thepeterstone@gmail.com</email>
</author>
<published>2026-03-25T23:29:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/claudomator.git/commit/?id=f88073c451988026b8cb36294f6ec4e33c38415c'/>
<id>urn:sha1:f88073c451988026b8cb36294f6ec4e33c38415c</id>
<content type='text'>
Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>feat: add Stories UI — tab, list, new story elaborate/approve flow</title>
<updated>2026-03-25T23:28:22+00:00</updated>
<author>
<name>Peter Stone</name>
<email>thepeterstone@gmail.com</email>
</author>
<published>2026-03-25T23:28:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/claudomator.git/commit/?id=36d50b5049996064fbdcb9338e70d4f81c2e6873'/>
<id>urn:sha1:36d50b5049996064fbdcb9338e70d4f81c2e6873</id>
<content type='text'>
- Stories tab (📖) with story card list, status badges, project/branch meta
- New Story modal: project picker + goal textarea + AI elaboration → plan review → approve &amp; queue
- Story detail modal: status, project, branch, created date
- Export storyStatusLabel() and renderStoryCard() with 16 unit tests
- CSS for story cards, status badges, and modals

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>fix: remove duplicate summary section in task panel, fix test mock DOM</title>
<updated>2026-03-25T23:08:09+00:00</updated>
<author>
<name>Peter Stone</name>
<email>thepeterstone@gmail.com</email>
</author>
<published>2026-03-25T23:08:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/claudomator.git/commit/?id=053ec03306f37e354c013beb8b4baf8eae27af97'/>
<id>urn:sha1:053ec03306f37e354c013beb8b4baf8eae27af97</id>
<content type='text'>
renderTaskPanel was rendering the summary twice — once with .task-summary
before Overview, and again with .task-summary-text after it. Remove the
second (post-Overview) duplicate.

Add `dataset: {}` to the test mock DOM so makeMetaItem's state badge path
doesn't crash during renderTaskPanel tests.

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>chore: worklog — mark proxy work done, status idle</title>
<updated>2026-03-25T06:19:41+00:00</updated>
<author>
<name>Peter Stone</name>
<email>thepeterstone@gmail.com</email>
</author>
<published>2026-03-25T06:19:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/claudomator.git/commit/?id=ffa57952709e88c6524448f89a3d4dd623be2440'/>
<id>urn:sha1:ffa57952709e88c6524448f89a3d4dd623be2440</id>
<content type='text'>
</content>
</entry>
</feed>
