Grading Engine — DepEd Order 8 & MATATAG
Grading (school/grades) is where teachers encode marks and the school head
releases them. Under the hood is a small, config-driven grade engine that runs both
Philippine grading policies — DepEd Order 8, s.2015 and MATATAG DepEd Order 010,
s.2024 — from the same code, because the weights and transmutation rules are stored as
data, not baked into the program. This page explains the class record, how a grade is
computed, and the release governance that decides when a grade becomes visible.
The class record
Everything in grading revolves around one unit: a class record, which is a combination of section + subject + term. You pick all three; the page loads that section's enrolled roster for the current school year, together with the grading scheme and weights that apply to that subject at that grade level.
The class list — its enrolled learners for the current school year become the roster you grade.
Its subject group decides which DO8 weight bucket applies (Languages, Science/Math, MAPEH, …).
The grading period — a quarter (DO8) or a trimester (MATATAG elementary).
For each learner you encode three percentage scores, all on a 0–100 scale:
Saving the class record hands those three scores to the engine, which applies the resolved
weights and transmutation rule and stores each learner's weighted scores, initial
grade, and final quarterly grade. A class record is editable only while its
status is draft — once it moves down the release pipeline it locks (see
Release governance below).
Two policies, one engine
The Philippines is mid-transition between two assessment policies, so ERPat School runs both side by side. Which one a class uses is decided by the grading scheme resolved for that subject group, grade level, and school year — not by a global switch.
| Aspect | DepEd Order 8, s.2015 | MATATAG — DepEd Order 010, s.2024 |
|---|---|---|
| Components | Written Work · Performance Task · Quarterly Assessment | Written Work · Performance Task · Quarterly Assessment |
| Weights | Vary by subject group (see the example table below) | Uniform 25 / 50 / 25 (WW / PT / QA) across subjects |
| Grading period | Quarter (four per year) | Elementary on a trimester; phased in by grade and school year |
| Transmutation | Transmutation table (initial grade → final grade) | Floor-60 linear: final = 60 + 0.40 × initial |
| Floor / cap | Lowest grade 60; capped at 100 | Lowest grade 60; capped at 100 |
| Rollout | The established policy | Newer policy, phased in by grade level and school year |
The default policy for a fresh install is set by the school_default_grading_policy
setting (do8_2015 or matatag_do10_2024) on the
School Settings page, but the grade a learner actually
gets is always driven by the specific scheme matched to their subject and grade — see
the Schemes reference tab on the Grades page for the full list.
DO8 example weights by subject group
Under DepEd Order 8, the WW / PT / QA weights differ by subject group. These are the well-known DO8 buckets, seeded as reference data:
| Subject group | Written Work | Performance Task | Quarterly Assessment |
|---|---|---|---|
| Languages · Araling Panlipunan (AP) · Edukasyon sa Pagpapakatao (EsP) | 30% | 50% | 20% |
| Science · Mathematics | 40% | 40% | 20% |
| MAPEH · EPP · TLE | 20% | 60% | 20% |
School_grade_engine)
never hardcodes a percentage. It is handed the resolved scheme's weights,
transmutation rule, and floor, and does the arithmetic. The numbers above are the
seeded DO8 buckets shown on the Academic Structure Reference tab and the
Grades Schemes tab — they are data your school can maintain, which is exactly why
the same engine can also run MATATAG's uniform 25 / 50 / 25 without a code change.
How a grade is computed
For each learner, the engine turns the three percentage scores into a single whole-number grade in five short steps:
-
Start with the three percentage scores
Written Work, Performance Task, and Quarterly Assessment, each 0–100.
-
Weight each score
Multiply each percentage score by its component weight (e.g. WW × 0.40). This gives three weighted scores.
-
Add them into the initial grade
Sum the three weighted scores. The total is the initial grade (a raw number before transmutation).
-
Transmute to the final grade
Apply the scheme's transmutation rule — the DO8 transmutation table, or MATATAG's final = 60 + 0.40 × initial — to map the initial grade to the final quarterly grade.
-
Round, floor, and cap
DepEd grades are whole numbers: the result is rounded, floored at 60 (never lower), and capped at 100.
A worked example
A Grade 8 Mathematics class (a Science / Math subject group under DO8, so weights are 40 / 40 / 20). A learner scores WW = 80, PT = 85, QA = 90:
| Step | Calculation | Result |
|---|---|---|
| Weight Written Work | 80 × 0.40 | 32.0 |
| Weight Performance Task | 85 × 0.40 | 34.0 |
| Weight Quarterly Assessment | 90 × 0.20 | 18.0 |
| Initial grade (sum of weighted) | 32.0 + 34.0 + 18.0 | 84.0 |
| Transmute (DO8 table) | initial 84 → final | 90 |
| Descriptor | final grade 90 | Outstanding |
The learner's quarterly grade for that subject is 90 (Outstanding). The same three scores under a different subject group — or under MATATAG — would weight differently and transmute differently, which is the whole point of keeping the scheme in configuration.
Descriptors & passing
Every final grade carries a DepEd descriptor, and the passing mark is 75. These are fixed by policy:
| Final grade | Descriptor | Passing? |
|---|---|---|
| 90 – 100 | Outstanding | Pass |
| 85 – 89 | Very Satisfactory | Pass |
| 80 – 84 | Satisfactory | Pass |
| 75 – 79 | Fairly Satisfactory | Pass |
| Below 75 | Did Not Meet Expectations | Fail |
These descriptors also print per subject on the SF9-style report card, and the passing threshold of 75 is what drives a card's Promoted or Retained remark.
Release governance
A grade is not visible the moment a teacher types it. It travels a short, ordered approval pipeline, and there is no skipping stages. Each transition is recorded in the grade-approvals history with the person, the time, and optional remarks.
school_grade_releaseschool_grade_approve- Draft → Submitted
- The encoder submits the class record for release. Requires
school_grade_release. Grades stay hidden from families. - Submitted → Approved
- The school head approves the submitted grades. Requires
school_grade_approve. - Approved → Released
- The head releases. This locks the grades, is audited (
release_grades, critical severity), and is the moment the grades become visible to report cards and the portals. Also requiresschool_grade_approve.
school_grade_release) and approving/releasing
(school_grade_approve) are different permissions held by different people.
A teacher submits; a principal or school head approves and releases. This is enforced in the
workflow, not left to policy — it protects the integrity of every mark that reaches a family.
See the Teacher and
Principal playbooks for each side of the hand-off.
The Schemes reference tab
The Grades page includes a read-only Schemes tab so you can see exactly which policy and weights govern each subject. Each row lists:
| Column | Meaning |
|---|---|
| Name | The scheme's label. |
| Policy | DO8 s.2015 or MATATAG DO10 s.2024. |
| Subject group | The subject group it applies to, or uniform (all subjects, MATATAG-style). |
| Period type | Quarter or trimester. |
| Weights | The WW / PT / QA split, e.g. WW 40% / PT 40% / QA 20%. |
| Passing grade | The passing threshold (75). |
Common issues
- “This class record is locked”
- The class is no longer
draft— it has been submitted, approved, or released, so scores can't be edited. Grades are editable only while draft. If a correction is genuinely needed after submission, that is a governance decision for the head, not an edit. - “No scheme” when you try to save
- No grading scheme is configured for that combination of grade level, subject group, and school year, so the engine has no weights to apply. An administrator adds/enables the scheme (see the Schemes tab and Administration) before grades can be encoded for that class.
- “Pick a section, subject, and term”
- All three parts of the class record are required before the roster and scheme can load.
- I can submit but not approve (or vice-versa)
- By design — you hold one side of the segregated permissions. The other stage belongs to a different person. This is the segregation of duties, working as intended.
Related pages
How released grades aggregate into an SF9-style card with a general average and remark.
Encoding scores and submitting a class for release — the teacher's side.
Approving and releasing grades — the school head's side and the audit view.
Setting the default policy and understanding schemes as configuration.