Disclosure: DROZlegal publishes this guide and builds the criminal-case tracking, Jordan s.11(b) clock, and disclosure workspace described below. This article is general information about Ontario criminal procedure, not legal advice, and does not create a solicitor-client relationship; it reflects Ontario and Canadian law, including a Supreme Court of Canada decision released this year, as of August 24, 2026.
What "AI criminal defence software" actually needs to track
Most of what search turns up for "criminal law practice management software" is a general case-management suite with a criminal-law tab bolted on — custom fields for charge type, a shared calendar, a document folder. Useful, but it skips the two things that actually define a criminal file: a hard constitutional deadline, and a Crown disclosure package that keeps growing after the file opens.
Real support for a criminal matter does three narrower jobs well. It tracks the charges and court appearances on the record. It computes the s.11(b) ceiling clock deterministically, the same way every time. And it organizes Crown disclosure by category as it lands, instead of leaving that to memory. None of that is legal judgment — all of it is information a lawyer would otherwise reconstruct by hand.
In fiscal 2022-23, 56% of Ontario criminal cases ended with charges withdrawn, stayed, dismissed, or discharged before a trial decision — a 14-percentage-point increase since 2013-14, with pandemic backlogs, resource shortages, and rising volumes of digital evidence all cited as contributing factors. Source: CBC News, reporting on Ontario court data, November–December 2024.
That's exactly why the tracking problem keeps getting harder: more digital disclosure per file, less room for the Jordan clock to run before a stay becomes the live risk.
The Jordan s.11(b) ceiling clock — a deadline it computes, not a decision it makes
Under R. v. Jordan, a criminal charge is presumed to have taken too long once net delay passes 18 months in provincial court or 30 months in superior court, measured from charge to the end of trial. The Supreme Court reaffirmed both ceilings on May 29, 2026, in a pair of companion decisions — R. v. Vrbanic, 2026 SCC 19, and R. v. Jacques-Taylor, 2026 SCC 20 — while also widening two of the paths the Crown can use to justify delay beyond the ceiling: case complexity, and delay caused by co-accused scheduling conflicts.
The ceiling number didn't move. What counts as an exceptional circumstance around it did. Source: Supreme Court of Canada, R. v. Vrbanic and R. v. Jacques-Taylor (May 29, 2026); case commentary via McCarthy Tétrault and Rudnicki & Company.
That's precisely the kind of moving target a deterministic clock is built for, and precisely where its job ends. Per DROZlegal's own capability inventory, the criminal module computes the Jordan ceiling through a dedicated API route, with a branch for matters that went through a preliminary inquiry (the math changes), and surfaces the running clock on the case file. It does the arithmetic. It does not weigh whether a given stretch of delay counts as a Vrbanic-style complexity exception or a Jacques-Taylor-style discrete circumstance — that judgment call, like every judgment call on the file, stays with the lawyer.
The disclosure workspace — sorting volume, not judging relevance
Disclosure is where a criminal file's real volume problem shows up — body-camera footage, text extracts, witness statements, and expert reports arriving in waves, often unlabelled. DROZlegal's disclosure workspace, built into the case file, lets a lawyer track completeness and override the category on each item as it comes in.
Behind it sits a manually dispatched classification agent, not an autonomous one. The disclosure_review agent — one of DROZlegal's registered case-event agents (see the AI Agents page for the roster architecture) — sorts incoming material into the Stinchcombe, McNeil, and O'Connor disclosure categories, the taxonomy Canadian criminal disclosure law runs on. It only runs when a lawyer dispatches it, and it only proposes a classification, never acts on one. It also enforces case isolation by design: every job is scoped to exactly one matter, and a mismatched case ID is refused before it ever reaches the underlying AI model, not caught after the fact.