@vue-skuilder/db 0.2.11 → 0.2.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/index.d.cts +3 -3
- package/dist/core/index.d.ts +3 -3
- package/dist/core/index.js +22 -17
- package/dist/core/index.js.map +1 -1
- package/dist/core/index.mjs +22 -17
- package/dist/core/index.mjs.map +1 -1
- package/dist/impl/couch/index.js +22 -17
- package/dist/impl/couch/index.js.map +1 -1
- package/dist/impl/couch/index.mjs +22 -17
- package/dist/impl/couch/index.mjs.map +1 -1
- package/dist/impl/static/index.js +22 -17
- package/dist/impl/static/index.js.map +1 -1
- package/dist/impl/static/index.mjs +22 -17
- package/dist/impl/static/index.mjs.map +1 -1
- package/dist/index.d.cts +13 -1
- package/dist/index.d.ts +13 -1
- package/dist/index.js +34 -25
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +33 -25
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -3
- package/src/core/navigators/SrsDebugger.ts +8 -7
- package/src/core/navigators/generators/srs.ts +40 -28
- package/src/study/SessionController.ts +5 -1
- package/src/study/SessionDebugger.ts +16 -8
- package/src/study/SessionOverlay.ts +17 -23
|
@@ -2568,7 +2568,7 @@ var srs_exports = {};
|
|
|
2568
2568
|
__export(srs_exports, {
|
|
2569
2569
|
default: () => SRSNavigator
|
|
2570
2570
|
});
|
|
2571
|
-
var import_moment3, DEFAULT_HEALTHY_BACKLOG,
|
|
2571
|
+
var import_moment3, DEFAULT_HEALTHY_BACKLOG, BACKLOG_GROWTH_RATE, SRSNavigator;
|
|
2572
2572
|
var init_srs = __esm({
|
|
2573
2573
|
"src/core/navigators/generators/srs.ts"() {
|
|
2574
2574
|
"use strict";
|
|
@@ -2577,7 +2577,7 @@ var init_srs = __esm({
|
|
|
2577
2577
|
init_SrsDebugger();
|
|
2578
2578
|
init_logger();
|
|
2579
2579
|
DEFAULT_HEALTHY_BACKLOG = 20;
|
|
2580
|
-
|
|
2580
|
+
BACKLOG_GROWTH_RATE = 2;
|
|
2581
2581
|
SRSNavigator = class extends ContentNavigator {
|
|
2582
2582
|
/** Human-readable name for CardGenerator interface */
|
|
2583
2583
|
name;
|
|
@@ -2699,7 +2699,7 @@ var init_srs = __esm({
|
|
|
2699
2699
|
dueNow: dueReviews.length,
|
|
2700
2700
|
healthyBacklog: this.healthyBacklog,
|
|
2701
2701
|
backlogMultiplier,
|
|
2702
|
-
|
|
2702
|
+
backlogGrowthRate: BACKLOG_GROWTH_RATE,
|
|
2703
2703
|
topReviewScore: sorted.length > 0 ? sorted[0].score : null,
|
|
2704
2704
|
nextDueIn,
|
|
2705
2705
|
timestamp: Date.now()
|
|
@@ -2709,25 +2709,30 @@ var init_srs = __esm({
|
|
|
2709
2709
|
/**
|
|
2710
2710
|
* Compute the multiplicative backlog pressure based on number of due reviews.
|
|
2711
2711
|
*
|
|
2712
|
-
* ×1.0 at or below the healthy threshold (no boost),
|
|
2713
|
-
*
|
|
2712
|
+
* ×1.0 at or below the healthy threshold (no boost); above it, grows as
|
|
2713
|
+
* BACKLOG_GROWTH_RATE raised to the excess expressed in multiples of the
|
|
2714
|
+
* healthy threshold. Uncapped — self-regulating instead: reviews winning
|
|
2715
|
+
* slots depletes dueCount, which drops the ratio and relaxes the multiplier
|
|
2716
|
+
* next run.
|
|
2714
2717
|
*
|
|
2715
|
-
* Examples (with default healthyBacklog=20,
|
|
2716
|
-
* - 10 due reviews → ×1.00
|
|
2717
|
-
* - 20 due reviews → ×1.00
|
|
2718
|
-
* - 40 due reviews → ×1.50
|
|
2719
|
-
* - 60 due reviews → ×2.
|
|
2718
|
+
* Examples (with default healthyBacklog=20, BACKLOG_GROWTH_RATE=1.5):
|
|
2719
|
+
* - 10 due reviews → ×1.00 (healthy)
|
|
2720
|
+
* - 20 due reviews → ×1.00 (at threshold, ratio 0)
|
|
2721
|
+
* - 40 due reviews → ×1.50 (ratio 1, 2x threshold)
|
|
2722
|
+
* - 60 due reviews → ×2.25 (ratio 2, 3x threshold — old hard cap was ×2.00 here)
|
|
2723
|
+
* - 100 due reviews → ×5.06 (ratio 4, 5x threshold)
|
|
2724
|
+
* - 160 due reviews → ×17.09 (ratio 7, 8x threshold)
|
|
2720
2725
|
*
|
|
2721
2726
|
* @param dueCount - Number of reviews currently due
|
|
2722
|
-
* @returns Multiplier applied to review urgency (1.0
|
|
2727
|
+
* @returns Multiplier applied to review urgency (>= 1.0, unbounded)
|
|
2723
2728
|
*/
|
|
2724
2729
|
computeBacklogMultiplier(dueCount) {
|
|
2725
2730
|
if (dueCount <= this.healthyBacklog) {
|
|
2726
2731
|
return 1;
|
|
2727
2732
|
}
|
|
2728
2733
|
const excess = dueCount - this.healthyBacklog;
|
|
2729
|
-
const
|
|
2730
|
-
return Math.
|
|
2734
|
+
const ratio = excess / this.healthyBacklog;
|
|
2735
|
+
return Math.pow(BACKLOG_GROWTH_RATE, ratio);
|
|
2731
2736
|
}
|
|
2732
2737
|
/**
|
|
2733
2738
|
* Compute urgency score for a review card.
|
|
@@ -2743,17 +2748,17 @@ var init_srs = __esm({
|
|
|
2743
2748
|
* - 180 days → ~0.30
|
|
2744
2749
|
*
|
|
2745
2750
|
* 3. Backlog pressure = global *multiplier* when review backlog exceeds the
|
|
2746
|
-
* healthy threshold (×1.0 healthy →
|
|
2751
|
+
* healthy threshold (×1.0 healthy → exponential growth, uncapped, above it).
|
|
2747
2752
|
*
|
|
2748
2753
|
* Combined: (base 0.5 + urgency factors * 0.45) × backlog multiplier.
|
|
2749
2754
|
* Per-card range before pressure: ~0.57–0.95. NOT clamped to 1.0 — under a
|
|
2750
2755
|
* heavy backlog reviews scale onto the open scale to compete with (and exceed)
|
|
2751
|
-
* new cards;
|
|
2752
|
-
*
|
|
2756
|
+
* new cards; there's no ceiling at all now, so a bad enough backlog always
|
|
2757
|
+
* wins eventually — self-regulating because winning slots depletes dueCount.
|
|
2753
2758
|
*
|
|
2754
2759
|
* @param review - The scheduled card to score
|
|
2755
2760
|
* @param now - Current time
|
|
2756
|
-
* @param backlogMultiplier - Pre-computed backlog multiplier (1.0
|
|
2761
|
+
* @param backlogMultiplier - Pre-computed backlog multiplier (>= 1.0, unbounded)
|
|
2757
2762
|
*/
|
|
2758
2763
|
computeUrgencyScore(review, now, backlogMultiplier) {
|
|
2759
2764
|
const scheduledAt = import_moment3.default.utc(review.scheduledAt);
|