zebflow 0.10.6

Reactive web automation platform — pipelines, templates, and real-time collaboration in a single binary.
Documentation
# Storage

Zebflow separates source, data, files, runtime state, and temporary work. Each
kind has a different lifetime and backup rule.

## Project Storage

- `repo/` is project source and Git work.
- `data/` is durable project data and runtime owned state.
- `files/` is the ZebFS object root when the project keeps its files on disk
  (`spec.files.backend: zebfs`, the default). A project declaring `s3` keeps
  them in a bucket instead, reached through the credential named in
  `data/store/files-backend.json`; `files/` is then scratch, not the store.
- temporary paths exist only for one bounded operation.

## Interfaces

`src/infra/io/` defines replaceable cache, catalog, object, runtime data, and
state interfaces. `src/zebfs/` defines the project file object model and its
two backends -- `local.rs` (a directory) and `s3.rs` (an S3-compatible bucket,
Signature Version 4 over a blocking client, no SDK) -- behind one `ZebFs` enum
opened at `backend::open`. Platform adapters create the physical project layout
and resolve which backend a project declared.

## Rules

- A durable file or record needs one named owner.
- A temporary file must not be required after restart.
- A FileRef describes a file and must not be mistaken for file bytes.
- Public access is policy metadata, not a path naming trick.
- Backups must use a consistent database or store checkpoint.
- A remote object backend should support range or stream access where the data
  engine can use it.
- Storage code must prevent parent path and symlink escape.

## Related Source

- `src/zebfs/`
- `src/infra/io/`
- `src/infra/storage/`
- `src/platform/adapters/file/`
- `src/platform/adapters/project_data/`
- `src/platform/services/project_transfer.rs`
- `src/pipeline/nodes/shared/file_ref.rs`
- `src/pipeline/nodes/basic/fs/object.rs`