F2_Database / Database
行単位の所有権を通して、読取と不可逆な書換を分ける器官。
subjectが自分のtable行だけを query し、値の変更は plan → arm → execute と進める。
入力 → 状態 → 出力
- 入力validated JSON payload
- 状態engine-owned durable slice
- 承認必要な外部 / 不可逆操作だけ
- 出力result / receipt / explicit error
- 回復未armed planは実行されず、idempotency key が重複実行を止める。失敗は error code を保持する。
保存状態はAction Coreのfilesystem state store内の capabilities sliceとして再起動可能なplain dataで保持される。functionや秘密値をstateへ保存しない。
全Action
以下はAction Registryに実在するF2_Databaseの全actionである。クリックでpayload境界、状態、出力、回復を開ける。
capability.db.bindBind databaselocal or validated transition
- payload
provider- 状態
- unbound → configured / ready
- result
- Capability engine の
okresult、または明示的な validation / provider error。plan・receipt・stateは持続sliceへ返る。 - recovery
- error codeと状態を残し、必要に応じて再計画・再承認・retryへ戻る。
capability.db.queryDatabase querylocal or validated transition
- payload
table- 状態
- state transition defined by the capability engine
- result
- Capability engine の
okresult、または明示的な validation / provider error。plan・receipt・stateは持続sliceへ返る。 - recovery
- error codeと状態を残し、必要に応じて再計画・再承認・retryへ戻る。
capability.db.plan_mutationPlan database mutationreversible preparation
- payload
tablevalues- 状態
- durable plan → approval_required
- result
- Capability engine の
okresult、または明示的な validation / provider error。plan・receipt・stateは持続sliceへ返る。 - recovery
- error codeと状態を残し、必要に応じて再計画・再承認・retryへ戻る。
capability.db.arm_mutationArm database mutationreversible preparation
- payload
planId- 状態
- approval_required → armed
- result
- Capability engine の
okresult、または明示的な validation / provider error。plan・receipt・stateは持続sliceへ返る。 - recovery
- error codeと状態を残し、必要に応じて再計画・再承認・retryへ戻る。
capability.db.execute_mutationExecute database mutationapproval boundary / external effect
- payload
planId- 状態
- armed → visible provider/result state
- result
- Capability engine の
okresult、または明示的な validation / provider error。plan・receipt・stateは持続sliceへ返る。 - recovery
- 実行前にarm状態を要求する。失敗はengineが保持し、同一keyは重複実行を防ぐ。
capability.db.plan_migrationPlan database migrationreversible preparation
- payload
versionsteps- 状態
- durable plan → approval_required
- result
- Capability engine の
okresult、または明示的な validation / provider error。plan・receipt・stateは持続sliceへ返る。 - recovery
- error codeと状態を残し、必要に応じて再計画・再承認・retryへ戻る。
capability.db.arm_migrationArm database migrationreversible preparation
- payload
planId- 状態
- approval_required → armed
- result
- Capability engine の
okresult、または明示的な validation / provider error。plan・receipt・stateは持続sliceへ返る。 - recovery
- error codeと状態を残し、必要に応じて再計画・再承認・retryへ戻る。
capability.db.execute_migrationExecute database migrationapproval boundary / external effect
- payload
planId- 状態
- armed → visible provider/result state
- result
- Capability engine の
okresult、または明示的な validation / provider error。plan・receipt・stateは持続sliceへ返る。 - recovery
- 実行前にarm状態を要求する。失敗はengineが保持し、同一keyは重複実行を防ぐ。
capability.spec.saveSave spec bindinglocal or validated transition
- payload
keyvalue- 状態
- state transition defined by the capability engine
- result
- Capability engine の
okresult、または明示的な validation / provider error。plan・receipt・stateは持続sliceへ返る。 - recovery
- error codeと状態を残し、必要に応じて再計画・再承認・retryへ戻る。
Capability Spec
F2 Database — Capability Spec
Provider-independent database capability with explicit connection states, read/query path, plan→arm→execute mutation and migration flows, transaction idempotency, and row-level authorization.
States
| State | Meaning |
|---|---|
disconnected | No binding configured. |
ready | Bound; reads and plans allowed. |
reading | Query/read in flight. |
writing | Approved mutation executing. |
migrating | Approved migration executing. |
error | Recoverable failure; binding may remain. |
Actions
| Action | Flow |
|---|---|
bind | Configure provider binding from env names only → ready |
query | ready → reading → ready with row-level authorization |
plan_mutation | Create durable mutation plan → approval_required |
arm_mutation | Human approval → armed |
execute_mutation | armed → writing → ready; idempotent by key |
plan_migration | Create migration plan → approval_required |
arm_migration | Human approval → armed |
execute_migration | armed → migrating → ready; idempotent by key |
Row-Level Authorization
- Env name:
MIKAAIR_DB_ROW_POLICY_JSON - JSON array of
{ table, owner_field, operations[] } - Subject identity must match
owner_fieldon existing rows - Inserts require authenticated subject; no cross-owner writes
Error Contract
Codes: not_bound, config_missing, invalid_query, authorization_denied, plan_not_found, plan_not_armed, idempotency_conflict, mutation_failed, migration_failed, provider_error.
Environment Names (values never in repo)
| Name | Role |
|---|---|
SUPABASE_URL | Provider API base |
SUPABASE_PUBLISHABLE_KEY | Client-safe key |
SUPABASE_SECRET_KEY | Server-only elevated key |
MIKAAIR_DATABASE_URL | Connection string reference |
MIKAAIR_DB_ROW_POLICY_JSON | Row-level policy manifest |
Provider Binding
Reference adapter: Supabase contract mock at binding/adapter_contract.mjs. No remote writes or secret echo.
binding / secret boundary
provider設定はbinding templateから参照する。環境変数は名前だけを扱い、値はsource repository・画面・reportに書かない。
| 環境変数名 | 扱い |
|---|---|
SUPABASE_URL | configuration reference — 値は表示・保存しない |
SUPABASE_PUBLISHABLE_KEY | configuration reference — 値は表示・保存しない |
SUPABASE_SECRET_KEY | secret reference — 値は表示・保存しない |
MIKAAIR_DATABASE_URL | secret reference — 値は表示・保存しない |
MIKAAIR_DB_ROW_POLICY_JSON | configuration reference — 値は表示・保存しない |
未armed planは実行されず、idempotency key が重複実行を止める。失敗は error code を保持する。
source trace
../MikaAir LIGHTNESS/F_BUS_Capability/F2_Database/spec/capability_spec.md ba90403e7e3f../MikaAir LIGHTNESS/F_BUS_Capability/F2_Database/binding/binding_manifest.template.json fbdd1546e8d5../MikaAir LIGHTNESS/F_BUS_Capability/F2_Database/agent.md da187f3f3ac2../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/F2_Database/contract/index.mjs ebcae2225d8d../MikaAir LIGHTNESS/F_BUS_Capability/F2_Database/engine.mjs 4241ba50d565