Weekly Review Analytics & Career Floor Evaluation #30
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Implement the weekly review analytics engine (
POST /v1/reviewsandlife review --period week), computing evidence-based metrics with explicit numerator, denominator, and unknown coverage breakdown, evaluating weekday career floor attainment based strictly on recorded qualifying outcome facts (never calendar allocations), tracking task deferral frequency, and generating advisory review flags without mutating calendar objects or task commitments.Background & Technical Rationale
Productivity software often presents misleading analytics:
Life implements a rigorous, mathematically honest analytics model:
qualifies_career_floor: trueor qualifying outcome on anarea-careertask) logged for that weekday. Allocating a calendar block is NOT attainment.unknown_count, rather than being conflated with zero activity. Zero strictly means observed absence under the stated definition.life_events). If actual duration was omitted in the report, it is tracked as unknown rather than guessed.Exact Technical References & Specifications
1. Workflows Specification (
docs/technical/workflows.md)Section:
## Lifecycle and review(line 37):Section:
## Personal policy defaults(lines 44, 48, 50):Section:
## Weekly analytics(lines 52–56):2. CLI and API Route & Payloads (
docs/technical/cli-api.md)Section:
## Command-to-route table(line 45):Section:
## Command payloads and results(lines 92, 104):Section:
## Error identifiers(line 127):3. Verification Scenario W12 (
docs/technical/verification.md)Section:
## Workflow scenarios(line 26):What to build
1. Week Interval Resolver (
src/domain/analytics/interval.rs)anchor_dateis supplied (e.g.2026-09-23), compute the Monday–Monday interval containing that date.2. Career Floor Attainment Metric Calculator (
src/domain/analytics/career_floor.rs)docs/technical/workflows.md:54):unknown_countand record underunknown_days. Missing outcome observation is NEVER punished as a failure.work_block_outcomefacts for that date (applying folded timeline corrections from #029, perdocs/technical/timeline-consistency.md:164):after_json.qualifies_career_floor == true.area-careercategory membership alone or scheduled attendance; qualification requires explicit user assertionqualifies_career_floor: trueor an evaluated deterministic rubric (docs/technical/workflows.md:44).numeratorand incrementdenominator.denominator.3. Focus Duration vs Actual Effort Calculator (
src/domain/analytics/duration.rs)\sum \text{planned\_minutes}.work_block_outcomefacts in the week interval (folding correction chains from #029):actual_minutesis not null: add to\sum \text{actual\_minutes}.actual_minutesis null: incrementunknown_count.4. Deferral Frequency & Policy Flag Engine (
src/domain/analytics/deferrals.rs)life_eventsfor task update events representing deferrals (e.g. movingplanned_startor updating strength).uid:\ge 2times since its last review, generate an advisory flag:5. Axum Handler & CLI Interface (
src/api/reviews.rs,src/cli/review.rs)POST /v1/reviews:life review --period week [--anchor-date YYYY-MM-DD] [--json]Acceptance Criteria
qualifies_career_floor: true), rejecting scheduled blocks without outcome reports (verifying Scenario W12).unknown_countand are NOT treated as failure days (Scenario W12,docs/technical/workflows.md:54).\ge 2times generate an advisory flag with codepolicy_review_requiredand evidence event IDs, prompting review options rather than automatic rescheduling (Scenario W10).name,numerator,denominator,unknown_count, andcoverage(Scenario W12).\ge 2times generate an advisory flag with codepolicy_review_requiredand evidence event IDs.life review --period weekperforms ZERO writes to Radicale CalDAV and ZERO updates to task lifecycle statuses.Notes
{name, numerator, denominator, unknown_count, coverage}shape plus its own observation interval, view, attribution and unit — no consumer has to special-case a metric.0/5vs0/0) and ahistory_incompletewarning naming the unobserved days.CareerFloor::from_day_outcomes; deferrals reuse #25's review prompt; the advisory flag isreview_flag.v1and degrades withjudgment_unavailablewhile deterministic metrics stay put.syncin three suites and the skill's command reference was updated in the same commit.Blocked by
Issue #030: Weekly Review Analytics & Career Floor Evaluationto Weekly Review Analytics & Career Floor Evaluation