Lapsed claims were reopened with no attempt ceiling, so a run whose worker lost its lease (including a 409 before dispatch) could cycle forever. Activity Core now reopens a lapsed claim below OPS_RUN_MAX_ATTEMPTS and sets terminal 'expired' at the ceiling. The owner is kept for audit, and /ops-runs/expire-leases reports reopened and expired counts. Answers the REINAH-WP-0003-T05 open point on thread 27cd4c47 (ACTIVITY-WP-ADHOC-2026-10-19). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Assistant: claude-code Assistant-Model: opus Assistant-Process: 244572@bnt-lap001 Assistant-Session: 3b235e1a-ae45-4d0f-ae70-17a9bd78ece8 |
||
|---|---|---|
| .claude/rules | ||
| .forgejo/workflows | ||
| .kaizen | ||
| activity-definitions | ||
| agents | ||
| declarations/backup-daily | ||
| docs | ||
| dynamicconfig | ||
| e2e | ||
| event-types | ||
| history | ||
| k8s | ||
| migrations | ||
| registry | ||
| schemas | ||
| scripts | ||
| src/activity_core | ||
| tasks | ||
| tests | ||
| wiki | ||
| workplans | ||
| .dockerignore | ||
| .env.example | ||
| .generated-work-records.json | ||
| .generated-work-records.mk | ||
| .gitignore | ||
| .repo-classification.yaml | ||
| AGENTS.md | ||
| alembic.ini | ||
| CLAUDE.md | ||
| cron_expression | ||
| docker-compose.dev.yml | ||
| docker-compose.railiance.yml | ||
| Dockerfile | ||
| Dockerfile.frontend-patterns | ||
| Dockerfile.pqrst | ||
| INTENT.md | ||
| LICENSE | ||
| Makefile | ||
| misfire_policy | ||
| pyproject.toml | ||
| README.md | ||
| SCOPE.md | ||
| timezone | ||
| uv.lock | ||
| WORK-RECORDS.md | ||
activity-core
activity-core is Coulomb's durable automation factory. It answers when an automation fires (Temporal Schedules, NATS, webhooks, or manual triggers), what should be emitted (deterministic rules or optional validated LLM instructions), and where the result goes (task, report, evidence, or runtime-delivery sinks).
It is not a project tracker, a general shell runner, or a task executor. A small code-owned registry permits three bounded platform operations: controlled SBOM ingest, Forgejo package pruning, and CNPG Option A backup.
Start here
- INTENT.md — product purpose and hard boundaries
- SCOPE.md — implemented capability and current gaps
- docs/runbook.md — local and production operations
- docs/api.md — API surface
- docs/adr/adr-007-bounded-operations.md — admitted mutation contract
Definitions are authored in activity-definitions/*.md and synchronized into
Postgres and Temporal. The /activity-definitions/ REST endpoints provide
basic row administration only; they do not round-trip the full markdown
rules/instructions contract.
For local setup and verification, follow the runbook. The installed activity
CLI is the operator review surface; run uv run activity --help for commands.