A well-tracked drift is punished with a widening window #53
Labels
No Label
P0
P1
P2
release-blocker
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: null/Privacy-Period-Tracker#53
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
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?
Measured by the learning-curve simulation at
93ec5b7.What is true now. For a user whose cycle lengthens steadily (+0.5 days per cycle), the engine follows the drift well — mean error stays 0.9-1.6 days across fifteen cycles — but its windows widen from ~3.0 to ~5.6 days and its Low-confidence share climbs from 2.5% to 35%. Accuracy holds while stated confidence falls.
Why.
scaleOfmeasures each interval's deviation from a single static centre. Under a real trend those deviations grow with the length of the history no matter how well the trend is being followed, so the engine reads its own successful tracking as spread.What to do. Measure residuals from the trend line rather than the centre, gated on the trend actually firing: have
centreOfreturn the damped trend alongside the centre (a private holder), derive a per-cycle slope from the two half-mediansdampedTrendalready computes, and inscaleOfcompare each interval against the line rather than the constant.Traps. Gate it on the existing spread-relative floor test so
trendPerCycleis zero unless a real trend fires — the computation then reduces bit-identically to today's for every non-drifting history, which is what protects the §51 fixtures (the variable fixture never fires the trend: its shift of 3 sits under its floor of ~3.8). Keep one code path, not a parallel one. The damping lag stays covered by the scored-error term, which is the honest empirical floor. If EngineComparisonTest's shortening-drift row goes red (boundary case: error 1 against a +/-1 window), add a minimum scale that applies when the trend fires — following a trend is still an extrapolation.Verify:
LearningCurveTest's drifting-profile assertions at k>=10 — Low share <= 0.15 and mean window <= 4.8 (both red before: 35% and 5.6), with mean error unchanged and EngineComparisonTest still won by the personal engine.