Sanctions, and the instructor's end-of-inquiry proposal
Disciplinary outcomes (sanctions)
The terminal outcome of a case (cases.outcome, CHECK-constrained) maps to the sanctions
of the Portuguese Código do Trabalho, labelled in OUTCOME_LABELS:
| value | label | meaning |
|---|---|---|
ARCHIVED | Arquivado | no sanction / dropped |
WARNING | Advertência | reprimand |
SUSPENSION | Suspensão | suspension |
TERMINATION | Despedimento | dismissal |
OTHER | Outro | other |
These print on the dossier cover ("Resultado / Sanção"). Confirm the list against the CT's full sanction ladder (e.g. repreensão registada, loss of holiday days, fines) — the five-value set may be a simplification.
Instructor's proposal at end of inquiry
At the close of the Inquérito Prévio, InquiryReportDrawer forces the instructor to record
a proposal, stored in case_phase_deliverables.metadata.instructor_proposal:
PROCEED_DISCIPLINARY— "Prosseguir para Nota de Culpa" (facts sufficiently indicated to formalise the accusation)ARCHIVE_PROCESS— "Arquivar o processo" (insufficient grounds)
Validation refuses to approve the report without a proposal. This is the pivotal legal decision point that determines whether the process continues or ends.
Danger / gotchas
- Sanction and proposal enums are magic strings stored in JSONB
metadata/ aCHECK— not shared with the frontend as a typed contract (string vocabularies). - The formal legal documents (relatório, nota de culpa, ata) are produced by template
string-concatenation with
[placeholders],report_versionhardcoded to1— no real versioning or cited template provenance.
Rebuild implication
Model sanctions and the instructor proposal as typed, shared enums; give legal document
templates real provenance and versioning; and separate the instructor's proposal from the
decider's decision (the decision_approval gate).