Implement ACTIVITY-WP-0026 ops_run claim queue (T01–T06).
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 2s
Build and Publish Container Image / build-and-push (push) Successful in 52s

Add durable claimable ops_runs table, emit dual-write on TaskSpec, REST
claim/lease/complete/fail API, ops status visibility, and consumer docs
aligned with ACT-ADR-005. T07 railiance rollout remains deploy-side.
This commit is contained in:
tegwick 2026-08-03 19:22:50 +02:00
parent a145cc4027
commit 15eb3a2066
15 changed files with 1294 additions and 27 deletions

View file

@ -26,6 +26,7 @@ from activity_core.db import make_engine
from activity_core.issue_sink import get_issue_sink
from activity_core.orm import ActivityDefinition as ActivityDefinitionRow
from activity_core.orm import ActivityRun, TaskInstance, TaskSpawnLog
from activity_core.ops_run_queue import create_ops_run_from_spec
from activity_core.llm_client import get_llm_client
from activity_core.models import InstructionDef
from activity_core.ops_evidence_sinks import persist_ops_inventory_evidence
@ -470,6 +471,25 @@ async def emit_tasks(payload: dict) -> list[str]:
activity_definition_id=activity_id,
)
try:
# ACTIVITY-WP-0026: claimable ops_run (primary for harness)
try:
ops_id = await create_ops_run_from_spec(
session,
spec,
approach_hint=spec_dict.get("approach_hint"),
)
if ops_id is not None:
activity.logger.info(
"emit_tasks: ops_run created id=%s key=%s:%s",
ops_id,
spec.source_id,
triggering_event_id,
)
except Exception as ops_exc:
activity.logger.warning(
"emit_tasks: ops_run insert failed — %s", ops_exc
)
ref = sink.emit(spec)
refs.append(ref.external_id)