df73d28f55
chore(consistency): sync task status from DB [auto]
...
Updated by fix-consistency on 2026-05-14:
- update .custodian-brief.md for activity-core
2026-05-14 23:06:22 +02:00
9abb69d179
chore(consistency): sync task status from DB [auto]
2026-05-14 23:03:29 +02:00
176867cbe3
feat(WP-0003b): parser, workflow wiring, triggers, webhooks
...
T44: ActivityDefinition markdown file parser (definition_parser.py)
- Scans activity-definitions/*.md and ACTIVITY_DEFINITION_DIRS paths
- Parses YAML frontmatter + fenced rule/instruction blocks
- Raises ParseError on any malformed file — never silently skips
T45: ActivityDefinition sync command
- Migration 0006: adds rules_json/instructions_json JSONB columns
- sync_activity_definitions.py + make sync-activity-definitions
- Called at worker startup before schedule sync
T46: Rule/instruction pipeline wired into RunActivityWorkflow
- New evaluate_rules and emit_tasks Temporal activities
- Workflow passes event_envelope_json to enable rule evaluation
- EventRouter now passes full envelope JSON as 4th workflow arg
- IssueSink.emit() writes task_spawn_log rows per task
T47: ScheduledTriggerConfig model (one-off future datetime trigger)
T48: One-off Temporal Schedule support
- Fixed timezone_name → time_zone_name (was causing all schedule tests to fail)
- Added ScheduleCalendarSpec-based one-off schedule with remaining_actions=1
- cancel_scheduled() for admin cancellation
- Fixed backfill() call to use *args unpacking (not list wrapper)
- Fixed ScheduleAlreadyRunningError catch in upsert_schedule
- sync_schedules now handles ScheduledTriggerConfig definitions
T49: Webhook receiver
- POST /webhooks/gitea — HMAC-SHA256 via X-Gitea-Signature-256
- POST /webhooks/github — HMAC-SHA256 via X-Hub-Signature-256
- Normalisers: repo.created, push, issue.closed → EventEnvelope
- Publishes to NATS activity.{type} subject after registry validation
- Mounted in api.py at /webhooks prefix
T50: Gitea event type definitions
- gitea.repo.created.md, gitea.push.md, gitea.issue.closed.md
- Each includes normaliser field mapping in Consumer Notes
Tests: 18 passed, 1 skipped (integration). Fixed embedded Temporal
server visibility latency in test_upsert_schedule_creates_schedule.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-14 23:02:33 +02:00
dc20c44a44
chore(consistency): sync task status from DB [auto]
...
Updated by fix-consistency on 2026-05-14:
- update .custodian-brief.md for activity-core
2026-05-14 22:52:19 +02:00
c25c711e3c
chore(consistency): sync task status from DB [auto]
...
Updated by fix-consistency on 2026-05-14:
- update .custodian-brief.md for activity-core
2026-05-14 22:36:00 +02:00
7c1c4441d1
chore(consistency): sync task status from DB [auto]
...
Updated by fix-consistency on 2026-05-14:
- update .custodian-brief.md for activity-core
2026-05-14 22:22:06 +02:00
0cb98af18c
chore(consistency): sync task status from DB [auto]
...
Updated by fix-consistency on 2026-05-14:
- update .custodian-brief.md for activity-core
2026-05-14 22:06:11 +02:00
c3a256509b
feat(event-bridge): WP-0003a — domain model, rules module, event type registry
...
Implements phases 7–8 of the Event Bridge architecture (custodian-WP-0003a).
Domain model (T34, T40):
- Added RuleDef, InstructionDef, ActionDef to models.py
- Updated ActivityDefinition with rules/instructions fields (task_templates deprecated)
- Formalized EventEnvelope: id, type, version, timestamp, publisher, attributes
- Added from_nats_message() and from_webhook_payload() classmethods
Rules module (T35, T36, T37):
- src/activity_core/rules/ skeleton with boundary enforcement
- evaluate_condition() — sandboxed AST walker, whitelisted nodes only, never exec()
- execute_instruction() — LLM task generation with trusted_fields injection guard
- tests/rules/test_boundary.py verifies no cross-boundary imports
Infrastructure (T38, T39):
- Alembic migrations 0004 (task_spawn_log) and 0005 (event_types)
- IssueSink ABC + IssueCoreRestSink (REST) + NullSink (testing)
- TaskSpawnLog and EventType ORM models
Event type registry (T41, T42, T43):
- event_type_registry.py: file scanner, parser, DB sync, in-process lookup
- ACTIVITY_CURATOR_GATE env var (disabled|required) + approve endpoint
- Three org event type definitions: org.repo.registered, org.workstream.completed,
org.activity.run.completed
All 10 tests pass. Boundary test confirms rules/ isolation.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-14 22:01:15 +02:00
ee81adb2fa
chore(workplan): split WP-0003 into three context-window-sized parts
...
WP-0003 (24 tasks) exceeds the single-run limit. Split by build phase:
0003a — phases 7–8: domain model, rules module, IssueSink, event type registry (10 tasks)
0003b — phases 9–10: ActivityDefinition parser, workflow wiring, triggers, webhooks (7 tasks)
0003c — phases 11–12: context adapters, first ActivityDefinition, test suite (7 tasks)
Original WP-0003 marked superseded. Hub task IDs and workstream ID unchanged.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-14 19:04:50 +02:00
803770a899
chore(consistency): sync task status from DB [auto]
...
Updated by fix-consistency on 2026-05-14:
- update .custodian-brief.md for activity-core
2026-05-14 17:49:34 +02:00
4a8e1a76b8
chore(workplan): add WP-0003 Event Bridge Implementation
...
24 tasks (T34-T57) across 6 phases: domain model refactor
(rules/instructions), sandboxed rule evaluator, instruction executor,
IssueSink adapter, task_spawn_log migration, event type registry,
ActivityDefinition file parser, one-off scheduled trigger,
Gitea webhook receiver, context resolver adapters (repo-scoping,
state-hub), first real ActivityDefinition, and full test suite.
Hub workstream: b4eb45a9-69e3-4ab0-b00c-67a53c3117c5
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-14 17:46:30 +02:00
91a9073448
docs: write INTENT.md and rewrite SCOPE.md for Event Bridge architecture
...
INTENT.md: articulates why activity-core exists, the governing
three-question principle (when/what/where), what it is and is not,
and the design values (markdown-as-definition, rules before instructions,
no task state ownership, publisher-declared governance).
SCOPE.md: rewritten from stale pre-alpha state to reflect WP-0001/0002
completion and the ACT-ADR-001/002/003 architecture. Adds rule/instruction
model, event type registry, task emission adapter, webhook receiver, and
updated current state, terminology, and architecture decision references.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-14 16:56:07 +02:00
617b2420d3
docs(adr): establish three foundational ADRs for Event Bridge architecture
...
ADR-001: activity-core as org-wide Event Bridge — boundaries, NATS as
org infrastructure, state hub delegation, rules-core module-first,
issue-core adapter interface, capabilities domain assignment.
ADR-002: markdown-as-definition format for event types and
ActivityDefinitions — co-located intent/schema/logic/debugging,
publisher-declared governance with environment-configurable curator gate,
attribute type system, task template files.
ADR-003: Rule vs. Instruction model and expression DSL — sandboxed
Python-like AST evaluator for Rules, trusted-fields prompt injection
protection for Instructions, output schema enforcement, audit trail,
testing strategy, rules-core module boundary.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-14 16:48:42 +02:00
0818ce3eb1
chore(workplan): close WP-0001 Foundation — all 21 tasks done
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-14 15:03:26 +02:00
a1b088e7b3
chore(consistency): sync task status from DB [auto]
...
Updated by fix-consistency on 2026-05-14:
- update .custodian-brief.md for activity-core
2026-05-14 15:02:02 +02:00
0b4eb2720c
chore(consistency): sync task status from DB [auto]
...
Updated by fix-consistency on 2026-05-14:
- update .custodian-brief.md for activity-core
2026-05-14 14:45:13 +02:00
a0df0be7d3
chore(consistency): sync task status from DB [auto]
...
Updated by fix-consistency on 2026-05-14:
- update .custodian-brief.md for activity-core
2026-05-14 14:29:35 +02:00
c9ef5da010
chore(consistency): sync task status from DB [auto]
...
Updated by fix-consistency on 2026-05-14:
- update .custodian-brief.md for activity-core
2026-05-14 14:14:06 +02:00
75fe873c76
chore(consistency): sync task status from DB [auto]
...
Updated by fix-consistency on 2026-05-14:
- update .custodian-brief.md for activity-core
2026-05-14 13:58:42 +02:00
b220877255
chore(consistency): sync task status from DB [auto]
...
Updated by fix-consistency on 2026-05-14:
- update .custodian-brief.md for activity-core
2026-05-14 13:43:08 +02:00
e4c58bbaee
chore(consistency): sync task status from DB [auto]
...
Updated by fix-consistency on 2026-05-14:
- update .custodian-brief.md for activity-core
2026-05-14 13:27:38 +02:00
905f666d33
chore(consistency): sync task status from DB [auto]
...
Updated by fix-consistency on 2026-05-14:
- update .custodian-brief.md for activity-core
2026-05-14 13:12:28 +02:00
5ea37f1868
chore(consistency): sync task status from DB [auto]
...
Updated by fix-consistency on 2026-05-14:
- update .custodian-brief.md for activity-core
2026-05-14 12:56:59 +02:00
9186a4e12e
chore(consistency): sync task status from DB [auto]
...
Updated by fix-consistency on 2026-05-14:
- update .custodian-brief.md for activity-core
2026-05-14 12:41:05 +02:00
a296677be8
chore(consistency): sync task status from DB [auto]
...
Updated by fix-consistency on 2026-05-14:
- update .custodian-brief.md for activity-core
2026-05-14 12:25:28 +02:00
a10d7cd1bd
chore(consistency): sync task status from DB [auto]
...
Updated by fix-consistency on 2026-05-14:
- update .custodian-brief.md for activity-core
2026-05-14 12:09:55 +02:00
0deb12c3fc
chore(consistency): sync task status from DB [auto]
...
Updated by fix-consistency on 2026-05-14:
- update .custodian-brief.md for activity-core
2026-05-14 11:54:22 +02:00
bee29cbc3f
chore(consistency): sync task status from DB [auto]
...
Updated by fix-consistency on 2026-05-14:
- update .custodian-brief.md for activity-core
2026-05-14 11:39:27 +02:00
3458b9c90a
chore(consistency): sync task status from DB [auto]
...
Updated by fix-consistency on 2026-05-14:
- update .custodian-brief.md for activity-core
2026-05-14 11:25:13 +02:00
777898f1ff
chore(consistency): sync task status from DB [auto]
...
Updated by fix-consistency on 2026-05-14:
- update .custodian-brief.md for activity-core
2026-05-14 11:08:12 +02:00
80a7324024
chore(consistency): sync task status from DB [auto]
...
Updated by fix-consistency on 2026-05-14:
- update .custodian-brief.md for activity-core
2026-05-14 06:10:55 +02:00
6f192f5a5d
chore(consistency): sync task status from DB [auto]
...
Updated by fix-consistency on 2026-05-14:
- update .custodian-brief.md for activity-core
2026-05-14 05:55:43 +02:00
0322ab256b
chore(consistency): sync task status from DB [auto]
...
Updated by fix-consistency on 2026-05-14:
- update .custodian-brief.md for activity-core
2026-05-14 05:40:30 +02:00
b0c8bbc152
chore(consistency): sync task status from DB [auto]
...
Updated by fix-consistency on 2026-05-14:
- update .custodian-brief.md for activity-core
2026-05-14 05:25:17 +02:00
8f8b715c2c
chore(consistency): sync task status from DB [auto]
...
Updated by fix-consistency on 2026-05-14:
- update .custodian-brief.md for activity-core
2026-05-14 05:10:04 +02:00
8c12eeedd0
chore(consistency): sync task status from DB [auto]
...
Updated by fix-consistency on 2026-05-14:
- update .custodian-brief.md for activity-core
2026-05-14 04:54:47 +02:00
fd30a4fdea
chore(consistency): sync task status from DB [auto]
...
Updated by fix-consistency on 2026-05-14:
- update .custodian-brief.md for activity-core
2026-05-14 04:39:35 +02:00
b5cc1d15b6
chore(consistency): sync task status from DB [auto]
...
Updated by fix-consistency on 2026-05-14:
- update .custodian-brief.md for activity-core
2026-05-14 04:24:15 +02:00
d91a75205e
chore(consistency): sync task status from DB [auto]
...
Updated by fix-consistency on 2026-05-14:
- update .custodian-brief.md for activity-core
2026-05-14 04:08:55 +02:00
fa2aa2e2a4
chore(consistency): sync task status from DB [auto]
...
Updated by fix-consistency on 2026-05-14:
- update .custodian-brief.md for activity-core
2026-05-14 03:28:42 +02:00
8db029c62b
chore(consistency): sync task status from DB [auto]
...
Updated by fix-consistency on 2026-05-14:
- update .custodian-brief.md for activity-core
2026-05-14 03:14:46 +02:00
8b9fdc1e94
chore(consistency): sync task status from DB [auto]
...
Updated by fix-consistency on 2026-05-14:
- update .custodian-brief.md for activity-core
2026-05-14 02:59:07 +02:00
866eefd1e9
chore(consistency): sync task status from DB [auto]
...
Updated by fix-consistency on 2026-05-14:
- update .custodian-brief.md for activity-core
2026-05-14 02:44:58 +02:00
be0b32b061
chore(consistency): sync task status from DB [auto]
...
Updated by fix-consistency on 2026-05-14:
- update .custodian-brief.md for activity-core
2026-05-14 02:13:23 +02:00
0625afe43f
chore(consistency): sync task status from DB [auto]
...
Updated by fix-consistency on 2026-05-14:
- update .custodian-brief.md for activity-core
2026-05-14 01:55:50 +02:00
7babb3da27
chore(consistency): sync task status from DB [auto]
...
Updated by fix-consistency on 2026-05-14:
- update .custodian-brief.md for activity-core
2026-05-14 01:41:12 +02:00
40125d838c
chore(consistency): sync task status from DB [auto]
...
Updated by fix-consistency on 2026-05-14:
- update .custodian-brief.md for activity-core
2026-05-14 01:22:15 +02:00
99e34ba6aa
chore(consistency): sync task status from DB [auto]
...
Updated by fix-consistency on 2026-05-14:
- update .custodian-brief.md for activity-core
2026-05-14 01:06:17 +02:00
5de6f68ffb
chore(consistency): sync task status from DB [auto]
...
Updated by fix-consistency on 2026-05-14:
- update .custodian-brief.md for activity-core
2026-05-14 00:51:14 +02:00
de03b01d85
chore(consistency): sync task status from DB [auto]
...
Updated by fix-consistency on 2026-05-14:
- update .custodian-brief.md for activity-core
2026-05-14 00:36:37 +02:00