---
title: "Progress Monitoring"
url: https://docs.growamal.com/en/guides/progress-monitoring/
language: en
---

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

> **Note:** Progress monitoring handles comprehension, vocabulary, morphology, and other non-fluency evidence.
> Fluency (reading speed + accuracy) is handled separately; see [CBM & ORF Fluency](https://docs.growamal.com/en/guides/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`.

| Rule | Description |
|---|---|
| **GSR-01: Insufficient Evidence / Tie Rule** | If 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 Regression** | A 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-Closing** | Benchmark comparisons are valid only at review windows (BOY / MOY / EOY). Comparisons mid-window are rejected |
| **GSR-04: Comparable Data Guardrail** | Only evidence rows that share the same `comparabilityKey` (tool, context, conditions) are compared against each other |
| **GSR-05: No Single-Point Decision** | A 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

| Verdict | Meaning |
|---|---|
| `positive` | Evidence consistently supports the plan is working |
| `partial` | Some evidence is positive but the picture is mixed |
| `no_response` | Evidence shows the plan is not producing a response |
| `do_not_decide_yet` | Insufficient 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

| Tool | Scope |
|---|---|
| `quick_check` | Short in-session checks, vocabulary or morphology probes |
| `rubric` | Scored rubric observed by the teacher |
| `teacher_observation` | Structured observation note (no free text; disposition is from a closed vocabulary) |
| `worksheet_evidence` | Paper or digital worksheet scored by the teacher |
| `digital_trend` | Platform-generated trend from practice-session response data |
| `listening_quick_check` | Short listening-comprehension check, analogous to `quick_check` but for listening skills |
| `comprehension_quick_check` | Comprehension-specific short check |
| `mixed_evidence` | Composite evidence from multiple tool types combined in one review cycle |

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:

| Status | Description |
|---|---|
| `open` | Newly created; blocks cluster membership for this student (SCS\_03 / QA\_004) |
| `resolved` | Dismissed 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.

> **Warning:** 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)

| Method | Path | Purpose |
|---|---|---|
| `POST` | `/api/monitoring/evidence` | Record 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_regression` | Teacher/admin acute-alert list |

For full request/response shapes see the [API Reference](https://docs.growamal.com/en/api-reference/).

## Related guides

- [CBM & ORF Fluency](https://docs.growamal.com/en/guides/cbm-orf-fluency/): fluency/accuracy monitoring (separate module)
- [Intervention Bundles](https://docs.growamal.com/en/guides/intervention-bundles/): PMR recipes and ISC criteria are keyed to bundles
- [Teacher Activation Workflow](https://docs.growamal.com/en/guides/teacher-activation/): the surface where teachers resolve acute-regression alerts
- [Safety Rules](https://docs.growamal.com/en/how-it-works/safety/): the GSR rules in the broader context of the platform's safety model
