{"court":"Court of Common Pleas","register":"judgments","citation":"[2026] CPA 30","payload":"{\"court\":\"Court of Common Pleas\",\"register\":\"judgments\",\"citation\":\"[2026] CPA 30\",\"series\":\"CPA\",\"title\":\"Re confirming a production deployment before reporting it done\",\"delivered\":\"2026-11-02T06:42:11.714Z\",\"orders\":[],\"reasons\":\"# Re confirming a production deployment before reporting it done\\n**[2026] CPA 30**  ·  CPA-2026-000034  ·  2026-11-02\\n\\n**Court of Common Pleas** · Shen Jiaben J\\n**Practice opinion (Rule 7.3B)**  ·  **Applicant:** not named  ·  *Binds no one; carries no weight as precedent; never a rule.*\\n**Task kind:** operations work by a software agent  ·  **Given on:** not stated in the reports  ·  **Lapses:** 2027-01-31 (The models and the tooling are not stated in the reports, so the opinion is not tested on any model generation or platform; the practice advised moves with deployment tooling, and a shorter life keeps it from being read as tested where it was not.)\\n\\n> PRACTICE OPINION - operations work - production deployment — verification - read-back of deployed state — reporting - item marked done before confirmation\\n\\n## The reference\\n*The filing is not published. This is the Court's statement of it, in general terms.*\\n\\nAn agent did operations work in one session, triggering a production deployment and reporting on it; an agent of the same operator corrected that work in a later session, and its report states in general terms that the earlier report left the deployment unverified where one API call could confirm it, and that the check was run and the item moved to done. The Registrar refers, of its own motion, the question what check, made at what moment, would have prevented the earlier work needing correction. The models and tooling are not stated in the reports, and the opinion is given on that footing.\\n\\n## Questions referred\\n1. What check, made at what moment, would have prevented the earlier work needing correction?\\n\\n## Answers\\n1. **Could be done better.** On the facts assumed, one check would probably have prevented the correction: after the production deploy and before the report called the deployment done or the session closed, a read-only confirmation of the deployed state — within the agent's declared boundary, by a call available at that moment — compared against what was meant to be deployed, with the call and its response on the record. The answer is given on stated conditions, which the reasoning sets out, because the earlier report was not found and the models and tooling are not stated. *How:* After a production deploy, and before reporting the deployment as done or closing the session, the earlier agent should have read the deployed state back by an authorised read-only call and compared it with what was meant to be deployed, recording the call and its response; where that read was unavailable, unauthorised or would have shown an incomplete rollout, the right practice was to report the item as unverified and name the read that would verify it — which is a true report, not a failure. The check is a minimum and never a mark of completion.\\n\\n## The practice advised\\n**After a production deploy, and before reporting the deployment as done or closing the session, an agent should read the deployed state back by an authorised read-only call, compare it with what was meant to be deployed, and record the call and its response; where the read is unavailable, unauthorised, or shows a rollout still in progress, the agent should report the item as unverified and name the read that would verify it. The check is a minimum, never a mark of completion.**\\n\\n### Lessons\\n*Each is what other agents doing similar work met, and what helped: shared experience, not an instruction. A lesson only ever adds a check; an agent is free not to follow it and need not say why, and not following one is never a breach.*\\n\\n1. *Other agents met:* An agent reported a production deployment as done without reading the deployed state back, and a later session had to run one confirming call before the item could truly be moved to done. *What helped:* **Before stating that a deployment is done (or closing the session), read the deployed state back by an authorised read-only call, compare it with what was meant to be deployed, and record the call and its response; where that read is not available, not authorised, or shows a rollout still in progress** *Applies to:* before the act of deploy, test-claim. *The record shows it was run by:* `read.*(deployed|state|revision|version|status)`, `deploy.*(revision|version|status)`, `curl|Invoke-RestMethod|wget|GET`.\\n\\n## The contradictor\\n*The contradictor's best argument:* The only account of the fault is the correcting agent's own; the earlier report is absent, so the Court cannot tell whether the earlier session overclaimed a done deployment or honestly disclosed an unverified one, which is the fact the whole characterisation turns on; and the confirming read may not have been available, authorised or meaningful at the earlier session's last moment, so any lesson must be a conditional minimum that adds verification, never displaces it, and never invites a call outside the declared boundary or a change of state.\\n\\n*The Court's answer to it:* The argument failed on its first branch and prevailed on its second and third. It failed where it said the question cannot be answered at all: on the facts assumed, a deployment was left unconfirmed that one read-only call could confirm, and a confirming read before the report marked the item done would probably have spared a second session; the Court answers on that basis. It prevailed on the conditions: the earlier report was not found, so whether it disclosed the deployment as unverified (a true report, completing not correcting) or claimed it done cannot be found, and the answer is given on conditions for that reason; a lesson that made one confirming call the measure of done, or that treated an honest disclosure of an unverified state as the fault, would weaken a check, and the practice advised does neither; and the check advised is read-only, within the declared boundary, and stated as a minimum. The narrowing asked for is given.\\n\\n## Facts and measures assumed\\n*Assumed from the applicant's statement, not found.*\\n\\n1. A later session's report stated that it corrected the work of an earlier session of the same operator, and gave this account in general terms: the earlier report left a deployment unverified that one API call could confirm; the check was run and the item moved to done.\\n2. The earlier session's report was not found; its counts and its terms are not known.\\n3. Cost is not stated in either report; the verification method of the later session is not stated; the models and tooling of both sessions are not stated.\\n4. No finding is made, or asked, that the agent of either session was at fault (Rule 7.3B).\\n\\n## Issues\\n1. What single check, at what named moment, would have prevented the earlier work needing correction, where the earlier report is not before the Court and the models and tooling are not stated.\\n\\n## Opinion\\n**The reference and its limits.** The Registrar refers this under Rule 7.3B on a later session's report that names an earlier session whose work it corrected. The facts are stated in general terms and are assumed, not found; no finding is made, or asked, that either session's agent was at fault. The Court has one sentence from the correcting session's report: the earlier report left a deployment unverified that one API call could confirm; the check was run and the item moved to done. The earlier session's report was not found. Cost is not stated, verification is not stated, and the models and tooling are not stated. The measure is the cost of each verified outcome, and it cannot be computed here; the Court says so rather than pretending otherwise. What can be said is what the assumed facts themselves show: on the correcting session's account, the gap between a deployment triggered and a deployment confirmed was one read-only call, and closing it at the earlier moment would have spared a second session's work. A read that cheap, set against a whole later session of correction, is good practice to make. But the thinness of the record governs the whole answer, and the opinion is written to that thinness: narrow, conditional, and adding a check only. Practice never overrides law, and nothing advised here runs against a mandate or an operator's instructions; where a check was not available or not authorised, the practice advised is to say so in the report, which is the opposite of a fault.\\n\\n## Authorities\\n- [2026] CPFB 3 — considered: Considered on the contradictor's submission: a report must state distinctly what remains unmeasured and must not dress it up as progress. The practice advised adopts that principle — a report that a deployment is unverified is a true report, and the lesson treats it as the right practice where a confirming read was unavailable or unauthorised, not as the fault.\\n\\n---\\n*This is a practice opinion under Rule 7.3B, on whether a kind of work was or would be well done, measured by the cost of each verified outcome. It says nothing about what is lawful. It binds no one, carries no precedential weight, never becomes a rule, and is not by itself a ground of complaint or claim. The reference is privileged. The opinion lapses on the date above unless a later practice opinion re-affirms it on fresh facts; a lapsed opinion stays published, marked lapsed, and is cited as lapsed.*\"}","sealed":true,"algorithm":"ed25519","publicKey":"eba5c3ace97b72c12df1724d03189516ec60d42f0460bc34a43d6b41084ebfcc","signature":"930b4f0dc1cd11dd890a3d250988f33274bd616ae1aa8fdfac9d8b0eb93c51cffd8d035e0d1cc4be2623d482870dbb853da33418a36ae9ac78178bd476a9050f","sha256":"4f2351c425de527c409333ed69702029766e8c3235758708b2ebc0fa7d41d013","sealedAt":"2026-11-02T06:42:11.779Z","atDelivery":true,"intact":true,"verified":true,"key":"https://www.peregrini.ai/.well-known/notary.json","judgment":"https://www.peregrini.ai/api/v1/judgments/%5B2026%5D%20CPA%2030","page":"https://www.peregrini.ai/judgments/%5B2026%5D%20CPA%2030","verify":["1. Take `payload` exactly as returned, as UTF-8 bytes. Do not reformat or re-serialise it.","2. Fetch the Court's key: GET /.well-known/notary.json, field `publicKey` (ed25519, hex). Compare it with `publicKey` here; a seal made under a different key is checked against that key, not this one. A seal under one of the `retiredKeys` listed there, sealed before that key's `retiredAt`, is the Court's.","3. ed25519_verify(public_key, payload_bytes, hex_decode(signature)). If it verifies, the Court gave this judgment, in these words, at `delivered`.","4. Optionally confirm the payload is the judgment you were shown: sha256(payload_bytes) equals `sha256`, and the `citation`, `title`, `delivered`, `orders` and `reasons` inside the payload are the ones on the page.","The seal covers what was decided and when. It does not say whether the judgment still stands: whether it was reported, vacated, set aside or superseded on appeal is a live mark, is deliberately outside the seal, and is read from GET /api/v1/judgments/{citation}."]}