AI Act Technical File: Keeping It Current at Every Release
In a made-up case, release 1.5 adds one eval metric and the build blocks it. Why would a stale paragraph stop your release?
IN 30 SECONDS
A technical file kept in CI is one the build regenerates at every release, next to the tests. In this design, a person-owned section past its review date blocks the release, the way a failed test does.
KEY TAKEAWAYS · 3
- In this design, a person-owned block past its review window blocks the release, like a failed test.
- Regenerating the file in CI can help keep its facts current, but it doesn’t meet the documentation duty on its own.
- A passed review gate shows that reviews happened in time, not that the arguments hold.
On this page
One release ships, the next is blocked
IN SHORT The same build ships one release and blocks the next, because one person-owned section went past its review date.
WORDS TO KNOW
- Release tag
- A label in version control, like 1.4.0, that marks the code and versioned settings of one release.
- Manifest
- A small config file that lists the blocks of the technical file and says, for each one, who may write it.
- CI
- Continuous integration: the automated pipeline that builds and tests every change.
The values below are invented. The rule comes from the Manifest A small config file that lists the blocks of the technical file and says, for each one, who may write it. See the glossary: a person-owned block past its review window fails the release, the way a broken test does.
A WORKED EXAMPLE
Illustrative numbers
PASSRelease 1.4.0: a model swap, reviews in date
INPUT
- Tag
- reconciliation-agent@1.4.0
- Change
- model swap and prompt edit
- Metric rationale
- reviewed 30 days ago (window: 90 days)
WHAT HAPPENS
- The build reads the model, prompt and eval results at the tag.
- It fetches the person-owned blocks and checks their review dates.
- All are inside their windows, so it renders the file.
OUTPUT
- Result
- file rendered, release ships
- File
- technical file for 1.4.0, dated
BLOCKEDRelease 1.5.0: a new eval metric, a stale rationale
INPUT
- Tag
- reconciliation-agent@1.5.0
- Change
- a new main eval metric
- Metric rationale
- reviewed 120 days ago (window: 90 days)
WHAT HAPPENS
- The generated blocks render without trouble.
- The metric rationale is 30 days past its window.
- The gate fails the release, the way a broken test does.
OUTPUT
- Result
- release blocked
- Next
- the risk owner re-reviews the metric argument
ITEM GET
A passed gate proves timing, not truth
Coming up next: So where and when does this check run?
Keeping the file current at every release
IN SHORT Put the generator next to the tests, so every release regenerates the file and compares it with the last one.
In this design, the tests and the generator run in CI Continuous integration: the automated pipeline that builds and tests every change. See the glossary on every change, against the same Release tag A label in version control, like 1.4.0, that marks the code and versioned settings of one release. See the glossary. A build step can help keep the facts current. It doesn’t meet the documentation duty on its own: you still check that the file is complete and that the human parts were reviewed.
STEP BY STEP
Step 1. Merge a change. A prompt edit, a model swap or a rebuilt index changes what the system is.
- Merge a change A prompt edit, a model swap or a rebuilt index changes what the system is.
- Regenerate in CI The step that runs the tests renders the file too. Nobody has to remember.
- Diff against the last release A moved generated block is expected. A stale person-owned block fails the build like a broken test.
- Ship with the tag, then loop Once the owner re-reviews, the file ships with its tag: version 1.4 gets version 1.4 documentation. The next change starts the loop again.
IN PLAIN WORDS
The file is rebuilt with the code. A human section nobody re-confirmed stops the release.
Start small and track the upkeep: pulling facts out, outside evidence and reviewed parts all take time. A rendered file is still only a picture of the system. It helps when you can check its sources, its release and its review history.
I’d rather render the file badly at first and fix the template than write it in a rush, from memory, about a version I no longer run.
The eval numbers in the generated half come from the same run as the eval suite that gates a release: that run gives both the release verdict and the file’s eval results.
# annex-iv.yaml: the technical file as a build artifact (illustrative values)
release_tag: reconciliation-agent@1.4.0
blocks:
- { id: system_description, point: 1, source: generated }
- { id: build_and_architecture, point: 2, source: generated }
- { id: design_rationale, point: 2, source: human, owner: tech-lead, review_every_days: 90 }
- { id: monitoring_and_control, point: 3, source: generated }
- { id: metrics_rationale, point: 4, source: human, owner: risk-owner, review_every_days: 90 }
- { id: risk_management, point: 5, source: human, owner: risk-owner, review_every_days: 90 }
- { id: lifecycle_changes, point: 6, source: generated }
- { id: standards_applied, point: 7, source: human, owner: tech-lead, review_every_days: 180 }
- { id: declaration_of_conformity, point: 8, source: human, owner: compliance }
- { id: post_market_evaluation, point: 9, source: human, owner: risk-owner, review_every_days: 90 } # incl. Art. 72(3) plan
gate:
block_release_if:
- a human block is past its review_every_days
- a generated block cannot be read at release_tag
- release_tag is missing
Four blocks the build produces, six a person owns; point 2 takes one of each. The review windows are illustrative. Teams tend to skip the gate at the bottom: with it, a stale human section fails the release.
FAQ
Partly. Automate repeatable proof, check what gets pulled out, and assemble approved text; some proof lives outside the repo. People must own and sign off the reasons, the metric choices and the risk calls, and review them when those change.
STAGE CLEAR
What you now know
- A stale review on a person-owned section fails the release the way a broken test does.
- Regenerating the file in CI can help keep its facts current; people still check that it is complete.
Check yourself
Tap or click a question to see the answer.
Illustrative case: release 1.6 only edits a prompt, and every review is in date. What does the build do?
It regenerates the facts, records the prompt change and renders the file, so the release can ship. People still review the file.
Former CTO of Integra. Named author (1 of 5) of ERC-3643, first author of ERC-6960, co-author of ERC-7410, and co-author of ERC-8203, which is still a draft. Building production AI and regulated Web3 systems.
Have a project to ship or a role to fill?
Discuss your project or roleFollow the engineering notes
Get new articles on production AI and smart contracts by email.