Cloud Academy instructor-console guide: the published ACTIVE LEARNERS definition has never matched the implementation
- Dominant language
- JavaScript
- Stars
- 99
- Forks
- 223
- Avg merge
- 1d 1h
- Merged PRs (30d)
- 17
Description
## The published definition has never matched any implementation
**File:** `content/en/cloud/academy/creating-content/instructor-console-guide/index.md`
(the *"What Defines an 'Active Learner'?"* alert, and the bullet at line 59)
**What it currently tells instructors:**
> the tile "counts the number of registrations that are currently in the `Registered` status"
**This has never been true.** No implementation of the ACTIVE LEARNERS card has ever counted
registrations by status. An instructor comparing the tile against the Learners tab will conclude the
product is broken, when it is the documentation that is wrong.
## The correct definition
As implemented on `layer5io/meshery-cloud` master in
`server/dao/academy_active_learners.go` (landed by
[meshery-cloud#5889](https://github.com/layer5io/meshery-cloud/pull/5889)):
> An **active learner** in an organization is a learner who, against academy content that is still
> live, either
> **(a)** created or touched a registration during the current calendar month, **or**
> **(b)** submitted a quiz attempt during the current calendar month.
Points worth carrying into the prose, because each one is a question instructors actually ask:
- **It is a calendar month in UTC, not a rolling 30 days.** The count resets on the 1st, so a low
number early in the month is expected and is not a defect.
- **(b) is not redundant with (a).** A learner who registered in an earlier month and sits a quiz
this month is active this month, even though their registration row does not move. In production
this contributed learners that (a) alone missed in *every* month sampled across 2026-01..2026-08
(January 41 → 50, February 35 → 42).
- **Status is irrelevant.** A registration's `Registered` / `Completed` status does not enter the
count at all.
- **Soft-deleted registrations, curricula and users are excluded.**
- At the "All Organizations" scope the card aggregates across every organization, matching the
Total Learners card beside it.
## Which repo owns the fix
**This one - `layer5io/docs`.** The behaviour is correct as implemented; only the published prose is
wrong, so nothing needs to change in `layer5io/meshery-cloud`.
The engineering-side reference, if a writer wants the fuller picture, is
`docs/reference/academy-instructor-console-metrics.md` in `layer5io/meshery-cloud`, which records
which source each console widget reads and why this metric is derived from academy tables rather
than from the organization `create_session` event stream.
## How it surfaced
Found while diagnosing an unrelated ACTIVE LEARNERS accuracy report
([meshery-cloud#5881](https://github.com/layer5io/meshery-cloud/pull/5881)). Flagged there rather
than fixed, because the correction belongs in this repository.
Contributor guide
Research direction
Open content/en/cloud/academy/creating-content/instructor-console-guide/index.md and locate the “What Defines an ‘Active Learner’?” alert and the bullet at line 59. Read the linked meshery-cloud implementation and its academy-instructor-console-metrics.md reference for context, then update the guide so its definition and instructor-facing notes match the documented behavior. Done means the published prose no longer describes status-based counting and answers the listed scope and date questions.
Written by the indexing model from the issue text.
Assessment
- Domain
- documentation
- Issue type
- Documentation
- Difficulty
- 1/5
- Estimated time
- Under an hour
- Activity status
- Active
- Clarity
- Clearly specified
- Newbie friendliness
- 92/100