Skip to content

Cadence

Compliance calendar and obligations

Tier: Motion · Requirement module: Compliance Calendar · Status: ✅ Prototyped (spine)

Purpose

Cadence knows who owes what, when. It materialises an obligation for every combination of licence, obligation rule, and reporting period (or once-off assignment), pins the return template version in force, computes the due date, and will drive reminders and late escalation.

An obligation is the spine of the platform. A submission exists to satisfy one; a review decides one; a breach is recorded against one.

Vocabulary (locked)

Term Meaning
obligation_rule Studio config: what must be done, how often, which licence category, which templates
obligation Runtime instance for a firm / licence / period (or once-off due date)
Cadence Engine BC that materialises and lists obligations — not a table named “schedule”

Do not introduce obligation_schedule as a third noun. Recurring vs once-off are two deliberate Studio menus over the same obligation_rule aggregate (rule_type).

Scope

Capability Status Notes
Recurring rules (Studio) ✅ One licence category + many return templates (one primary)
Once-off / ad-hoc rules (Studio) ✅ Category-wide or explicit firms; materialise on save
Materialise recurring periods ✅ Active licences × active recurring rules; current + previous period
Pin template + version on instance ✅ Effective-dated return_template_version at generation
Due-date from days after period end ✅ Recurring; once-off uses rule effective / due date
Reminder / notification fatigue ⬜ Tables exist (notification_rule, obligation_notification); engine later
Holiday calendar adjustment ⬜ Still designed; not yet applied in materialise
Extension requests ⬜ Firm requests, supervisor grants
Penalty calculation hooks ⬜ Recommendation for Docket only
Calendar export ⬜ iCal feed

Obligation rule shape

Configured under Studio → Obligations (two menus so the path is deliberate):

  • Recurring rules — rule_type = RECURRING, frequency MONTHLY | QUARTERLY | ANNUAL
  • Once-off rules — rule_type = ADHOC, frequency ONCE

Each rule links to:

  • One licence category (searchable) when targeting by category
  • Many return templates via obligation_rule_template (is_primary, sort_order)
  • Explicit firms only for once-off when applies_to = EXPLICIT_FIRMS
flowchart LR
  OR[obligation_rule]
  OR --> ORC[obligation_rule_category]
  OR --> ORT[obligation_rule_template]
  OR --> ORF[obligation_rule_firm]
  ORT --> RT[return_template]
  RT --> RTV[return_template_version]
  OR -->|materialise| O[obligation]

Due-date arithmetic

Stated explicitly because it is the figure most likely to be challenged.

period end               2026-06-30   (from the rule frequency and the period)
+ days after period end          15   (obligation_rule.days_after_period_end)
= due date               2026-07-15

(calendar adjustment and extensions — not yet applied in the spine)
overdue when            now > due date AND status still OPEN

Every step will be stored, not just the answer, once holiday calendars and extensions land.

Obligation states (spine today)

Implemented statuses: OPEN, OVERDUE, SUBMITTED, ACCEPTED, WAIVED.

OPEN ──► OVERDUE
  │
  └──► SUBMITTED ──► ACCEPTED
         │
         └──► (resubmission path later)

Full forecast / escalation graph remains the design target; the spine materialises OPEN / OVERDUE only.

Owns

  • Obligation instances and their states
  • Materialisation from recurring and once-off rules
  • Pinned template / template version on each instance
  • Notification rule and delivery log schema (engine later)

Does not own

  • Obligation rule definitions — Licensing / Studio config (obligation_rule)
  • Licence categories and firm licences — Registry + Licensing config
  • Return template content — Licensing / Return Studio spine (return_template)
  • Submissions — Strata
  • Penalties — Cadence recommends, Docket decides

Open questions

  • Event-driven returns. R08 STR logs and R29 change notifications have no period and no due date; they are triggered by an event at the firm. Once-off rules cover deliberate supervisor assignments; true event-driven obligations may need a further kind.
  • Retrospective calendar changes. A public holiday gazetted after obligations were materialised must shift due dates already computed. Policy must be labelled before enabling.