MikaAir LIGHTNESSCapability Book
目次を開く

F BUS / 実装状態は正本registryから生成

F12_Notification / Notification

誰へ何をいつ送るかを常に見せ、同意・quiet hours・retryを扱う器官。

subscribe済みrecipientへのsend planをtimezoneとbody preview付きで作り、scheduleまたは承認実行する。

入力 → 状態 → 出力

線形テキスト代替: Action Registryが検証したpayloadをengineへ渡す。engineはこの器官のdurable state sliceを更新し、resultまたはerrorをAction Coreへ返す。光は実行中、琥珀の境界はarmed状態、外縁はこの器官の作用半径を表す。
  1. 入力validated JSON payload
  2. 状態engine-owned durable slice
  3. 承認必要な外部 / 不可逆操作だけ
  4. 出力result / receipt / explicit error
  5. 回復unsubscribeで停止し、失敗はbackoff retryを経てdead letterへ残す。webhookは署名とidempotencyで守る。
11 registered actionsnone dependenciesresend_webhook_cron binding reference

保存状態はAction Coreのfilesystem state store内の capabilities sliceとして再起動可能なplain dataで保持される。functionや秘密値をstateへ保存しない。

全Action

以下はAction Registryに実在するF12_Notificationの全actionである。クリックでpayload境界、状態、出力、回復を開ける。

capability.notification.bindBind notificationlocal or validated transition
payload
provider
状態
unbound → configured / ready
result
Capability engine の ok result、または明示的な validation / provider error。plan・receipt・stateは持続sliceへ返る。
recovery
error codeと状態を残し、必要に応じて再計画・再承認・retryへ戻る。
capability.notification.subscribeSubscribe notificationlocal or validated transition
payload
recipient purpose
状態
state transition defined by the capability engine
result
Capability engine の ok result、または明示的な validation / provider error。plan・receipt・stateは持続sliceへ返る。
recovery
error codeと状態を残し、必要に応じて再計画・再承認・retryへ戻る。
capability.notification.unsubscribeUnsubscribe notificationlocal or validated transition
payload
recipient
状態
state transition defined by the capability engine
result
Capability engine の ok result、または明示的な validation / provider error。plan・receipt・stateは持続sliceへ返る。
recovery
error codeと状態を残し、必要に応じて再計画・再承認・retryへ戻る。
capability.notification.plan_sendPlan notification sendapproval boundary / external effect
payload
recipient subject body purpose
状態
durable plan → approval_required
result
Capability engine の ok result、または明示的な validation / provider error。plan・receipt・stateは持続sliceへ返る。
recovery
error codeと状態を残し、必要に応じて再計画・再承認・retryへ戻る。
capability.notification.arm_sendArm notification sendapproval boundary / external effect
payload
sendPlanId
状態
approval_required → armed
result
Capability engine の ok result、または明示的な validation / provider error。plan・receipt・stateは持続sliceへ返る。
recovery
error codeと状態を残し、必要に応じて再計画・再承認・retryへ戻る。
capability.notification.execute_sendExecute notification sendapproval boundary / external effect
payload
sendPlanId
状態
armed → visible provider/result state
result
Capability engine の ok result、または明示的な validation / provider error。plan・receipt・stateは持続sliceへ返る。
recovery
実行前にarm状態を要求する。失敗はengineが保持し、同一keyは重複実行を防ぐ。
capability.notification.scheduleSchedule notificationlocal or validated transition
payload
sendPlanId cronExpression
状態
state transition defined by the capability engine
result
Capability engine の ok result、または明示的な validation / provider error。plan・receipt・stateは持続sliceへ返る。
recovery
error codeと状態を残し、必要に応じて再計画・再承認・retryへ戻る。
capability.notification.cancelCancel notificationlocal or validated transition
payload
notificationId
状態
active work → cancelled
result
Capability engine の ok result、または明示的な validation / provider error。plan・receipt・stateは持続sliceへ返る。
recovery
error codeと状態を残し、必要に応じて再計画・再承認・retryへ戻る。
capability.notification.retryRetry notificationlocal or validated transition
payload
sendPlanId
状態
failed → retry / dead letter when bounded
result
Capability engine の ok result、または明示的な validation / provider error。plan・receipt・stateは持続sliceへ返る。
recovery
error codeと状態を残し、必要に応じて再計画・再承認・retryへ戻る。
capability.notification.register_webhookRegister notification webhooklocal or validated transition
payload
endpoint purpose
状態
state transition defined by the capability engine
result
Capability engine の ok result、または明示的な validation / provider error。plan・receipt・stateは持続sliceへ返る。
recovery
error codeと状態を残し、必要に応じて再計画・再承認・retryへ戻る。
capability.notification.apply_webhookApply notification webhooklocal or validated transition
payload
eventId type notificationId signature
状態
state transition defined by the capability engine
result
Capability engine の ok result、または明示的な validation / provider error。plan・receipt・stateは持続sliceへ返る。
recovery
error codeと状態を残し、必要に応じて再計画・再承認・retryへ戻る。

Capability Spec

F12 Notification — Capability Spec

Notification, webhook, and scheduling capability with Resend/webhook/cron-compatible contract mocks. No live sending. Channel, recipient, content, purpose, and time are always visible. Consent/unsubscribe enforced. Retry with backoff and dead-letter queue. Webhook signature and idempotency. Schedule timezone support. Cancel and quiet hours.

States

StateMeaning
draftLocal draft.
plannedSend plan recorded.
approval_requiredAwaiting human approval.
scheduledScheduled for future delivery.
sendingExecute in progress (mock).
deliveredMock delivery confirmed.
failedSend failed; retry eligible.
cancelledCancelled before send.

Actions

ActionFlow
bindResend/webhook/cron binding
subscribe / unsubscribeConsent lifecycle
plan_sendarm_sendexecute_sendApproval-required mock send
scheduleCron-compatible schedule mock
cancelCancel scheduled notification
retryBackoff retry after failure
register_webhook / apply_webhookWebhook signature + replay protection

Environment Names

NameRole
RESEND_API_KEYResend API key (name only)
MIKAAIR_MAIL_FROMFrom address env name
MIKAAIR_NOTIFICATION_WEBHOOK_SECRETWebhook HMAC secret
MIKAAIR_NOTIFICATION_QUIET_HOURS_STARTQuiet hours start hour (UTC)
MIKAAIR_NOTIFICATION_QUIET_HOURS_ENDQuiet hours end hour (UTC)
MIKAAIR_NOTIFICATION_DEFAULT_TIMEZONEDefault IANA timezone
MIKAAIR_NOTIFICATION_MAX_RETRIESMax retry attempts before dead letter

binding / secret boundary

provider設定はbinding templateから参照する。環境変数は名前だけを扱い、値はsource repository・画面・reportに書かない。

環境変数名扱い
RESEND_API_KEYsecret reference — 値は表示・保存しない
MIKAAIR_MAIL_FROMconfiguration reference — 値は表示・保存しない
MIKAAIR_NOTIFICATION_WEBHOOK_SECRETsecret reference — 値は表示・保存しない
MIKAAIR_NOTIFICATION_QUIET_HOURS_STARTconfiguration reference — 値は表示・保存しない
MIKAAIR_NOTIFICATION_QUIET_HOURS_ENDconfiguration reference — 値は表示・保存しない
MIKAAIR_NOTIFICATION_DEFAULT_TIMEZONEconfiguration reference — 値は表示・保存しない
MIKAAIR_NOTIFICATION_MAX_RETRIESconfiguration reference — 値は表示・保存しない

unsubscribeで停止し、失敗はbackoff retryを経てdead letterへ残す。webhookは署名とidempotencyで守る。

source trace

../MikaAir LIGHTNESS/F_BUS_Capability/F12_Notification/spec/capability_spec.md 6d9cff13fd22
../MikaAir LIGHTNESS/F_BUS_Capability/F12_Notification/binding/binding_manifest.template.json 079b0dc3bddf
../MikaAir LIGHTNESS/F_BUS_Capability/F12_Notification/agent.md 20da889bd9cc
../MikaAir LIGHTNESS/F_BUS_Capability/runtime_bridge.mjs 7e7384638a41
../MikaAir LIGHTNESS/F_BUS_Capability/action_surface.mjs e5bae5f48648
../MikaAir LIGHTNESS/A_BUS_Action_Core/A2_State_Store/filesystem_store.mjs b1cc32d3f456
../MikaAir LIGHTNESS/F_BUS_Capability/F12_Notification/contract/index.mjs 4b8da78ff446
../MikaAir LIGHTNESS/F_BUS_Capability/F12_Notification/engine.mjs 02c7a119e29c