Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 58 additions & 0 deletions docs/openedx_learning/decisions/0007-pathway-credentials.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
.. _openedx-learning-adr-0007:

7. Pathway Credentials
======================

Status
------

Draft

Context
-------

Learners who complete a Pathway should receive a certificate, in the same way as the built-in Open edX course
certificates. Individual courses inside a Pathway keep their existing course certificates unchanged; this decision is
only about the Pathway-level credential.

Decisions
---------

1. **Earning rule.** A learner earns the Pathway certificate by fulfilling all Items in the Pathway. In the MVP that
means passing every course in the Pathway, where "passing" is dictated by each course's own grading policy. There
are no Pathway-level grades, thresholds, or enrollment modes.

2. **Automatic issuance via signals.** The Pathways app listens for the Django signals the platform already emits when
a learner's course passing status changes. On each relevant signal, it re-evaluates the learner's Item fulfillment
for any enrolled Pathways containing that course, and issues the certificate as soon as all Items are fulfilled.
No manual issuing step is required.

3. **Configuration in Django admin.** Pathway certificates are configured in the Django admin, not in Studio. A
certificate configuration can be created, previewed, edited, and deleted while inactive; it must be activated
before certificates are issued. Configuration includes the issuing organization and 1–4 signatories (name, title,
organization, signature image).

4. **Rendering.** An issued certificate is rendered as an HTML page (printable by the learner), analogous to course
certificates. W3C Verifiable Credentials / Open Badges will not be supported in the MVP.

5. **Issued certificates are records.** An issued certificate stores everything needed to display it later: recipient
name, Pathway name, issuer, signatories, the criteria met (the list of courses passed), and the date earned. It
remains valid and viewable even if the Pathway is later updated or archived.

6. **Events.** Issuing a certificate emits an event, so that instances can report on credentials (e.g. in Aspects).

.. Run `dot -Tsvg images/pathway-credentials.dot > images/pathway-credentials.svg` to regenerate the diagram after
making changes to `images/pathway-credentials.dot`.

.. image:: images/pathway-credentials.svg
:alt: Pathway certificate issuance flow
:width: 100%

Consequences
------------

- Because issuance uses the existing platform signals, no polling or batch jobs are needed for the typical flow.
- Since certificates are self-contained records, later edits to the Pathway or its certificate configuration never
alter what a learner already earned.
- Interaction-progress-based criteria, per-course credential rules, badges/microcredentials, and verifiable
credentials are all explicitly out of scope and can be layered on later without changing the basics of this design.
18 changes: 18 additions & 0 deletions docs/openedx_learning/decisions/images/pathway-credentials.dot
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
digraph pathway_credentials {
rankdir=LR;
fontname="Helvetica";
node [shape=box, style=rounded, fontname="Helvetica", fontsize=11];
edge [fontname="Helvetica", fontsize=10];

signal [label="course passing-status\nDjango signal", shape=ellipse];
handler [label="re-evaluate Item fulfillment\nfor learner's enrolled Pathways\ncontaining that course"];
decide [label="all Items\nfulfilled?", shape=diamond, style=""];
issue [label="issue certificate:\nstore self-contained record,\nemit event"];
render [label="HTML certificate\n(viewable, printable)"];

signal -> handler -> decide;
decide -> issue [label="yes"];
decide -> done [label="no"];
done [label="done", shape=plaintext];
issue -> render;
}
87 changes: 87 additions & 0 deletions docs/openedx_learning/decisions/images/pathway-credentials.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.