Skip to content

git closes the ISO 23894 treatment loop

RDD loop: commit → measure → treat → re-anchor → commit

The diagram shows the full cycle: each treatment ends in a commit that updates the bundle anchor, and the cycle measures again on that basis.


The risk treatment (ISO 23894 §6.5) is a change: to code, to a parameter, to a dataset. That change, when committed to git, becomes:

  • versioned — identifiable by hash and attributable to an author with a date
  • anchored — the engine signs the evidence bundle with ECDSA-P256+DSSE+in-toto against the triple (code digest, model digest, dataset digest)
  • traceable by clausefroga conformance projects the bundle onto the ISO 23894 and prEN 18228 catalogues

This was the limitation of the previous product: treatments were code changes that had to be collected by hand into the risk register. Making git close the loop — making the git log of the bundle be the treatment register — is what Venturalítica is.


froga reconstruct: replay of the cycle per risk

Section titled “froga reconstruct: replay of the cycle per risk”

froga reconstruct reconstructs the treatment cycle per risk by replaying the git history of the evidence bundle (.froga/bundle.json). The process is deterministic and requires no language model.

For each identified risk, the report traverses five phases:

PhaseWhat froga reconstruct does
① IdentificationLocates the commit that introduced the risk in the AssuranceProgram (git log -S <risk_id>)
② AnalysisRetrieves the likelihood × impact → inherent level from the historical bundle
③ EvaluationChecks the inherent level against the appetite declared in froga.yaml
④ TreatmentReconstructs the empirical arc FAIL → PASS by commit (the applied treatment)
⑤ ResidualClassifies the cycle: CLOSED / OPEN / DISCREPANCY / ACCEPTED (ISO 23894 §6.5)

The output can be written as a signed artifact with --out (.froga/reconstruct.json + .sig).

See the froga CLI reference for flag and artifact details.


In Venturalítica, git blame over the AssuranceProgram — the risk: section of froga.yaml — is the identification audit log: each risk has an author (who identified it), a date (when), and a commit message (why it was added). git log -S "<risk_id>" froga.yaml locates the commit that introduced each risk.

This satisfies the traceability requirement of ISO 23894 §6.4.2 (risk identification) without any additional infrastructure: the git history already contains all the information.


Because each treatment is a versioned change and the evidence bundle is signed against the triple, the cloud (control plane) can assemble the Annex IV (EU AI Act Art. 11) directly from the signed bundle.json. The engine does not emit the Annex IV: it only leaves the signed evidence.

  • Field provenance is declared/derived-bundle/derived-git
  • There is no manual Annex IV drafting step
  • The Annex IV reflects the real state of the system at the time of the last froga run

The mechanism is built and demonstrated in the loan scenario. Completeness is partial: Annex IV §7 and §8 are never pending; §2/§3/§4/§9 can be pending if their input is missing. In loan, with data, controls and measures present, only §3 and §9 would appear pending (see Status & gaps).


ClauseHow Venturalítica covers it
ISO 23894 §6.4.2 — identificationgit blame + human declaration in froga.yaml (the KAG will assist in the future)
ISO 23894 §6.4.3 — analysisLikelihood × impact 5×5, inherent level in the bundle
ISO 23894 §6.4.4 — evaluationInherent level vs appetite; per-criterion blocking in froga conformance
ISO 23894 §6.5 — treatment and residualEmpirical arc FAIL→PASS by commit; cycle classification in froga reconstruct
EU AI Act Art. 9 — risk management systemfroga run gate (blocking controls); continuous monitoring via froga status in CI/CD
EU AI Act Art. 11 — technical documentationThe cloud assembles the Annex IV from the signed bundle (partial)