docs(storage): explain online reports and offline cleanup
Describe who owns the report and when local diagnosis applies. Reported paths never authorize local deletion.
71 unmodified lines727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171188 unmodified lines71 unmodified lines
[Daemon attachment and local startup](daemon-lifecycle.md) describes the startuppolicy, authentication, and operator overrides.
## Storage reports and offline diagnosis
`albedo storage` attaches to an existing daemon and calls `GetStorageReport`.The authenticated `GET /storage/report` route requires the `storage_report`capability. The daemon inspects its own database and files; online clients needneither Python nor access to that installation's storage files.
When discovery proves the daemon absent or its record stale, reporting usesread-only local inspection automatically. Authentication, protocol, health, andtransport failures remain errors. `albedo storage --offline` explicitly selectslocal diagnosis, including when a daemon is running or unreachable. Reportingnever launches or restarts a daemon.
Offline inspection requires Python only when a database exists. It recognizeslayouts from before pinned context and cell traces, optional image and celltables, and earlier TEXT image storage without migrating them. Layout recognitionuses the columns needed for accounting, rather than a new schema version marker.Missing storage produces an empty database report without creating files;unsupported required columns produce an error rather than an incompletesuccessful report.
The offline inspector reads a temporary copy of the database and any WAL.SQLite may create a private SHM file there, leaving the installation untouched.If storage changes during copying, diagnosis fails and asks you to retry whenthe daemon is quiet. The temporary copy needs space for the database and WAL.
Session sizes estimate selected stored content: pinned context, transcripts,cell source and payloads, and cell traces. Shared images are counted separately,once each. These estimates retain SQLite's existing length arithmetic and donot describe allocated disk space per session. Database size measures the mainfile; the `wal` field includes both WAL and SHM. Database measurements arecollected together, while file sizes reflect the filesystem during inspection.
Old orphan state files and recognized migration backups become cleanupcandidates after 30 days. A report does not authorize deleting them. Localcleanup takes the existing exclusive ownership lock and rechecks locallyapproved candidates before mutation. Paths returned by the daemon neverauthorize local deletion. Session deletion uses the daemon's report and API.
## Adding a client operation
Add the named operation and its request and response types to the adapter first.Put route encoding, required capabilities, accepted statuses, response checks,8 unmodified lines