Skip to main content

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:

valuelabelmeaning
ARCHIVEDArquivadono sanction / dropped
WARNINGAdvertênciareprimand
SUSPENSIONSuspensãosuspension
TERMINATIONDespedimentodismissal
OTHEROutroother

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 / a CHECK — 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_version hardcoded to 1 — 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).