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).