Skip to Content

Progress Monitoring

The progress monitoring engine (WP-PROG-MON) answers one question: is this bundle working for this student? It records non-CBM evidence, applies a stack of safety rules and per-bundle recipes, and emits a deterministic verdict, all without ever moving a tier, auto-failing a plan, or touching the student surface.

Progress monitoring handles comprehension, vocabulary, morphology, and other non-fluency evidence. Fluency (reading speed + accuracy) is handled separately; see CBM & ORF Fluency.

The five global safety rules (GSR-01..GSR-05)

Every monitoring decision passes through these rules in order. Any rule that fires halts further processing and returns do_not_decide_yet.

RuleDescription
GSR-01: Insufficient Evidence / Tie RuleIf evidence is insufficient or the signals tie, the verdict is do_not_decide_yet. The teacher is shown a quiet “need more data” hint (no red badge, no alert)
GSR-02: Acute RegressionA drop of ≥20% across 2 comparable sessions triggers an acute_regression_alert. This is an Immediate Review signal, never an auto-fail and never an auto-exit from the bundle
GSR-03: Benchmark Gap-ClosingBenchmark comparisons are valid only at review windows (BOY / MOY / EOY). Comparisons mid-window are rejected
GSR-04: Comparable Data GuardrailOnly evidence rows that share the same comparabilityKey (tool, context, conditions) are compared against each other
GSR-05: No Single-Point DecisionA single evidence record cannot alone determine a verdict. The engine requires a minimum window of comparable points

The 12 per-bundle PMR rules and 19 Intervention Success Criteria

On top of the GSR stack, the engine applies:

  • PMR-001..012: per-bundle monitoring recipes. Each recipe specifies which tools generate comparable evidence for that bundle, what the evidence-weight cap is for each tool, and when to re-evaluate.
  • ISC-001..019: per-bundle success criteria. One criterion row per bundle definition describes what “this bundle worked” looks like in measurable terms.

The engine is fail-closed on a missing recipe or criterion: a catalog defect raises an error rather than producing a silent default verdict.

The five verdict values

VerdictMeaning
positiveEvidence consistently supports the plan is working
partialSome evidence is positive but the picture is mixed
no_responseEvidence shows the plan is not producing a response
do_not_decide_yetInsufficient or tied evidence; wait for more data
acute_regression≥20% drop in 2 comparable sessions; Immediate Review required

Recording evidence

POST /api/monitoring/evidence accepts a non-CBM probe. Sending a CBM modality returns 422 cbm_scope_restricted. CBM evidence belongs to the CBM module.

The server runs a deterministic recompute on every evidence write. The sequence:

  1. Materialize an active monitoring_plan (lazily created on first evidence, pinning the PMR recipe and ISC criterion).
  2. Write the evidence row, keyed on (studentId, monitoringPlanId, measurementTool, occurredAt) for idempotency.
  3. Recompute the monitoring status and write an append-only monitoring_status_review row pinning every rule version used.

The first evidence write for a new plan triggers two recomputes: one before and one after the row is persisted. This is expected and deterministic.

Evidence tools

ToolScope
quick_checkShort in-session checks, vocabulary or morphology probes
rubricScored rubric observed by the teacher
teacher_observationStructured observation note (no free text; disposition is from a closed vocabulary)
worksheet_evidencePaper or digital worksheet scored by the teacher
digital_trendPlatform-generated trend from practice-session response data

Each tool has a weight cap. No single tool can dominate the decision past its configured percentage. The cap is enforced at the evidence-writer level before the recompute runs.

Acute-regression alert lifecycle

An acute_regression_alert moves through two states:

StatusDescription
openNewly created; blocks cluster membership for this student (SCS_03 / QA_004)
resolvedDismissed or escalated by the teacher via /api/workflow/review

Resolution requires a reason code from the 9-code OverrideCodeCatalog. A context flag may optionally accompany the dismissal but is recorded separately in context_flag_log, not on the alert row itself.

An acute-regression alert is never an auto-fail. The bundle assignment status is never mutated by the alert. Only the teacher can change plan status (V-12).

Determinism and versioning

Every monitoring_status_review row pins the version of every rule it read: the GSR snapshot, the PMR recipe, and the ISC criterion. A later change to the rule config does not re-run stored windows. This is V-6: same inputs + same version = identical output, forever.

API endpoints (3)

MethodPathPurpose
POST/api/monitoring/evidenceRecord a non-CBM probe → triggers deterministic recompute
GET/api/monitoring/status/{bundleAssignmentId}Active plan + latest verdict + comparable/excluded evidence partition
GET/api/monitoring/alerts?status=open&type=acute_regressionTeacher/admin acute-alert list

For full request/response shapes see the API Reference.

Last updated on