<feed xmlns='http://www.w3.org/2005/Atom'>
<title>claudomator.git, branch story/acceptance-criteria</title>
<subtitle>claudomator — task automation server
</subtitle>
<id>https://git.terst.org/claudomator.git/atom?h=story%2Facceptance-criteria</id>
<link rel='self' href='https://git.terst.org/claudomator.git/atom?h=story%2Facceptance-criteria'/>
<link rel='alternate' type='text/html' href='https://git.terst.org/claudomator.git/'/>
<updated>2026-03-26T09:28:17+00:00</updated>
<entry>
<title>update createValidationTask to list named acceptance criteria in instructions</title>
<updated>2026-03-26T09:28:17+00:00</updated>
<author>
<name>Claudomator Agent</name>
<email>agent@claudomator.local</email>
</author>
<published>2026-03-26T09:28:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/claudomator.git/commit/?id=f66fde80bf5759faa75d3c294e99abbb75dd2cdf'/>
<id>urn:sha1:f66fde80bf5759faa75d3c294e99abbb75dd2cdf</id>
<content type='text'>
Replace raw ValidationJSON in validation task instructions with a
formatted per-criterion checklist when acceptance_criteria entries are
present. Falls back to the raw JSON blob when AcceptanceCriteria is
empty. Adds TestCreateValidationTask_InstructionsIncludeNamedCriteria.

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>update elaboration prompt to use structured acceptance_criteria schema</title>
<updated>2026-03-26T09:06:03+00:00</updated>
<author>
<name>Claude Agent</name>
<email>agent@claudomator</email>
</author>
<published>2026-03-26T09:06:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/claudomator.git/commit/?id=a13ec6aa94550bce5caaee6bc01e690cabb5d4dc'/>
<id>urn:sha1:a13ec6aa94550bce5caaee6bc01e690cabb5d4dc</id>
<content type='text'>
Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>add AcceptanceCriterion struct, replace steps with acceptance_criteria in elaboratedStoryValidation</title>
<updated>2026-03-26T08:35:11+00:00</updated>
<author>
<name>Claudomator Agent</name>
<email>agent@claudomator</email>
</author>
<published>2026-03-26T08:35:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/claudomator.git/commit/?id=4affaae6853c260346afe344dfb8d46ff497530f'/>
<id>urn:sha1:4affaae6853c260346afe344dfb8d46ff497530f</id>
<content type='text'>
Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>fix: next-task fallback should not exclude previously-executed tasks</title>
<updated>2026-03-26T08:22:52+00:00</updated>
<author>
<name>Peter Stone</name>
<email>thepeterstone@gmail.com</email>
</author>
<published>2026-03-26T08:22:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/claudomator.git/commit/?id=8bb9ac1328fc4f6b8d8e7aae0d6ea706e502c245'/>
<id>urn:sha1:8bb9ac1328fc4f6b8d8e7aae0d6ea706e502c245</id>
<content type='text'>
The `id NOT IN (SELECT task_id FROM executions)` guard prevented retried
tasks (FAILED→PENDING) from ever being picked up by start-next-task.
Only the rejection_comment check is needed to avoid re-running rejected tasks.

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>feat: cascade retry deps when running a task with failed dependencies</title>
<updated>2026-03-26T08:02:09+00:00</updated>
<author>
<name>Peter Stone</name>
<email>thepeterstone@gmail.com</email>
</author>
<published>2026-03-26T08:02:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/claudomator.git/commit/?id=5f3e9900358649f1356d0a242e643790e29e3701'/>
<id>urn:sha1:5f3e9900358649f1356d0a242e643790e29e3701</id>
<content type='text'>
When /run is called on a CANCELLED/FAILED task that has deps in a terminal
failure state, automatically reset and resubmit those deps so the task
isn't immediately re-cancelled by the pool's dep check.

Also update reset-failed-tasks script to handle CANCELLED tasks and clean
up preserved sandbox workspaces.

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>fix: cancel waiting tasks when dep hits terminal failure (QUEUED→CANCELLED)</title>
<updated>2026-03-26T07:03:02+00:00</updated>
<author>
<name>Peter Stone</name>
<email>thepeterstone@gmail.com</email>
</author>
<published>2026-03-26T07:03:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/claudomator.git/commit/?id=34b4f397b1f46cb5027ba910983021a68f3e7333'/>
<id>urn:sha1:34b4f397b1f46cb5027ba910983021a68f3e7333</id>
<content type='text'>
QUEUED→FAILED is not a valid state transition. When a dependency enters a
terminal failure state, cancel the waiting task instead.

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>fix: story branch push to bare repo; drain at 3 consecutive failures</title>
<updated>2026-03-26T06:36:32+00:00</updated>
<author>
<name>Peter Stone</name>
<email>thepeterstone@gmail.com</email>
</author>
<published>2026-03-26T06:36:32+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/claudomator.git/commit/?id=44521cc50e304b61c44b9a269a8239fd0fef49cd'/>
<id>urn:sha1:44521cc50e304b61c44b9a269a8239fd0fef49cd</id>
<content type='text'>
createStoryBranch was pushing to 'origin' which doesn't exist — branches
never landed in the bare repo so agents couldn't clone them. Now uses
the project's RemoteURL (bare repo path) directly for fetch and push.

Raise drain threshold from 2 to 3 consecutive failures to reduce false
positives from transient errors.

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