Let's talk
data-modelling

A hundred of the rules we tracked may cite a repealed law

A 184-obligation construction register was six weeks old when we found about a hundred entries may cite a law that had been replaced. Nothing in it could tell us.

·

You run a construction site, or several, and somebody has built you a register of everything the law asks of you: the welfare facilities, the registers of workers, the returns, the notices on the board, the licences that come up for renewal. It is long, it is organised, and you check the site against it. That is what it is for.

Now suppose that between the day it was compiled and the day you next open it, the law most of it was written from is replaced. The register does not change. Every line reads as confidently as it did. Nothing on any page says this Act no longer exists. You would carry on running the site against it, and you would have no way of telling.

That is what we found in our own work, and the register was ours. In July we compiled a construction compliance register for a proposal to a property developer: 184 obligations across fifteen areas, read from the source text of the Maharashtra building-workers rules, the state real-estate regulator’s requirements, environmental clearance, the Fire Act and the labour welfare and professional tax provisions. Six weeks later, while checking an unrelated point about what “prescribed format” legally means, we found that all four of India’s new Labour Codes had come into force on 21 November 2025, and that the Occupational Safety, Health and Working Conditions Code had absorbed the 1996 building-workers Act and the 1970 contract-labour Act the register leaned on.

We flagged about a hundred of the 184 obligations as possibly citing a repealed statute. Flagged, not confirmed. The log for that day says they may cite one; reading each of the hundred against the new Code was the work that followed, not the work done that afternoon.

What was actually going on

The register was correct on the day it was written. Every citation had been checked against the text it named, and the text was authoritative when read. What the register did not have was any way of noticing that the ground beneath it had moved. Each obligation was a sentence with the law’s name inside it, and a sentence cannot be asked a question. The only way to find out whether a line still stood was to read it again, and nobody re-reads 184 lines on a schedule.

What found it was a different question altogether. We were checking whether an electronic register is allowed to look different from the printed form in the rules. The answer, from the Ease of Compliance Rules 2017, is that the layout may be adjusted but the column serial numbers, the content and the integrity of the record are fixed. Reading the current statutory position to answer that is where the commencement of the Labour Codes surfaced. Nobody set out that day to check whether the law had changed; it came up because a person was reading the current law for another reason.

What we changed

Two things, and they are modest. The specification for the form engine was corrected: it now requires column serials to be preserved, and it names three categories of output rather than treating every generated form alike. And the roughly hundred obligations were marked as needing their citation re-read, rather than being left standing as if nothing had happened.

What it did not fix

The hundred is an estimate and a flag. Which of those obligations changed in substance under the new Code, which only need a fresh section number, and which no longer exist at all is a question that has to be answered one obligation at a time, and that reading was not done in the session that raised the flag.

This register was compiled for a proposal. It was never running at a customer’s site, and no site was managed against it in the six weeks it was wrong. That is luck rather than design, and the point of writing this down is that a customer’s register would have gone wrong in exactly the same way and stayed wrong for exactly as long.

And nothing in what we changed makes the next repeal announce itself. The check that caught this one was a person reading the current law. Until the register can do that check on its own, the next one will be caught the same way, or not.

The mechanism, in plain words

A citation held as prose can only be found by re-reading. A citation held as data can be queried. If each obligation is a row that carries the instrument it relies on, the section, and the date that citation was last checked, then a repeal stops being a document to re-read and becomes a question to ask: which obligations cite an instrument that is no longer in force? The answer is a subset, and the subset is the work.

That is the rule we took from the flag, and it is a design rule rather than a feature we can point at in that day’s log. The register that went wrong was a spreadsheet’s worth of sentences; the version that cannot go wrong the same way holds its citations as fields, and a change to the list of instruments in force invalidates a queryable set of rows instead of a document.

Where this ends up

Sazinga Comply is where that rule has to hold. An obligation is only worth tracking if the register can tell you when the law beneath it moves, and a register that cannot answer that question is a document that was right once.

This came out of building Sazinga Comply

Know what is due, what is evidenced and what has expired. The problem above is one we met while building it, and what we did about it is in the product.

If you run something like this, tell us how it works today and we will tell you what it would take to move.