Skip to content

data(tier): the aged-rollup half of tier_rollup is dark both directions — never built, never read (#1242 residual, found by the #1651 sweep) #1706

Description

@OrangePeachPink

Found by the #1651 retroactive sweep (the producer-closed-COMPLETE-without-consumer class). This is the class in its purest form: a producer whose only consumer is its own test.

The finding, verified at the artifact

tools/analytics/tier_rollup.py (shipped by #1242, closed complete in v0.8.0) exposes two halves:

The events half is alive: read_events is imported by tools/analytics/multiplant_history.py:63 — consumed in production. ✓

The aged-rollup half is fully dark, both directions:

  • Never built — repo-wide grep: no justfile recipe, no CI workflow, no hook invokes build_rollups or the module's main(). The rollup parquet is not being produced on any cadence.
  • Never readread_envelope, pick_tier, and trajectory_series have zero production importers. The only file exercising them is test_tier_rollup.py.
  • The intended consumer denies it landedtools/analytics/dashboard.py:115 still reads "…the rollup tier lands" (future tense). The consumer's own comment says the producer it was waiting for never arrived — while the producer's issue closed complete.

Why it stayed invisible

Every layer answers its own question correctly: the module's tests pass, read_events works, #1242's ACs were about the code existing and behaving. Nobody's question was "does anything build or read the aged tiers?" — the #1651 defect class exactly ("closing COMPLETED without saying so").

What this issue is

A decision, then possibly work — not automatically a build ticket:

  1. Wire it — long-span dashboard/history reads go through read_envelope/pick_tier (the original ADR-0031 intent), and a recipe/hook builds rollups on the compaction cadence; or
  2. Park it honestly — per the arch(process): a producer closed COMPLETED with no consumer — profiles[], bench_events.py, and 30 unread instructions #1651 DoD clause: named consumer, named milestone ("awaiting consumer: dashboard long-span reads, v0.9.x"); or
  3. Retire it — if the recent full-fidelity tier + events cover real usage, delete the dead half rather than carry it (ADR-0031 amendment).

Related: #1696 (the tier-visibility surface) is where this darkness would have been visible to the operator — this finding is that page's justification restated as a defect. #1466 is the sibling (dark store on the root deployment).

Milestone deliberately unset — placement is the maintainer's call (scope addition vs 0.9.x).

— Workflow ⚙️ (filing, from the #1651 sweep)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:analyticsRETIRED 2026-07-21 (ADR-0003 §5) — vestigial; kept for closed-issue historyfor:dataFirst-approximate routing — Data lane (host logger, analytics, dashboard)type:fixA bug fix — restoring expected behavior.

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions