A Position Piece · A Governed AI Harness for the Collector's Court अपील · सुनावणी · आदेश
The officer signs the order in their own hand and answers for every line of it. Our job is to make deterministic the parts of that order that must never be left to chance.
The pitch, in one breath
The Additional Collector, Nagpur decides land-dispute appeals as a quasi-judicialQuasi-judicial authorityA revenue officer deciding appeals is not a court, but must act like one: give notice, hear both sides, weigh the record, and pass a reasoned order. Those orders face revision, and writ scrutiny by the High Court. authority — roughly 1,500 live files, in three languages, every order exposed to revisionMLRC § 257Above the appeal under § 247 sits the revisional jurisdiction: a superior revenue authority may call for and examine the record of any inquiry or proceedings to satisfy itself of the legality or propriety of a decision.Maharashtra Land Revenue Code, 1966 ↗ and writ scrutiny. An AI platform can digitise the record, summarise the file, and draft the order — but the officer who signs it remains accountable for output they have no realistic way to re-verify page by page. A confidence score of 0.85 is built for engineers, not for how a deciding officer reasons about a record.
The answer is not a better confidence score. It is deciding, deliberately, which parts of the appellate workflow must not be stochastic — the cited provision of the MLRCMaharashtra Land Revenue Code, 1966The statute governing revenue administration in Maharashtra — record of rights, mutations (§ 150), appeals (§ 247), revision (§ 257) and review. The law the Additional Collector's orders must live inside.India Code: MLRC, 1966 ↗, the completeness of the record, the service of notice, the reasons behind the order, the signature that issues it — and guaranteeing them in code the model cannot route around. We call this gradual determinismOur framingBorrowed from “gradual typing” in programming: instead of making the whole AI deterministic, you opt into hard guarantees only at the points that must not vary, and leave it fluent everywhere else.: let the AI stay fluent and fast where it earns its keep — reading a 687-page bundle, summarising, drafting — and pin down the handful of things that, if wrong, vitiate orders and end careers. The result is a domain harness for the Collectorate in which “the AI assists, the officer decides” is not a policy statement but a property of the system.
01 / THE PREMISE
India already has its case study. In late 2024 the Bengaluru bench of a tax tribunal recalled its own order after it was found to rest on judgments that did not exist; in 2025 the Bombay High Court quashed a ₹27.91-crore assessment because the deciding authority had relied on three fabricated decisions; and the Supreme Court has since held that citing AI-generated authorities without verification is professional misconduct. Note what these have in common: the failures happened inside adjudication — tribunals and revenue authorities, not careless juniors. An AI that usually cites a real provision, usually links a finding to the record, and usually respects the hearing procedure is not a safeguard for a quasi-judicial office — it is a ground of appeal with good odds. When the rule and the actor share a room, the actor wins; a model can paraphrase a checklist, decide a verification was unnecessary this time, or fabricate a citation that reads perfectly in two languages.
The Nagpur pilot's own safety posture says the right words: “AI shall not independently decide any case. AI shall not issue orders. Every final decision shall remain with the competent authority.” This paper is about the difference between saying that and making it structurally true. A deterministic check is also the opposite of another review for the officer to perform: the harness runs the verification, and refuses to finish until it passes. The re-do is removed, not relocated onto the person who was already carrying the responsibility.
02 / THE RISK MAP
The frictions of the Additional Collector's office — the ones the pilot proposal documents slide by slide — sort cleanly onto the control surfaces below. Most are direct: a guarantee can be placed exactly where the friction lives. One — the officer's judicial discretion — is deliberately not a surface at all, and is marked accordingly.
03 / THE FRAME
The mechanisms already standardised in modern agent harnesses line up along the anatomy of the appeal. Commands govern its entry. Scripts govern execution. Hooks govern the exit. Loops govern continuation. Wrappers own the whole workflow. Read left to right, the ordering tracks two things at once: how much is guaranteed, and how far the control sits beyond the model's reach. A skill the model can paraphrase is in-band; a hook the harness enforces regardless of the model is out-of-band — and that gap is the whole difference between a pattern and a control.
04 / THE SURFACES, IN THE COLLECTORATE
Skill selection belongs to the model; a clerk cannot compel a skill to fire. Commands invert that. A command is operator-invoked — a named, logged, auditable entry point into a procedure that runs the same way for every clerk, every bench assistant, every officer in the chain. You cannot make the model choose the right path; you can hand the office a path the model cannot decline.
whether registration, scrutiny and the hearing record happened at all.
A workflow phase written in natural language leaves both interpretation and code generation to the model at runtime — the right default for novel work, the wrong one for a calculation that must come out the same for every appellant. Once a phase has been generated, reviewed and approved, the code is frozen as a versioned script and the phase reduced to “invoke it.” The non-determinism of re-derivation collapses into a reviewed, auditable artifact.
limitation dates, mandatory-record lists, and the contents of the indexed record.
Hooks fire deterministic code at fixed points in the loop. Their headline job here is at the exit — inspecting a draft before it is allowed to be “done” — but the same mechanism also gates each tool call: a PreToolUse hook can allow, deny or rewrite a call before it runs, and a PostToolUse hook inspects the result once it returns. Any of them can gate the work, and a stop-hook can re-drive it: a failed check feeds its reason back to the model as the next instruction, so the failure is worked off rather than landing on the officer's desk. One guardrail is mandatory at the exit: the harness exposes a flag that is true when the model is already in a forced continuation, and the stop-hook must honour it or it will loop forever.
p.3 · p.239). An unsourced finding cannot be the final turn — the “every line cites its source” promise of the pilot, made unskippable. provenanceWhere the property needs judgment rather than a pass/fail rule — “does this order actually deal with every ground the appellant pressed?” — a prompt- or agent-type hook runs a cheap evaluator in the same slot. The shape is identical; only the oracle changes.
#!/usr/bin/env python3 """Stop-hook gate: a draft order cannot leave the harness until every cited provision verifies against the statute store, every paragraph carries a page-level source link, and the natural-justice checks pass on the record. The harness invokes this when the model tries to end its turn. Emitting a "block" decision returns control to the model with `reason` as its next instruction; exiting 0 silently lets the turn finish. """ import json, sys from collectorate.verify import ( unverified_provisions, # MLRC as amended through the cut-off unsourced_paragraphs, # every finding needs a page citation natural_justice_breaches, # notice served, hearing on the Roznama ) payload = json.load(sys.stdin) # Honour the forced-continuation flag, or this gate loops forever. if payload.get("stop_hook_active"): sys.exit(0) draft = payload["last_output"] problems = (unverified_provisions(draft) + unsourced_paragraphs(draft) + natural_justice_breaches(draft)) if problems: print(json.dumps({ "decision": "block", "reason": "Resolve before finishing:\n- " + "\n- ".join(problems), })) sys.exit(0)
cited provisions, source links, notice & hearing, reasons, and data egress.
A loop construct runs a task repeatedly until a satisfactory outcome is reached. It is not deterministic on its own — but it raises the floor of what the office can expect, and it composes naturally with hooks: the hook is the oracle, the loop is the driver. The honest caveat is that a loop is only as trustworthy as its verifier; a loop without a real test simply burns time.
that a draft is only “finished” once a named test is satisfied.
A custom wrapper drives the harness through its API or CLI — the most deterministic surface, because the control flow lives in code the office owns rather than in the model's discretion. A first headless call returns a session identifier; subsequent calls resume that session, preserving full context across turns, so an external program can hold a case open from registration to disposal, insert hard human gates between phases, and bound iteration. The model supplies capability; the wrapper supplies the guarantee that nothing issues from the office unsigned.
"""Deterministic envelope around the harness for an appeal file. The office — not the model — owns the control flow: it opens a session, holds it open by session id across turns, and makes the "issue" step structurally unreachable without the Additional Collector's sign-off. """ import json, subprocess def run(prompt, session=None): """Run one turn of the harness; return its parsed JSON result. :param prompt: the operator instruction for this turn. :param session: a session id to resume, or None to open a new case thread. :returns: the result dict, including `session_id` for continuation. """ cmd = ["claude", "-p", prompt, "--output-format", "json", "--max-turns", "8"] if session: cmd += ["--resume", session] return json.loads(subprocess.run(cmd, capture_output=True, text=True).stdout) draft = run("Draft the order for appeal 118/A-247/2026. Do not issue anything.") sid = draft["session_id"] # The order cannot issue without the competent authority's approval. if additional_collector_signs_off(draft["result"]): run("Finalise the approved order and enter it in the case record.", session=sid)
what leaves the office as an order, and who signed it.
05 / THE DISCRETION QUESTION
We will be straight about this, because it is the question every deciding officer should ask first. A determinism harness does not weigh evidence, does not prefer one witness's 7/12 story over another's, and does not decide an appeal. Judicial discretion — the appreciation of the record, the balancing of equities, the decision itself — belongs to the competent authorityThe pilot's own words“AI shall not independently decide any case. AI shall not issue orders. Every final decision shall remain with the competent authority.” The Kerala High Court's district-judiciary AI policy draws the same line: AI is never a substitute for decision-making or legal reasoning., and no surface on this spectrum touches it. That is not a limitation of the design; it is the design.
What the harness does is supply the substrate that discretion has always deserved: a complete record, verified citations, a sourced brief, a hearing history that is actually on the file, and a draft whose every line can be traced to its page. The officer's judgment gets spent on judging — not on finding, checking, and repeating. And because every control is code, the office holds a guaranteed, auditable account of which checks ran on which file: the evidence on which the order's integrity can stand when it is tested in revision or under Article 227. The discretion remains the officer's; the harness makes it defensible.
06 / COMPOSITION
These surfaces are not alternatives; they stack. A command routes the clerk into the office's procedure, a script performs the limitation arithmetic that must come out identically, a hook verifies the draft and re-drives on failure, and a wrapper holds the officer's signature around the whole exchange. The model keeps its fluency in the gaps between — reading a trilingual 687-page record, summarising it, drafting the first version of an order — which is exactly where fluency is worth having and where a wrong first draft is cheap to catch.
We are not making the AI deterministic. We are deciding, surface by surface, which things in an appeal the AI is no longer permitted to get wrong.
It is worth being precise about the claim. Generation stays stochastic; the model still improvises a draft. What the office gains is guaranteed invariants at the points that carry legal consequence — islands of determinism around a fluent core. That is a more honest promise than “trustworthy AI,” and a far more useful one to an authority whose every order must survive appellate scrutiny.
07 / THE PILOT, READ THROUGH THIS LENS
The pilot proposed for the Additional Collector's office — ten modules over ~1,500 live land-dispute appeals, deployed in 12–16 weeks — was not written in this vocabulary, but it decomposes into it almost without remainder. Reading the module list against the spectrum shows which guarantees the pilot already implies, and where the discipline must be made explicit rather than assumed.
Two readings follow. First, the pilot's core AI modules — document intelligence, summaries, draft orders — are exactly the stochastic muscle this paper says to keep stochastic; their value is fluency across Marathi, Hindi and English at a scale no officer can match. Second, everything around them that the proposal promises as a feature — source-linked clauses, deficiency flags, human approval, audit logs — is only a guarantee if it is implemented out-of-band: as the command, script, hook and wrapper surfaces above, where the model cannot paraphrase its way past them. The distance between a feature and a guarantee is the distance between a demo and an institution.
08 / WHY IT MATTERS HERE
A revisional authority, a High Court under Article 227, an RTI applicant and a departmental audit do not ask for cleverness. They ask whether the office can show, after the fact, that the rule held — that notice was served, that the record was complete, that the cited provision exists as amended, that the officer and not the machine decided. Every surface on this spectrum is code — a command definition, a frozen script, a hook, an orchestration wrapper — and code is versionable, reviewable, signable and attestable. The same move that makes a control tamper-resistant against the model makes it legible to the Collector, to the appellate chain, and to the citizen whose land is in dispute.
For a quasi-judicial office adopting AI in the middle of India's fabricated-citation moment — with the Supreme Court calling unverified AI authorities misconduct and the first High Court policies drawing hard lines around judicial AI use — that shift from hoping the AI behaved to demonstrating the envelope it ran inside is the whole point. It is how the office sees its own compliance posture, how the Collector supervises work they cannot personally re-read, and how the officer who signs the order is finally equipped to stand behind it. Gradual determinism is how a Collectorate adopts AI without surrendering the authority, discretion and responsibility that make it a court.