5.9 KiB
id, type, title, domain, repo, status, owner, topic_slug, created, updated, state_hub_workstream_id
| id | type | title | domain | repo | status | owner | topic_slug | created | updated | state_hub_workstream_id |
|---|---|---|---|---|---|---|---|---|---|---|
| ACTIVITY-WP-0011 | workplan | Event Payload Context Resolver | custodian | activity-core | blocked | codex | custodian | 2026-06-18 | 2026-06-18 | 4efe4bcf-2148-4489-b57c-87f6039d4ed5 |
ACTIVITY-WP-0011 - Event Payload Context Resolver
Context
State Hub message d561ebd7-ba01-4dc6-8ffc-fe87d45304ee from
kaizen-agentic handed off an urgent blocker for LOOP-WP-0002:
event-triggered definitions can receive the triggering EventEnvelope JSON, but
activity-core did not bind source.type: event-payload into the context
snapshot. The immediate customer is the disabled
coulomb-low-success-rate-review ActivityDefinition, whose
flag-low-success-rate rule needs to evaluate
context.metrics.summary.success_rate.
This is in activity-core scope because the repo owns ActivityDefinition context resolution and the Event Bridge workflow boundary. The remaining event type registry and live NATS smoke evidence are cross-repo/operator gates and should wait in State Hub rather than depending on local kubectl or ad hoc live cluster access from this repo.
Implement Event Payload Resolver
id: ACTIVITY-WP-0011-T01
status: done
priority: high
state_hub_task_id: "5c87ce0b-3bd0-4a44-aae5-10d7586c939e"
Register resolver type event-payload so event-triggered definitions can bind
the triggering EventEnvelope attributes into context.*.
Done when:
activity_core.context_resolversimports and registers anevent-payloadresolver.resolve_contextparsesevent_envelope_jsononce and passes the parsed envelope to registered resolvers.source.type: event-payloadextracts envelopeattributes.bind_to: context.metricsstrips thecontext.prefix and unwraps a single-key{"metrics": ...}attributes payload intosnapshot["metrics"].- Missing or malformed envelopes fail required sources visibly and bind
{}for optional sources.
2026-06-18: Completed in src/activity_core/activities.py and
src/activity_core/context_resolvers/event_payload.py.
Cover Binding And Rule Evaluation
id: ACTIVITY-WP-0011-T02
status: done
priority: high
state_hub_task_id: "c6f7dea6-9adc-4997-a22e-4bf2e94dc05a"
Add focused tests for the handoff acceptance contract.
Done when:
- sample
kaizen.metrics.recordedenvelope attributes resolve to:{"metrics": {"agent": "coach", "project": "kaizen-agentic", "summary": ...}}; flag-low-success-rateevaluatescontext.metrics.summary.success_rate < 0.8;- optional missing envelopes bind
{}; - required missing envelopes raise a visible activity failure.
2026-06-18: Completed in tests/test_resolve_context_binding.py. Focused
tests passed:
.venv/bin/python -m pytest tests/test_resolve_context_binding.py tests/test_rule_evaluation_activity.py
reported 8 passed, and adjacent rule tests
.venv/bin/python -m pytest tests/rules/test_evaluator.py tests/rules/test_actions.py
reported 55 passed.
Wait For Event Type Registry
id: ACTIVITY-WP-0011-T03
status: wait
priority: high
state_hub_task_id: "a4f277de-eb83-41bc-860e-b26586c72495"
Confirm that kaizen.metrics.recorded is registered in the shared event type
catalog through the owning State Hub / producer workflow.
Done when:
- State Hub or the producer-owned event catalog exposes
kaizen.metrics.recordedwith an attributes schema coveringmetrics.agent,metrics.project, andmetrics.summary.success_rate; - the registry decision names the owning repo for future schema changes;
- activity-core has no local-only event type drift from the producer contract.
Current wait reason: the event type is producer/catalog owned. Activity-core has implemented the resolver side and should wait for State Hub-backed registry confirmation before treating the live customer definition as fully unblocked.
Wait For Live Event Smoke
id: ACTIVITY-WP-0011-T04
status: done
priority: high
state_hub_task_id: "3b636d5e-8f93-49b4-ae53-3da4f736a4d9"
After T03, run the live event-triggered path without relying on local kubectl from activity-core.
Done when State Hub records non-secret evidence that:
- a sample
kaizen.metrics.recordedenvelope was published on the expected NATS subject; - activity-core triggered
coulomb-low-success-rate-review; - the resolved context snapshot contained
context.metrics.summary.success_rate; flag-low-success-ratematched and produced the expected task/report output;- any disabled-definition or operator-controlled enablement state was recorded.
Execution ownership: this cross-repo/live-runtime smoke was owned by the event producer, customer definition owner, and cluster/operator path. Activity-core accepted the non-secret evidence from State Hub.
2026-06-18: Closed from State Hub acknowledgement
68bfcd0d-7c47-4b42-85fc-64d63f38a909 from kaizen-agentic.
Supplier confirms R1 acceptance criteria met and LOOP-WP-0002 closed. Evidence:
NATS activity.kaizen.metrics.recorded triggered
coulomb-low-success-rate-review (da7a9af7), run
e61554c6-1e67-5fa1-b34e-478d154a188e, tasks_spawned=1, with
metrics.summary.success_rate=0.75.
Close Handoff
id: ACTIVITY-WP-0011-T05
status: done
priority: medium
state_hub_task_id: "5169d8c5-769f-4272-97cf-c25b31087601"
Close the urgent R1/live-smoke handoff once State Hub has acknowledgement that the resolver-side blocker is removed. The broader workplan remains blocked only on T03 event-type registry confirmation.
Done when:
- State Hub message
d561ebd7-ba01-4dc6-8ffc-fe87d45304eeis answered or linked to this workplan; kaizen-agentic/ LOOP-WP-0002 can proceed without an activity-core code blocker;- this workplan has no remaining activity-core code or live-smoke blocker.
2026-06-18: Closed from State Hub acknowledgement
68bfcd0d-7c47-4b42-85fc-64d63f38a909. The original handoff message
d561ebd7-ba01-4dc6-8ffc-fe87d45304ee was answered, and the live smoke
evidence in T04 unblocks LOOP-WP-0002. Only T03 remains open.