Skip to main content

Module analytics

Module analytics 

Source
Expand description

Burndown and scope analytics (mission burndown-scope-analytics-01M3C9J1).

A pure projection over what the tree already records: the append-only History, issue frontmatter, cycle/milestone planning and snapshots, and the shared status categories (C-001). Nothing here opens a store, reads a clock, writes an issue, or introduces a second cycle/status model — an analytics value is derived on read and persisted nowhere (except the local chart document WP04 exports, which is output rather than state).

§What is recorded, and what is therefore reportable

The classification in events maps recorded events only. A day with no recorded history is unknown/coverage-limited, never zero by assumption (C-005), and a scope change that was never logged is never reconstructed — the mission’s non-goal. Two of the four classes needed a producer rather than a guess, and WP01 added them at the seam tix edit --parent already appends to (crate::model::HistoryEventKind::EstimateChanged and crate::model::HistoryEventKind::CycleMembershipChanged), so scope_addition and estimate_change fold something recorded instead of staying permanently unproducible.

§Ownership of this root

This file is WP01’s and is frozen after it: all six children are declared here, and each later work package fills in its own child rather than declaring one (T045). Without that split this single file would be owned by three lanes at once — the same shape crate::capacity and crate::time_tracking use for their own children.

events carries the scope, the period, the closed classification vocabulary, the provenance-bearing event value and the idempotency index; it is the vocabulary every later child consumes. series, diagnostics, units, projection and chart are declared here as compile-clean stubs and are filled in by WP02 (daily series, coverage, diagnostics), WP03 (unit conversion, end-date projection) and WP04 (deterministic chart export).

§The boundary of the record

A class is only as wide as the recorded evidence. The values tix edit --estimate/--cycles/--parent write carry an event, so they are visible to the classification; a path that writes a field without appending — the bulk patch service writes through Store::update — leaves no event and therefore cannot appear in estimate_change or scope_addition. A surface reports that as an explicit coverage marker, never by reading the current frontmatter back into the past.

Re-exports§

pub use events::AnalyticsEvent;
pub use events::AnalyticsScope;
pub use events::Contribution;
pub use events::EventClass;
pub use events::EventIndex;
pub use events::EventSource;
pub use events::Period;
pub use events::ScopeKind;
pub use events::cycle_scope;
pub use events::milestone_scope;

Modules§

chart
The deterministic local chart document (mission burndown-scope-analytics-01M3C9J1, WP04 T019–T023).
diagnostics
The shared analytics findings (mission burndown-scope-analytics-01M3C9J1, WP02 T010).
events
Recorded-event classification and the idempotency/provenance index (mission burndown-scope-analytics-01M3C9J1, WP01 T001–T006).
projection
The read-only planning-end projection (mission burndown-scope-analytics-01M3C9J1, WP03 T016/T017).
series
The daily count-mode series, its coverage markers and its one-pass snapshot (mission burndown-scope-analytics-01M3C9J1, WP02 T007–T012).
units
Estimate mode: the shared unit conversion, and the series estimate mode folds (mission burndown-scope-analytics-01M3C9J1, WP03 T013–T015).