Ayende @ Rahien

It's a girl

Macto: Non functional concerns, you are a legal system

Macto is a system that operates in a highly legislative environment. As such, we have to be prepared for the court to ask us to show our records about a particular Inmate. Part of that is ensuring that we preserve the history of the Inmate’s Dossier. An example where this would be relevant is when a lawyer contend the legality of incarcerating the Inmate. You have to show not only that you have legal authority to incarcerate the guy, you also have to show that you had that authority continuously throughout the incarceration period.

A typical case where there is a problem is shown below:

  1. 27 June 2011 20:52 – Arrest by Sargent Azulay for car vandalizing.
  2. 29 June 2011 09:15 – Detention, 8 days by Judge Judy
  3. 5   July 2011 – Remanded in Custody by Judge Thachil Oti
  4. 14 Aug 2011 – Sentenced, 3 months by Judge Koev Li
  5. 27 Sep 2011 – Released at end of sentence

Do you see the problem? You probably don’t, but for me, it shouts. The issue is that an Arrest is only valid for 24 hours. Because of the gap in the incarceration warrants, a lawyer can usually get an Inmate out.

That means that part of what the system has to do is to be able to say not only what the current state, but what was the state at any given point in time. Those are usually called Temporal Systems, or Append Only systems, since you are not allowed to make modifications existing data, only create new data.

They also tend to be quite hard to work with, but this is still isn’t a post about the technical stuff, so we will let it go until we get to the good parts.


Posted By: Ayende Rahien

Published at

Originally posted at


Paul Cox
07/03/2011 04:26 PM by
Paul Cox

Does this mean that the user has to specify the time when something happened (e.g. The judge granted detention) rather than relying on the current time?

If so, what would the system do when the detention time was entered? Warn the user that they have exceeded the lawful period?

Ayende Rahien
07/03/2011 04:30 PM by
Ayende Rahien

Pual, Usually, no. The way it works, we need to be able to look at previous versions of the Dossier. So you can page backward in time and see all the changes.

Paul Cox
07/03/2011 04:47 PM by
Paul Cox

I'm still not quite clear on the legal side of the domain. For instance, when does the 24 hour period for the arrest legally begin? When they are placed in the police car, or at some specific point when they are processed at the prison?

If the system is not operational for any reason, would that be a manual process of recording the time?

Also when is the detention time determined? When they are placed before the judge or when they return to the station?

Ayende Rahien
07/03/2011 04:53 PM by
Ayende Rahien

Paul, 24 hours start from the moment the arrest is done. For practical purposes, when they put the handcuffs on you. There are manual processes, sure. The system is basically a file cabinet, nothing more. Detention is usually in days, and it is from midnight the day it was given and counting forward for how many days it is for.

Chris Sainty
07/03/2011 10:59 PM by
Chris Sainty

I am assuming a lot of the steps in the chain have physical documents that go with them, the actual signed warrants etc. I also assume that the real documents need to be produced when needed, rather than just a print out "our computer says he should still be here". How is this sort of documentation currently managed in a paper prison, are those papers kept in the prisoners dossier or seperately? "Here is the warrant cabinet" Does macto have a role in helping manage and track those physical documents as well as their digital representations?

Ayende Rahien
07/04/2011 05:03 AM by
Ayende Rahien

Chris, Yes, lots of paperwork. The Dossier have a physical copy that is stored somewhere in the Legal dept. Ideally, we scan all those documents in and have a copy of them electronically.

08/01/2011 09:20 PM by

I know that it isn't about technical stuff, but will event sourcing be proposed as a solution. It seems, that it's a perfect fit for it.

Comments have been closed on this topic.