Input format: assessments on the record
Run the commands below from the installation directory. See Run operator commands for how ./lens reaches the running installation and copies files into it.
Each of these is a document the organisation already holds, retyped into a short JSONJSONJavaScript Object Notation: a text format for data, using named fields, lists and values. Configuration files and service messages use it. file. Each lands at the shown rungRungOne of three levels of support for a recorded value: told, shown or measured. The level appears beside the value.: it is on the record, but it is not a measurement.
The operational review
The resilience or DORADORA metricsSoftware delivery measures associated with the DevOps Research and Assessment programme, including change speed, failure rate and recovery time. review, one entry per cellCellA box on the map that stands for a team, service, supplier or AI agent. It is a unit you can inspect, not necessarily a department or a person., scored 0 to 100 on Complexity, Agility and RecoverabilityRecoverabilityThe R in C/A/R: how well a team or service restores acceptable service after a failure. Recovery times and tested alternatives can supply evidence. (C/A/RC/A/RThree separate scores for a team or service: Complexity, Agility and Recoverability. Each uses current evidence and the customer’s stated scoring rules.). A dimension the review does not assess is left out, and an earlier value for it is kept. It is never written as zero.
From the installation directory:
./lens connectors ops-report --org harbour --fixture review.jsonOn success the command prints a summary of what it wrote and exits 0; the map shows the result after the projectionProjectionThe regular pass that brings the read model up to date with the canonical log. It runs every 30 seconds by default. service’s next pass (about 30 s by default). A refusal names what was wrong.
Required: cells, each with cell_id and at least one of complexity, agility, recoverability as a whole number 0 to 100. Optional per cell: note. Optional at the top: source, report, note, as_of_ms, period, calibration. A cell id not in the map is reported.
{
"source": "resilience-review-2026",
"report": "Harbour Logistics operational resilience review",
"cells": [
{"cell_id": "customs", "complexity": 55, "agility": 40, "recoverability": 35, "note": "filing gateway has no tested failover"},
{"cell_id": "bookings", "agility": 70}
]
}The finance classification
Cost centre or profit centre per cell. Any other value is refused.
From the installation directory:
./lens connectors finance --org harbour --fixture finance.jsonOn success the command prints a summary of what it wrote and exits 0; the map shows the result after the projection service’s next pass (about 30 s by default). A refusal names what was wrong.
Required: cells, each with cell_id and class equal to cost_centre or profit_centre. Optional: source at the top, note per cell.
{
"source": "finance-classification-2026",
"cells": [
{"cell_id": "bookings", "class": "profit_centre"},
{"cell_id": "customs", "class": "cost_centre", "note": "statutory"}
]
}The regulation catalogue and scope
Two lists. The catalogue is reference data: which regulations exist and what each demands. The scope rows are the compliance function’s own claims about which cells each regulation reaches, and each row names who made the claim.
From the installation directory:
./lens connectors regulation --org harbour --fixture regulations.jsonOn success the command prints a summary of what it wrote and exits 0; the map shows the result after the projection service’s next pass (about 30 s by default). A refusal names what was wrong.
Required in catalogue: reg_id, label, regime, obligation, requires (the C/A/R dimension the obligation bears on, usually recoverability). Required in scope: cell_id, reg_id, mapped_by, rationale. A cell id not in the map is reported, never guessed.
{
"catalogue": [
{"reg_id": "ucc-art-15", "label": "UCC Art. 15 — accuracy of customs declarations", "regime": "UCC",
"obligation": "declarations must be accurate and the filing capability recoverable", "requires": "recoverability"}
],
"scope": [
{"cell_id": "customs", "reg_id": "ucc-art-15", "mapped_by": "Head of Customs",
"rationale": "the filing gateway is the declaration channel"}
]
}What a re-run does
| Situation | Operational review | Finance | Regulation |
|---|---|---|---|
| Stable identity | The cell, on the reported layer | The cell | The regulation id; the pair of cell and regulation |
| The same file twice | No change | No change | No change |
| A changed score, class or rationale | The latest wins | The latest wins | The latest wins |
| A dimension omitted | Left out: the earlier value for that dimension is kept | n/a | n/a |
| A cell omitted from the file | Untouched | Untouched | Untouched |
| A cell the map lacks | An unknown-scored-cell findingFindingA difference in the records that needs a decision. It includes its sources and can describe a slow handoff, disputed fact or missing owner. | Printed as not applied; no finding | Printed as not applied; no finding |
| An older report sent after a newer one | Overwrites, in the order received | Overwrites | Overwrites |
| A measured score already on the cell | The reported value lands on its own layer; the measured one stands | n/a | A posture gap closes only when the measured rung is reached |
| Removal | None | None | None: a mapping or a regulation cannot be retired |
| Where it lives | The log | The log | The database only: a rebuild from the log does not restore regulation rows, so restore them from a backup. The catalogue of regulations is shared reference data, not per organisation |
| Findings raised | Do not close by themselves when the condition clears | Same | Same |