Skip to content

Unify product-aware renderability and completeness semantics #187

Description

@danielway

Problem

Cached, available, and complete currently mean different things across the cache, Micro timeline, Macro/calendar coverage, live projection, acquisition dedup, and canvas resolver. For example, an empty cached_products list is shown as cached by the timeline but rejected by rendering. Scan completeness counts sweep rows against VCP cuts without requiring unique elevations, chunk coverage, or the selected product.

Relevant code: src/data/keys.rs:276-335, src/core/timeline_view.rs:423-473, and src/core/playback_manager.rs:283-345.

Scope

  • Define a capability/readiness model at (scan, elevation, product) granularity.
  • Represent unknown, known absent, durable complete, durable partial, active partial, source-available, projected, failed, and invalidated states explicitly.
  • Reserve Cached for an exact product blob that the resolver can request.
  • Separate source/archive availability from local cache presence.
  • Derive scan/3D coverage from unique planned cuts plus per-product coverage; do not overload it as frame renderability.
  • Carry product-aware semantics through live projection and all timeline tiers.
  • Define migration behavior for legacy entries with unknown product lists.

Acceptance criteria

  • Every timeline state has a documented render/acquisition behavior and all consumers interpret it identically.
  • A cell shown as Cached resolves to an exact product identity in the same inventory revision.
  • Missing-product scans are not shown as cached coverage for that selected product.
  • Legacy unknown products are represented as unknown or migrated, never simultaneously cached and unrenderable.
  • Whole-volume acquisition is not suppressed by one partial cut or duplicate rows.
  • 3D frames expose partial product/elevation coverage instead of presenting any one-cut scan as a complete volume.
  • Pure tests cover archived full scans, product-filtered archive data, prior streamed cuts, active partials, legacy entries, and partial volumes across Micro, Macro, and Archive tiers.

Parent: #185. Depends on unique/idempotent cache inventory and durable completion evidence.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    Status
    Ready

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions