Skip to content

Add transactional event hooks - #18

Merged
owjs3901 merged 2 commits into
mainfrom
owjs3901/events
Aug 30, 2026
Merged

Add transactional event hooks#18
owjs3901 merged 2 commits into
mainfrom
owjs3901/events

Conversation

@owjs3901

Copy link
Copy Markdown
Contributor

Summary

  • add a typed Event contract and event-aware transaction wrapper that persists action work and the JSON outbox row together
  • add Inline and Deferred subscriber registrations to plugin metadata and yeollin_plugin!
  • abort failed Inline transactions, reject nested emission, and run Deferred subscribers only after commit
  • add notify-driven draining with polling recovery and at-least-once retry state
  • emit typed create/update/delete events from the memo example and document the operational contract

Verification

  • cargo clippy --workspace --all-targets --all-features -- -D warnings
  • cargo test --workspace
  • $env:RUSTDOCFLAGS='-D warnings'; cargo doc --workspace --no-deps
  • bunx oxlint
  • bun x tsc --noEmit in packages/app, apps/example-app, and every plugin
  • cargo run -p yeollin-cli -- build --skip-backend from apps/example-app

QA

  • no UI ships in this phase, so browser QA is not applicable
  • assembled-system coverage verifies a real memo write and memo.created outbox row commit together

devfive added 2 commits August 31, 2026 03:14
Cross-plugin observers need durable facts without gaining mutation or filter-hook powers. Keep emit sites typed, persist JSON in the action transaction, fail the transaction on Inline errors, and move external work behind a commit-aware drainer with polling recovery.
Plugin authors need the transaction boundary and delivery guarantees to be unmistakable because choosing Inline for external I/O breaks outbox safety. Record the exact registration API, rollback rules, polling recovery, and at-least-once requirement in the maintained guides.
@owjs3901
owjs3901 merged commit 71576ea into main Aug 30, 2026
1 check passed
@owjs3901
owjs3901 deleted the owjs3901/events branch August 30, 2026 18:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant