MikaAir LIGHTNESSCapability Book
目次を開く

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

F5_Storage_Upload / Storage / Upload

objectの選択、検査、保存、削除を所有権と承認で分ける器官。

選択したfile metadataをtype/size/hash/malwareで検証し、presigned intentのpreviewを承認して保存する。

入力 → 状態 → 出力

線形テキスト代替: 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. 回復quarantineはfinalizeを止める。削除はuploadと別の承認連鎖で、失敗はretry対象として残る。
9 registered actionsnone dependenciessupabase_storage / r2 binding reference

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

全Action

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

capability.storage.bindBind storagelocal 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.storage.selectSelect uploadlocal or validated transition
payload
ownerId objectKey mimeType content sizeBytes
状態
state transition defined by the capability engine
result
Capability engine の ok result、または明示的な validation / provider error。plan・receipt・stateは持続sliceへ返る。
recovery
error codeと状態を残し、必要に応じて再計画・再承認・retryへ戻る。
capability.storage.validateValidate uploadlocal or validated transition
payload
uploadId subjectId
状態
state transition defined by the capability engine
result
Capability engine の ok result、または明示的な validation / provider error。plan・receipt・stateは持続sliceへ返る。
recovery
error codeと状態を残し、必要に応じて再計画・再承認・retryへ戻る。
capability.storage.plan_uploadPlan uploadreversible preparation
payload
uploadId
状態
durable plan → approval_required
result
Capability engine の ok result、または明示的な validation / provider error。plan・receipt・stateは持続sliceへ返る。
recovery
error codeと状態を残し、必要に応じて再計画・再承認・retryへ戻る。
capability.storage.arm_uploadArm uploadreversible preparation
payload
uploadPlanId
状態
approval_required → armed
result
Capability engine の ok result、または明示的な validation / provider error。plan・receipt・stateは持続sliceへ返る。
recovery
error codeと状態を残し、必要に応じて再計画・再承認・retryへ戻る。
capability.storage.execute_uploadExecute uploadapproval boundary / external effect
payload
uploadPlanId
状態
armed → visible provider/result state
result
Capability engine の ok result、または明示的な validation / provider error。plan・receipt・stateは持続sliceへ返る。
recovery
実行前にarm状態を要求する。失敗はengineが保持し、同一keyは重複実行を防ぐ。
capability.storage.plan_deletionPlan deletionreversible preparation
payload
uploadId
状態
durable plan → approval_required
result
Capability engine の ok result、または明示的な validation / provider error。plan・receipt・stateは持続sliceへ返る。
recovery
error codeと状態を残し、必要に応じて再計画・再承認・retryへ戻る。
capability.storage.arm_deletionArm deletionreversible preparation
payload
deletionPlanId
状態
approval_required → armed
result
Capability engine の ok result、または明示的な validation / provider error。plan・receipt・stateは持続sliceへ返る。
recovery
error codeと状態を残し、必要に応じて再計画・再承認・retryへ戻る。
capability.storage.execute_deletionExecute deletionapproval boundary / external effect
payload
deletionPlanId
状態
armed → visible provider/result state
result
Capability engine の ok result、または明示的な validation / provider error。plan・receipt・stateは持続sliceへ返る。
recovery
実行前にarm状態を要求する。失敗はengineが保持し、同一keyは重複実行を防ぐ。

Capability Spec

F5 Storage / Upload — Capability Spec

Provider-independent object upload lifecycle with size/type/hash validation, presigned intent contracts, malware quarantine, ownership authorization, idempotent finalize, and separate deletion approval. Supabase Storage and R2 binding contracts (mock only).

Upload States

StateMeaning
selectedFile metadata chosen locally.
validatedSize, type, hash, malware scan passed.
plannedUpload plan recorded.
approval_requiredAwaiting human approval before finalize.
uploadingProvider finalize in flight.
storedDurable object receipt.
failedUpload failure preserved for retry.
deletedObject removed after separate deletion approval.

Malware States

StateMeaning
cleanNo signature match.
quarantinedSignature matched; upload blocked.
rejectedOperator rejected quarantined object.

Actions

ActionFlow
bindConfigure Supabase Storage or R2 binding
selectRecord file metadata (selected)
validateSize/type/hash/malware + ownership check
plan_uploadCreate presigned intent + upload plan with preview
arm_uploadExplicit human approval
execute_uploadArmed → provider mock finalize; idempotent
plan_deletionSeparate deletion plan with preview
arm_deletionExplicit deletion approval
execute_deletionArmed → provider mock delete

Boundaries

  • No live upload: plan → approval → execute only
  • Deletion requires separate approval chain
  • Malware/quarantine blocks upload finalize
  • Ownership enforced before validate and execute
  • Idempotency key prevents duplicate finalize/delete

Environment Names (values never in repo)

NameRole
SUPABASE_URLSupabase project URL reference
SUPABASE_STORAGE_BUCKETBucket name
MIKAAIR_STORAGE_MAX_BYTESMax upload size
MIKAAIR_STORAGE_ALLOWED_TYPESComma-separated MIME allowlist
MIKAAIR_STORAGE_MALWARE_SIGNATURESComma-separated mock signatures
R2_BUCKET_NAMECloudflare R2 bucket
R2_ACCOUNT_IDR2 account reference

Provider Binding

Reference adapters: binding/adapter_contract.mjs (Supabase Storage + R2 mocks). No network I/O.

binding / secret boundary

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

環境変数名扱い
SUPABASE_URLconfiguration reference — 値は表示・保存しない
SUPABASE_STORAGE_BUCKETconfiguration reference — 値は表示・保存しない
MIKAAIR_STORAGE_MAX_BYTESconfiguration reference — 値は表示・保存しない
MIKAAIR_STORAGE_ALLOWED_TYPESconfiguration reference — 値は表示・保存しない
MIKAAIR_STORAGE_MALWARE_SIGNATURESconfiguration reference — 値は表示・保存しない
R2_BUCKET_NAMEconfiguration reference — 値は表示・保存しない
R2_ACCOUNT_IDconfiguration reference — 値は表示・保存しない

quarantineはfinalizeを止める。削除はuploadと別の承認連鎖で、失敗はretry対象として残る。

source trace

../MikaAir LIGHTNESS/F_BUS_Capability/F5_Storage_Upload/spec/capability_spec.md 0376821188c5
../MikaAir LIGHTNESS/F_BUS_Capability/F5_Storage_Upload/binding/binding_manifest.template.json f136635d5c06
../MikaAir LIGHTNESS/F_BUS_Capability/F5_Storage_Upload/agent.md c34a891fc52a
../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/F5_Storage_Upload/contract/index.mjs a140a1d71870
../MikaAir LIGHTNESS/F_BUS_Capability/F5_Storage_Upload/engine.mjs f270767c9da2