F4_Forms_Mail / Forms / Mail
入力をreceiptとして保存し、送信内容を隠さず確認できる器官。
form intake がspam/rate境界を通り、宛先・件名・目的・本文抜粋を見せたmail planになる。
入力 → 状態 → 出力
- 入力validated JSON payload
- 状態engine-owned durable slice
- 承認必要な外部 / 不可逆操作だけ
- 出力result / receipt / explicit error
- 回復送信失敗はreceipt/send logに残り、同じidempotency keyで重複送信せず再試行できる。
保存状態はAction Coreのfilesystem state store内の capabilities sliceとして再起動可能なplain dataで保持される。functionや秘密値をstateへ保存しない。
全Action
以下はAction Registryに実在するF4_Forms_Mailの全actionである。クリックでpayload境界、状態、出力、回復を開ける。
capability.forms.bindBind forms and maillocal or validated transition
- payload
provider- 状態
- unbound → configured / ready
- result
- Capability engine の
okresult、または明示的な validation / provider error。plan・receipt・stateは持続sliceへ返る。 - recovery
- error codeと状態を残し、必要に応じて再計画・再承認・retryへ戻る。
capability.forms.intakeForm intakelocal or validated transition
- payload
fields- 状態
- state transition defined by the capability engine
- result
- Capability engine の
okresult、または明示的な validation / provider error。plan・receipt・stateは持続sliceへ返る。 - recovery
- error codeと状態を残し、必要に応じて再計画・再承認・retryへ戻る。
capability.forms.mail.planPlan outbound maillocal or validated transition
- payload
receiptIdtosubjectbodypurpose- 状態
- state transition defined by the capability engine
- result
- Capability engine の
okresult、または明示的な validation / provider error。plan・receipt・stateは持続sliceへ返る。 - recovery
- error codeと状態を残し、必要に応じて再計画・再承認・retryへ戻る。
capability.forms.mail.armArm outbound maillocal or validated transition
- payload
mailPlanId- 状態
- state transition defined by the capability engine
- result
- Capability engine の
okresult、または明示的な validation / provider error。plan・receipt・stateは持続sliceへ返る。 - recovery
- error codeと状態を残し、必要に応じて再計画・再承認・retryへ戻る。
capability.forms.mail.executeExecute outbound maillocal or validated transition
- payload
mailPlanId- 状態
- state transition defined by the capability engine
- result
- Capability engine の
okresult、または明示的な validation / provider error。plan・receipt・stateは持続sliceへ返る。 - recovery
- error codeと状態を残し、必要に応じて再計画・再承認・retryへ戻る。
Capability Spec
F4 Forms / Mail — Capability Spec
Provider-independent form intake and mail capability with validation, spam/rate boundaries, durable receipt state, visible recipient/content/purpose preview, and Resend-compatible binding (send disabled until binding + explicit approval).
Form Receipt States
| State | Meaning |
|---|---|
received | Raw intake recorded. |
validated | Passed validation and boundaries. |
rejected | Validation or rate failure. |
spam | Spam boundary triggered. |
queued | Validated and linked to mail plan. |
Mail States
| State | Meaning |
|---|---|
draft | Local mail intent. |
planned | Mail plan recorded. |
approval_required | Awaiting human approval; preview visible. |
sending | Provider send in flight. |
sent | Durable send receipt. |
failed | Send failure preserved for retry. |
Actions
| Action | Flow |
|---|---|
bind | Configure Resend binding; sending remains disabled |
intake | Validate fields, spam/rate check → durable receipt |
mail_plan | Create mail plan with recipient/subject/purpose preview |
mail_arm | Explicit human approval; enables send gate |
mail_execute | Armed → provider mock send; idempotent retry |
Boundaries
- No hidden recipient or content: preview includes recipient, subject, purpose, body excerpt
- No background send: plan → approval → execute only
- Failures preserved in receipt/send_log for retry without duplicate send (idempotency key)
- No address/content hidden from operator preview
Environment Names (values never in repo)
| Name | Role |
|---|---|
RESEND_API_KEY | Provider API key |
MIKAAIR_MAIL_FROM | From address env reference |
MIKAAIR_MAIL_RATE_LIMIT_PER_HOUR | Rate boundary |
MIKAAIR_FORMS_SPAM_KEYWORDS | Comma-separated spam keywords |
Provider Binding
Reference adapter: Resend contract mock at binding/adapter_contract.mjs. Sending disabled until binding and explicit approval.
binding / secret boundary
provider設定はbinding templateから参照する。環境変数は名前だけを扱い、値はsource repository・画面・reportに書かない。
| 環境変数名 | 扱い |
|---|---|
RESEND_API_KEY | secret reference — 値は表示・保存しない |
MIKAAIR_MAIL_FROM | configuration reference — 値は表示・保存しない |
MIKAAIR_MAIL_RATE_LIMIT_PER_HOUR | configuration reference — 値は表示・保存しない |
MIKAAIR_FORMS_SPAM_KEYWORDS | configuration reference — 値は表示・保存しない |
送信失敗はreceipt/send logに残り、同じidempotency keyで重複送信せず再試行できる。
source trace
../MikaAir LIGHTNESS/F_BUS_Capability/F4_Forms_Mail/spec/capability_spec.md e7afcc2d8884../MikaAir LIGHTNESS/F_BUS_Capability/F4_Forms_Mail/binding/binding_manifest.template.json 322683946d00../MikaAir LIGHTNESS/F_BUS_Capability/F4_Forms_Mail/agent.md 2f5540ae59d3../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/F4_Forms_Mail/contract/index.mjs 2db24ad5c62e../MikaAir LIGHTNESS/F_BUS_Capability/F4_Forms_Mail/engine.mjs 2e4a559c449d