In July I argued that Nigeria's 2026 mini-grid regulations had turned an operator's records into a balance-sheet asset, and ended on a question: how many days would it take you to produce a defensible number for your site? The honest answer, for almost everyone, was that nobody had ever said what a defensible number is made of. The regulation says verified. It does not say what verification looks like.
So the next thing to write was the record itself: what an owner should require an operator to measure, in what form, with what evidence, so that the number produced in year four survives a reviewer in year five. I expected that to be a matter of writing down what we already do. It was not. The draft was finished at the end of August. Before anyone outside the company read it, a fact-check found six factual errors in it, one of which our own code had already got right, and fixing them changed what the document could claim. That process is the subject of this piece, because it turned out to be more useful than the document.
The document is OPS-1, an operator performance specification for publicly financed solar-hybrid plants: thirteen clauses an owner can write into an operations and maintenance agreement, each built around one question — what can this number be made to say that is not true, and what makes that harder? It is free, it is not a certification scheme, and Gen318 does not claim to meet it. The standards on either side of it — IEC 61724-1 for monitoring, IEC TS 63019 for availability, ISO 14224 for reliability data in the oil and gas industries, SolarPower Europe's O&M guidelines for grid-connected plants above a megawatt — are in its bibliography, and its introduction says why none of them is the record an owner needs. The occasion was the Rural Electrification Agency's launch, on 26 August, of a company to manage the federal government's renewable assets, whose stated functions — engage competent operators, ensure money is available to replace equipment at the end of its useful life — each requires measurement rules that the instruments we examined do not bring together for these plants. What follows is what checking the document found.
Holding it to its own rule
A specification whose whole subject is not asserting what you cannot evidence has to be held to its own standard. So before it was published, every checkable claim in it was checked against a primary source: the regulation itself, the fifteen schedules NERC published separately in June, the IEC and ISO catalogue records, the North American GADS reporting instructions, the three AMDA reports, IEA PVPS task reports, and the battery-testing standards. Each claim came back as confirmed, wrong, or unverifiable. Six came back wrong. They are numbered here so that the count can be checked.
The first two were in the scope section. The draft said many plants fall outside the Mini-Grid Regulations "below the registration threshold". There is no such threshold. Registration at or below 100 kW is optional — section 8(1) says a developer may register or take a permit — and the Regulations apply to every isolated mini-grid up to 5 MW. The draft also said institutional campus plants are "generally above" the 5 MW cap. They are not: five of the seven first-phase Energizing Education plants on REA's own list are within it. They fall outside the Regulations for a different reason, which the draft had missed. The definition of a mini-grid requires supply "to more than one customer", and a plant serving a single university is not one at any size. Both sentences were rewritten. Both were the kind of error a reader who knows the regulation would have stopped at.
The third was in the references. The draft cited "IEA-PVPS Task 13, reports on field data requirements for photovoltaic reliability". No report carries that title. The reports that do exist — T13-09 on module failures in the field, T13-25 on operation and maintenance, and T13-35, published in July, on the reliability of battery systems in solar plants — are now cited by name.
The fourth and fifth were softenings the fact-check would not let stand. The draft said the North American GADS Solar programme "collects nothing" below 20 MW. Its reporting instructions require nothing below 20 MW, but smaller plants may report voluntarily, and the sentence now says so. The draft said AMDA's reports carry "no cause codes". The 2020 and 2022 editions do attribute outages coarsely, by backup type and by low-sunshine periods, so the honest phrase is "no failure-cause taxonomy".
The sixth was in Clause 10, and it is the one worth dwelling on, so it has the next section to itself.
One further finding was an omission rather than an error, and it is not in the count of six. SolarPower Europe's guidelines were not in the reference list at all, and they should have been, because they are what an owner in Europe reaches for first. Reading them properly also surfaced a real disagreement, which I come back to below.
The specification was wrong and the code was right
Clause 10 governs statements about battery condition and remaining life. The draft carried a normative note saying that internal resistance cannot be inferred from voltage sag at typical monitoring cadences because it "requires sub-second pulse measurement", and that a platform sampling at minute intervals shall not report it.
The conclusion was right. The premise was wrong. The standard test methods do not use sub-second pulses. IEC 61960 applies a discharge at 0.2 C for ten seconds and then at 1 C for one second, and takes the resistance from the voltage step. The hybrid pulse power characterisation used in the vehicle industry reads at ten seconds; the USABC procedure at thirty. Only the pure ohmic component needs millisecond acquisition, and the alternating-current method at one kilohertz is not a pulse at all. Minute-cadence telemetry still cannot reproduce any of those read-points — they all fall inside a single sample interval — so the prohibition stands. But the reason given for it was invented.
What made this one uncomfortable is where the correct reason already lived. The battery feature module in Gen318's own codebase computes a load-conditioned voltage difference, and the comment above it says, in as many words, that this is not an internal-resistance measurement and must never be presented as one, because IEA PVPS T13-35 puts the requirement at pulses of roughly ten seconds and our adapters poll at three hundred. The comment cited the right source and drew the right boundary. The draft, which I wrote, gave a reason the source does not support. The code was right and the document was wrong, and the document is the one that would have been quoted.
I draw one lesson from that, and it is not a flattering one. The discipline in this company lives closest to where the number is computed. The further a claim travels from the code, the less often it is checked against its source, and a specification is the furthest a claim can travel. The corrected note now says what the standards say, cites T13-35 as the code does, and adds what the literature supports: a lumped-resistance trend regressed from minute-level voltage, current and temperature is reportable, but only if it is labelled as such, calibrated for current, temperature and state of charge, and never compared with a laboratory value.
There was a second instance of the same failure, in the other direction, and it belongs here too. The console panel that tells an operator "what this regulator asks for" was seeded from a transcription of NERC's Schedule 4, the monitoring and evaluation template every permit holder files. When the actual schedule was read, eight of the thirteen fields in that transcription were not in it. Schedule 4 does not ask for planned and unplanned outage counts, or for a split of technical from non-technical loss. It asks for generation by source, consumption and revenue by customer class, billing and collection efficiency, HSE incidents, and an asset register with cost, age and book value per asset class. The panel described a filing that does not exist. That is now a ticket, and it needs a database migration to fix, because the seed is frozen inside one. A piece about the discipline of writing things down should not leave out the place where we had not.
The claim that had to get narrower to survive
Section 7 of OPS-1 lists what the specification cannot do. It sits in the body of the document, not in an annex, because a reader deciding whether to use the document needs those limits before deciding. One of them said: no population baseline exists at this scale, because GADS Solar requires no reporting below 20 MW, "so nothing is mandatorily collected anywhere in the world at the size of these plants".
That was too broad, and the so was a non sequitur before the facts even arrived. Nigerian regulators do collect operational returns at this size. Every permit holder files Schedule 4 — annually where the plant is below 1 MW, quarterly above it — with generation, consumption, revenue, and the ages of its assets by class. In Enugu, whose commission has taken over intrastate regulation, every registered or permitted operator files a quarterly template that asks for SAIDI, SAIFI and CAIDI, and for planned and unplanned outages separately. A reader in Enugu would have read the original sentence and closed the document.
The corrected sentence is narrower and stronger: none of the programmes examined — GADS Solar, NERC's Schedule 4 return, the Enugu template and AMDA's benchmarks — mandates an event-level failure record, meaning cause codes, equipment identity and age at failure, at the size of these plants, and I found no other that does. GADS Solar, which does collect such records, makes reporting mandatory only from 20 MW. The Nigerian returns collect totals and ages, not failures. AMDA collects portfolio uptime, self-reported. That is the actual gap, and it is the one OPS-1 was written for. The broad claim would have been refuted by the first regulator who read it. The narrow one can be refuted by naming a programme, and I would like to hear of one.
The schedules changed other things too. Clause 2 gained a scheduled-maintenance state, because the tripartite agreement for interconnected mini-grids requires an outage log that separates planned from forced, and a specification whose only non-service states were "plant fault" and the excused set would have classified a planned outage as a fault by construction. The same agreement carries a "reliability / availability target" with no defined computation, so Clause 2 now says which of its two figures fills that row. Clause 7 gained a third provenance, because on an interconnected site the settlement energy is read from the distribution company's meter, which is neither the owner's device nor the vendor's cloud. Clause 3 now says that a regulatory settlement estimate — the three-month average the schedules prescribe when the coupling meter fails — never enters the energy identity. None of that was visible from the regulation alone. All of it was in the schedules, which most of the April commentary was written without.
A number that measures the monitoring
The disagreement with SolarPower Europe was about time.
Their guidelines make response time the contractual core of an O&M agreement: a guaranteed response by fault class, four daytime hours for a full outage, with acknowledgement, intervention and resolution as monitored indicators. OPS-1's draft had no time dimension at all, and that was a hole, because section 17(2)(f) of the Regulations obliges a permit holder to publish "service-restoration expectations" to its customers, and an owner using OPS-1 had nothing through which to pass that obligation to the operator.
So a thirteenth clause was added, and the decision that made it adoptable was where the clock starts. In the European convention, failure time begins when the operator receives the alarm, and a communications loss caused by an external party pauses it. That is reasonable in a market where the data link is somebody else's utility. Here it quietly reintroduces the excuse the rest of the document exists to remove: a plant the operator cannot see becomes a plant the operator is not late to. Principle 3 of OPS-1 says a gap in the data is not a zero and it is not an excuse. So Clause 13's clock starts at detection — the earliest of the first alarm, the first interval classified as plant fault, a timestamped report from a customer or the owner, or a finding by the operator's own staff held where it cannot be edited afterwards — and it does not pause for a lost link. An operator that acknowledges slowly reports slowly. A dark site is a fault, not a pause.
That anchor produces two numbers. Under Clause 13 every closure carries the source of its detection timestamp: an automated alarm, an interval the availability rules classified as a fault, a customer's or the owner's report, or a technician's finding. The share of closures that a person detected before the monitoring did is a measurement of the monitoring, and every vendor of monitoring, this company included, has an incentive not to publish it. Separately, a closure with no detection timestamp at all is reported as undetected, counted, and never assigned the acknowledgement time. That count measures the record: it says that detection evidence is missing, and it does not say what missed the fault. An earlier draft of this piece ran the two together; the distinction went into the specification the day a reviewer pointed it out, and both counts are in the schema.
Where we fail our own document
OPS-1's front matter says Gen318 makes no conformance claim and will publish a clause-by-clause statement, including the clauses not met. That statement is in its third draft, dated 3 September, and it assessed the twelve-clause text of that date. Against those twelve clauses it counts three met, eight met in part — in most of those the number exists and is not shown — and one not met at all, the scorecard, which has not been built. Clauses 1, 2, 3, 11 and 13 changed after that draft, and Clause 13 is carried as not yet assessed; the product does not report those intervals today, so I expect that row to read the same way as the scorecard's. The statement will be re-run against the published text before it is issued, and it will say all of this in those words. I am not going to soften it here. A document that asks operators to report their refusals — undefined, withheld, no baseline, insufficient coverage — and then hid its author's would not deserve to be used.
The August piece on Schedule 13 had a section with the same shape, and it is worth saying why the shape recurs. The regulation has repriced records; a vendor's natural response is to describe its product as the answer. The only way I know to resist that is to publish the measurement method first, in a form anyone can satisfy with a spreadsheet, and then measure the product against it in the open. There is no certificate and no register, and adopting it creates no obligation to Gen318. A specification only its author can satisfy is a product sheet.
What it took
A regulator's website that our own network policy blocked, read through an archive capture. Fifteen schedules in a zip, one of which defined an asset register the specification had to reconcile to. Three editions of a benchmarking report, read for what they do not contain. The catalogue records of four standards. A battery-testing standard read for its pulse durations. Two law-firm summaries, one of which said registration below 100 kW is required, which the regulation does not say. Two rounds of AI-assisted review after the fact-check, one of which found the confusion in the section above. And a table, kept as the work went, of every claim and what it came back as.
Then a changelog recording what changed and what was declined, and a digest. The PDF at gen318.com/ops-1 carries the SHA-256 of the Markdown it was rendered from in its colophon. Clause 11 says an issued report is immutable and that any party holding the payload can check it. It seemed wrong to ask that of an operator's quarterly report and not of the document doing the asking.
If you own or run a solar-hybrid plant, here is the question the thirteen clauses put to you: which of them could you report next quarter from records you already keep, and which would you have to refuse? I would like to hear from owners, O&M leads and the people who draft these agreements — and I would especially like to hear which clause you think is wrong. Corrections will be listed in the next version.
Sources referenced in this article:
- OPS-1: Operator Performance Specification for Publicly Financed Solar-Hybrid Assets, v1.0 (Gen318, 4 September 2026)
- NERC Mini-Grid Regulations 2026, NERC-R-001-2026 (PDF) — sections 4, 8, 17, 22 and 23, and the definition of "Mini-Grid"
- Schedules to the Mini-Grid Regulations 2026 (zip of fifteen schedules) — Schedule 4 (monitoring and evaluation template), Schedule 8, Schedule 10 (tripartite agreement) and Schedule 13
- Enugu State Off-Grid Electrification Regulation 2025 (PDF) — Schedule 7, the quarterly performance reporting template
- REA — Energizing Education Programme Phase I — the seven sites and their capacities
- FG launches RAMCO to sustain publicly funded renewable energy assets (Energy Times, 26 August 2026)
- IEC 61724-1:2021 — Photovoltaic system performance, Part 1: Monitoring (IEC webstore)
- IEC TS 63019:2019 — Photovoltaic power systems, Information model for availability (IEC webstore)
- ISO 14224:2016 — Collection and exchange of reliability and maintenance data for equipment (ISO)
- NERC GADS Solar Data Reporting Instructions, 2026 (PDF)
- Benchmarking Africa's Minigrids Report 2024 (AMDA, PDF), with the 2020 and 2022 editions read for their outage attribution
- IEA PVPS T13-35:2026 — Assessing the Reliability of Battery Systems in Solar Power Plants in Operation
- IEA PVPS T13-09:2017 — Assessment of Photovoltaic Module Failures in the Field
- SolarPower Europe — Operation & Maintenance Best Practice Guidelines, Version 6.0 (February 2025)
- How to perform internal resistance measurement according to IEC 61960 (Arbin)
- Aitio and Howey — Predicting battery end of life from solar off-grid system field data using machine learning (arXiv, 2021)
- 60 Business Days: Nigeria's New Mini-Grid Rules Made Your Records a Balance-Sheet Asset (Gen318, July 2026) — the piece this one follows
- The Compensation Statement: Working Through Section 21, Column by Column (Gen318, August 2026)
