Lifetime and residency
A hidden widget should not continue doing visible work. Repeated views should not download the same Page repeatedly.
Mount, suspend, resume, release
The host intersects each occurrence with the viewport and its parent activity. A hidden parent suspends descendants. Closing releases descendants, listeners, observers and Page leases.
Active occurrences of the same Page share one snapshot, one in-flight read and one subscription. Resuming observation revalidates data. Invalidation during a read schedules one trailing read, preventing a missed update.
Access denial clears the shared snapshot and its readable presentation. A cached capability is never sufficient authorization for a server command.
Initial review budgets
- 48 mounted widget occurrences; maximum recursive depth 12.
- Latest 80 messages per snapshot; maximum serialized snapshot 512 KiB.
- Four warm, unleased Pages; 8 MiB warm-cache target.
- Active leased snapshots are not evicted to satisfy the warm target. DOM, media and GPU memory still require separate accounting.
Consumer and producer pools
The planned projectConsumerCache serves lightweight playback, thumbnails and low-latency browsing. The projectProducerCache retains authorized originals and editing resources. Both must deduplicate immutable identities and invalidate individual changed revisions.
Projects can retain more consumer resources than an ordinary chat, but device memory hints are only hints. The host must account for owned bytes, cancel work, release offscreen resources and degrade deliberately. Full memory-budget enforcement remains a later phase.