UCT
← Back to the explorer's documentation page
· source: resolutions/README.md
Adjudication register
One CSV per faculty (com.csv … hum.csv — all six exist) holding
per-case adjudications of handbook print errors and ambiguities.
Commerce's is the only seeded register so far (44 provisional entries);
EBE/LAW/FHS passes are queued in DEV-TODO.md, and SCI/HUM are empty by
design (major-years carry no_anchor — nothing to adjudicate per year). Consumed by
build_final_dataset.py (rule R3, which pre-empts all auto-rules). The
as-printed tables are never touched — every adjudication is applied only in
the final-clean layer, with the original values retained alongside.
Adding an entry
- Confirm the discrepancy against the PDF (the
source_pagecolumn in the as-printed tables points at the page). - Append a row (columns below).
res_idmust be unique and stable (<FAC>-<year>-<seq>, e.g.COM-2025-008); one row per (year, plan_code, study_year) — a case recurring across editions gets one row per year, sharing the rationale. - Re-run
python build_final_dataset.py --year <year>(or the batch runner).validation/validate_final.pyfails if a register row goes unconsumed (typo'd plan code / year), so mistakes surface immediately.
Columns
| Column | Values / meaning |
|---|---|
res_id |
COM-2025-001 — stable, referenced by resolution_ref in outputs |
year, faculty, plan_code, study_year |
which specialisation-year |
scope |
spec_year (default), row, published_fee |
row_selector |
course_code (or seq) when scope=row |
issue |
stated_misprint, unlabelled_choice_menu, or_double_count, missing_block, fee_label_mismatch, other |
action |
accept_computed, accept_stated, set_stated_corrected, set_final_credits, pin_choice, include_row, exclude_row, set_final_fee, set_published_ref |
value |
number for set_* actions; ;-separated course codes for pin_choice |
rationale |
the argued justification, in full sentences |
evidence |
PDF page refs, cross-edition comparisons, arithmetic |
decided_by, decided_date |
provenance of the judgment |
decided_by="provisional (Claude), pending review" marks machine-proposed
adjudications awaiting human sign-off; amend the row (and decided_by) when
reviewed.