Journey: Storage
Stage 3d of the guided journey. Configure storage buckets/ACLs from the plan.
When to use
- Dispatched by
journeywhencurrent_stage: storage. - Directly via
/butterbase-skills:journey-storage. - Skipped (annotated
(n/a)) if the plan has no Storage section.
Preflight
If docs/butterbase/03-preflight.md is missing, older than 24 hours, or 00-state.md has app_id: null, invoke butterbase-skills:journey-preflight first. Wait for it to return successfully before proceeding.
Inputs
docs/butterbase/02-plan.md— the Storage section.docs/butterbase/00-state.md— forapp_id.
Procedure
Refresh docs. Call
butterbase_docswithtopic: "storage". For presigned URL patterns, also WebFetchhttps://docs.butterbase.ai/storage. Skip if cache is fresh.Read the Storage section of
02-plan.md. Print it back:"About to configure storage: <buckets>. Proceed?". Wait foryes.Invoke
butterbase-skills:storagevia the Skill tool, passing the Storage plan andapp_id. The wrapped skill callsmanage_storage action: update_configper bucket (visibility, max object size).Smoke: request an upload URL via
manage_storage action: upload_urland a matchingdownload_urlto confirm presigned URL minting works.Append one line to
docs/butterbase/04-build-log.md:<ISO timestamp> storage manage_storage okTick
- [x] storagein00-state.md, setcurrent_stage:to the next unchecked stage.Return to
journeyorchestrator (or ask"Continue to the next stage? (yes/no)").
Outputs
- Configured storage buckets.
- One line in
04-build-log.md.
Anti-patterns
- ❌ Persisting
s3_keyin app data — always persistobject_id. The wrapped skill handles this; do not override it.