Skip to content

Pyramid/overview generation sweep (second pass): overview zarrs, MOC regen, optional interop materializationΒ #201

Description

@espg

πŸ€– from Claude

Design record: docs/design/sparse_coverage.md Β§7 (D11/D12), tracked on #198. discuss β€” the write-time layout (#199) is settled; this second-pass process has genuinely open design questions.

Settled framing (from the design discussion)

  • Overview generation is a separate post-process sweep, never write-time β€” it aggregates across worker-shard boundaries, so shard workers can't produce it anyway.
  • Overview zarrs live at ancestor nodes of the hive tree, explicitly marked (role: overview + source order + aggregation method in attrs). Never inferred from position: a shallow zarr may equally be coarse source in a sparse region.
  • Full pyramid storage cost is geometric ~1/3 extra (4 children per order).
  • The sweep is idempotent and non-load-bearing: it can fail or lag without corrupting anything. It also owns MOC regeneration and any optional derived interop artifacts (e.g. a zarr.open-able root hierarchy or consolidated index β€” the D12 escape hatch, generated as a cache, never required).

To discuss

  1. Aggregation semantics per field: mean/count compose trivially up-tree; t-digests merge natively; which fields degrade (e.g. located/ragged CSR fields β€” summarize, subsample, or omit at overview orders?).
  2. Level schedule: every order up to base? Sparse levels (e.g. every 2–3 orders)? Declared in morton_hive.json's pyramid section β€” who writes that declaration, template time or sweep time?
  3. Orchestration: same Lambda fan-out machinery over ancestor cells (bottom-up levels, each level reading the one below), or a coarser local/batch job? Reuses the leaves-to-root construction argument from docs/design/architecture.md.
  4. Trigger: manual CLI, end-of-run hook from the dispatcher, or scheduled?
  5. Walker/read interplay: display readers may stop at an overview; analysis readers must not conflate it with source β€” is the role attr enough, or does the manifest also enumerate overview orders for zero-open filtering?

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions