feat(sse): .kc metadata, approvals, and dependency SSE events (Phase 6) #146

Open
opened 2026-02-18 20:59:34 +00:00 by forbes · 0 comments
Owner

Add SSE event broadcasting for .kc metadata changes, approval actions, and dependency diffs as specified in KC_SERVER.md Section 6.

Depends on: #141 (Phase 1), #143 (Phase 3), #145 (Phase 5)
Supports: SILO_VIEWPORT Phase 8 (Live integration)

New SSE Events

Event Payload Trigger
metadata.updated {part_number, changed_fields[], lifecycle_state, updated_by} Metadata PUT/PATCH
metadata.lifecycle {part_number, from_state, to_state, updated_by} Lifecycle transition
metadata.tags {part_number, added[], removed[]} Tag add/remove
approval.created {part_number, eco_number, state} ECO created
approval.signed {part_number, eco_number, user, role, status} Approver action
approval.completed {part_number, eco_number, final_state} All approvers acted
dependencies.changed {part_number, added[], removed[], changed[]} Dependency diff on commit

Existing events (revision.created, job.*, bom.changed) are unchanged.

Widget Subscription Map

Viewport widget Subscribes to
Metadata Editor metadata.updated, metadata.lifecycle, metadata.tags
History Viewer revision.created (existing)
Approvals Viewer approval.created, approval.signed, approval.completed
Dependency Table dependencies.changed
Job Viewer job.* (existing)

Implementation scope

  • Extend existing SSE hub to broadcast new event types
  • Add broadcast calls to metadata handlers (Phase 1), approval handlers (Phase 5), and dependency extraction (Phase 3)
  • dependencies.changed requires diffing the new dependency list against the previous commit's list

Acceptance criteria

  • Editing metadata via PUT triggers metadata.updated SSE event
  • Lifecycle transitions trigger metadata.lifecycle event
  • Tag changes trigger metadata.tags event
  • Creating/signing approvals triggers appropriate approval events
  • Committing a .kc with changed dependencies triggers dependencies.changed with add/remove/change diff
  • Existing SSE events continue to work
Add SSE event broadcasting for .kc metadata changes, approval actions, and dependency diffs as specified in [KC_SERVER.md](docs/KC_SERVER.md) Section 6. **Depends on:** #141 (Phase 1), #143 (Phase 3), #145 (Phase 5) **Supports:** SILO_VIEWPORT Phase 8 (Live integration) ## New SSE Events | Event | Payload | Trigger | |-------|---------|---------| | `metadata.updated` | `{part_number, changed_fields[], lifecycle_state, updated_by}` | Metadata PUT/PATCH | | `metadata.lifecycle` | `{part_number, from_state, to_state, updated_by}` | Lifecycle transition | | `metadata.tags` | `{part_number, added[], removed[]}` | Tag add/remove | | `approval.created` | `{part_number, eco_number, state}` | ECO created | | `approval.signed` | `{part_number, eco_number, user, role, status}` | Approver action | | `approval.completed` | `{part_number, eco_number, final_state}` | All approvers acted | | `dependencies.changed` | `{part_number, added[], removed[], changed[]}` | Dependency diff on commit | Existing events (`revision.created`, `job.*`, `bom.changed`) are unchanged. ## Widget Subscription Map | Viewport widget | Subscribes to | |-----------------|---------------| | Metadata Editor | `metadata.updated`, `metadata.lifecycle`, `metadata.tags` | | History Viewer | `revision.created` (existing) | | Approvals Viewer | `approval.created`, `approval.signed`, `approval.completed` | | Dependency Table | `dependencies.changed` | | Job Viewer | `job.*` (existing) | ## Implementation scope - Extend existing SSE hub to broadcast new event types - Add broadcast calls to metadata handlers (Phase 1), approval handlers (Phase 5), and dependency extraction (Phase 3) - `dependencies.changed` requires diffing the new dependency list against the previous commit's list ## Acceptance criteria - Editing metadata via PUT triggers `metadata.updated` SSE event - Lifecycle transitions trigger `metadata.lifecycle` event - Tag changes trigger `metadata.tags` event - Creating/signing approvals triggers appropriate approval events - Committing a .kc with changed dependencies triggers `dependencies.changed` with add/remove/change diff - Existing SSE events continue to work
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: kindred/silo#146