Sittings, Calendar and Order Paper
This document covers how the system implements Part VI (S.O. 26–40) of the National Assembly Standing Orders (7th Edition) — the calendar, sitting lifecycle, quorum, and the Order Paper.
1. Key Definitions (S.O. 2)
| Term | Standing Order definition | System model |
|---|---|---|
| Session | Sittings from first meeting after General Election to adjournment at end of calendar year or end of Parliament term | ParliamentSession record |
| Sitting | A continuous period in which the House sits without adjournment, including time in Committee | Sitting record |
| Sitting Day | Any day on which the Assembly sits | Sitting.scheduledStart date |
| Recess | Period during which the House stands adjourned to a day other than the next normal sitting day | ParliamentSession.status = RECESS |
| Order Paper | Paper showing business for the day, published and circulated by the Clerk | OrderPaper record linked to a Sitting |
2. Sitting Types (S.O. 27, 29)
The system supports three sitting types set via type on POST /api/v1/sittings:
| Type constant | Standing Order | When used |
|---|---|---|
REGULAR | S.O. 27 — regular sessions per the calendar | Standard House sittings per the weekly programme |
SPECIAL | S.O. 29 — during recess or when the House stands adjourned | Called by the Speaker; requires gazetteNoticeRef |
EMERGENCY | S.O. 29 (by extension) | Urgent extraordinary sittings |
S.O. 29 — Gazette Notice Enforcement
The service enforces this at creation time:
SO 29 – SPECIAL sittings must have a gazetteNoticeRef
BadRequestException thrown if type = SPECIAL and gazetteNoticeRef is missing
3. Sitting Lifecycle
A sitting moves through the following states:
SCHEDULED ──► IN_PROGRESS ──► ADJOURNED ──► IN_PROGRESS (resumed)
│ │
▼ ▼
CANCELLED COMPLETED
| Status | Meaning | Who triggers |
|---|---|---|
SCHEDULED | Sitting created, not yet started | Clerk (sitting:create) |
IN_PROGRESS | House called to order | Speaker / Deputy Speaker (sitting:start) |
ADJOURNED | House adjourned, can be resumed | Speaker / Deputy Speaker (sitting:adjourn) |
COMPLETED | Speaker rose the House — session permanently ended | Speaker / Deputy Speaker (sitting:complete) |
CANCELLED | Sitting cancelled before it started | Clerk or Admin (sitting:cancel) — only valid from SCHEDULED |
S.O. 31 — Adjournment is the Speaker's prerogative. Only the Speaker (or Deputy Speaker presiding) may adjourn or call the House to order. The system enforces this via
sitting:startandsitting:adjournpermissions restricted tospeakeranddeputy_speaker.
Resuming an Adjourned Sitting
POST /api/v1/sittings/:id/start also accepts ADJOURNED status, enabling the House to resume after a short recess within the same sitting day.
4. Pre-Sitting Readiness Checklist (S.O. 22, 29, 34, 38, 39)
Before the Speaker calls the House to order, GET /api/v1/sittings/:id/readiness returns a checklist of Standing Order requirements. The response shape:
{
"ready": true,
"checks": [
{ "rule": "SO 22 – Notice to Members", "passed": true, "detail": "..." },
{ "rule": "SO 29 – Gazette Notice (SPECIAL sittings)", "passed": true, "detail": "..." },
{ "rule": "SO 38 – Order Paper ≥ 12h before sitting", "passed": true, "detail": "..." },
{ "rule": "SO 38 – Supplementary Order Paper ≥ 1h before sitting", "passed": true, "detail": "..." },
{ "rule": "SO 39 – Weekly Programme", "passed": true, "detail": "..." },
{ "rule": "SO 34 – Quorum configured", "passed": true, "detail": "..." }
]
}
| Check | Standing Order | What is verified |
|---|---|---|
| Notice to Members | S.O. 22 | sitting.noticePublishedAt is set |
| Gazette Notice | S.O. 29 | gazetteNoticeRef present (SPECIAL sittings only) |
| Primary Order Paper ≥ 12 h | S.O. 38 | OrderPaper.publicationDate is at least 12 hours before scheduledStart |
| Supplementary Order Paper ≥ 1 h | S.O. 38 | Supplementary paper published ≥ 1 hour before sitting (if present) |
| Weekly Programme linked | S.O. 39 | weeklyProgramme linked and status = PUBLISHED |
| Quorum configured | S.O. 34 | sitting.quorumRequired is set |
ready: true only when all checks pass.
5. Attendance and Quorum (S.O. 34–37)
Check-In / Check-Out
Members self-register via:
POST /api/v1/sittings/:id/attendance/check-in— recordscheckedInAtPOST /api/v1/sittings/:id/attendance/check-out— recordscheckedOutAtGET /api/v1/sittings/:id/attendance— full attendance list
Quorum Check (S.O. 34)
GET /api/v1/sittings/:id/quorum returns:
{ "met": true, "count": 58, "required": 50 }
Quorum is calculated as the number of Members currently checked in (no checkedOutAt). The quorumRequired threshold is stored on the Sitting record.
S.O. 34 — A quorum of the House is fifty Members. S.O. 35 — If a quorum is not present after 30 minutes, the Speaker adjourns the House.
6. Order Paper (S.O. 38)
Creation and Publishing
| Action | Endpoint | Who |
|---|---|---|
| Create Order Paper | POST /api/v1/order-papers | Clerk |
| Publish Order Paper | POST /api/v1/order-papers/:id/publish | Clerk / Speaker |
When published, the service checks the lead-time and returns a timingWarning if the 12-hour rule is at risk:
{
"timingWarning": "Order Paper published only 10h before sitting — SO 38 requires ≥ 12h"
}
Supplementary Order Paper (S.O. 38)
A supplementary Order Paper (isSupplementary: true) must be published at least 1 hour before the sitting. The same endpoint handles both types; the isSupplementary flag controls which timing check applies.
Sequence of Business (S.O. 40)
The Order Paper follows the prescribed sequence. Each Agenda Item has a type aligned to S.O. 40:
| Order | AgendaItem.type | S.O. 40 |
|---|---|---|
| 1 | OATH | Administration of Oath (S.O. 40(a)) |
| 2 | COMMUNICATION | Communication from the Chair (S.O. 40(b)) |
| 3 | MESSAGE | Messages from Senate or President (S.O. 40(c)) |
| 4 | PETITION | Petitions (S.O. 40(d)) |
| 5 | PAPER | Papers laid on the Table (S.O. 40(e)) |
| 6 | NOTICE_OF_MOTION | Notices of Motion (S.O. 40(f)) |
| 7 | QUESTION | Questions (S.O. 40(g)) |
| 8 | STATEMENT | Statements (S.O. 40(g)) |
| 9 | MOTION | Motions (S.O. 40(h)) |
| 10 | BILL | Bills (S.O. 40(h)) |
| 11 | REPORT | Committee Reports |
| 12 | OTHER | Other business |
7. Weekly Programme (S.O. 39)
GET /api/v1/weekly-programmes and POST /api/v1/weekly-programmes manage the weekly programme published by the Clerk. A sitting can reference its weeklyProgrammeId. The readiness check confirms the programme is PUBLISHED before the sitting commences.
8. API Reference — Sittings
| Method | Endpoint | Permission | Description |
|---|---|---|---|
| POST | /api/v1/sittings | sitting:create | Schedule a sitting (Clerk) |
| GET | /api/v1/sittings | sitting:read | List sittings (paginated, filterable by status, type, sessionId, termId) |
| GET | /api/v1/sittings/:id | sitting:read | Get sitting details including agenda items |
| PATCH | /api/v1/sittings/:id | sitting:update | Update sitting details |
| POST | /api/v1/sittings/:id/start | sitting:start | Call House to order (Speaker) |
| POST | /api/v1/sittings/:id/adjourn | sitting:adjourn | Adjourn the House (Speaker) |
| POST | /api/v1/sittings/:id/complete | sitting:complete | Rise the House permanently (Speaker) |
| POST | /api/v1/sittings/:id/cancel | sitting:cancel | Cancel a SCHEDULED sitting (Clerk) |
| GET | /api/v1/sittings/:id/readiness | sitting:read | Pre-sitting SO compliance checklist |
| POST | /api/v1/sittings/:id/attendance/check-in | floor:request_speak | Member checks in |
| POST | /api/v1/sittings/:id/attendance/check-out | floor:request_speak | Member checks out |
| GET | /api/v1/sittings/:id/attendance | sitting:read | Full attendance list |
| GET | /api/v1/sittings/:id/quorum | sitting:read | Live quorum count |
| POST | /api/v1/order-papers | order_paper:create | Create Order Paper |
| POST | /api/v1/order-papers/:id/publish | order_paper:publish | Publish Order Paper |
9. Agenda Item Management
| Method | Endpoint | Permission | Description |
|---|---|---|---|
| GET | /api/v1/sittings/:id/agenda | sitting:read | List agenda items in order |
| POST | /api/v1/sittings/:id/agenda | sitting:update | Add agenda item |
| PATCH | /api/v1/sittings/agenda/:itemId | sitting:update | Update agenda item |
| DELETE | /api/v1/sittings/agenda/:itemId | sitting:update | Remove agenda item |
| POST | /api/v1/sittings/agenda/:itemId/start | sitting:update | Mark agenda item as IN_PROGRESS |
| POST | /api/v1/sittings/agenda/:itemId/complete | sitting:update | Mark agenda item as COMPLETED |
| POST | /api/v1/sittings/:id/agenda/reorder | sitting:update | Reorder agenda items |
10. Real-Time Events
The DashboardGateway broadcasts sitting lifecycle changes to all connected clients:
| Event type | Trigger |
|---|---|
SITTING_CREATED | New sitting scheduled |
SITTING_STARTED | Speaker calls House to order |
SITTING_ADJOURNED | House adjourned |
SITTING_COMPLETED | House rose |
SITTING_CANCELLED | Sitting cancelled |
ATTENDANCE_CHECKIN | Member checked in |
ATTENDANCE_CHECKOUT | Member checked out |
See Floor and Floor Handling for real-time floor events (floorUpdate, micOn, micOff).