Skip to main content
Audact
See the offer

A rule you can read, and a machine can run.

AudactRules is the published grammar for the rules the engine runs. One file per obligation: what it applies to, when it fires, what it requires, and what evidence it leaves. No code.

It exists because the alternative is a compliance rule that lives in a prompt. A prompt can be versioned, but it is an instruction to the model, not a boundary enforced outside it.

The shape of a rule

One obligation, one file, one version number.

This is the Article 50(1) disclosure obligation, written the way the engine reads it. The rule file carries a version number. The receipt for each governed segment carries the policy version and the configuration version and seal, so the question a year later is not what the policy says now.

AudactRules — sample rule

# AudactRules — sample rule
id: article_50_disclosure
version: 0.1.0
title: EU AI Act Article 50(1) — interaction disclosure
applies_to:
  - channel: voice
  - channel: chat
trigger:
  event: session.started
requires:
  - disclosure_text: localized
  - timing: before_first_ai_turn
  - language: matches_user_locale
evidence:
  hash_algo: sha256
  binding: merkle_root

An illustrative fragment, not the full grammar.

  • applies_to names the channels the rule governs, so one obligation does not need copying per surface.
  • trigger is the event that puts the rule in scope — a session starting, a number being dialled, a tool being called.
  • requires is what must be true for the rule to pass, in terms the engine evaluates against the written rule file rather than against a prompt.
  • evidence says what the receipt has to carry when the rule fires, which is what makes the outcome checkable afterwards.

Checking a rule set

A rule set either passes or it does not.

The point of an executable rule is that you can run it before a caller hears it. The output names the obligation and the file, so a failure is something you can fix rather than interpret.

The shape of the output

$ audact-rules validate disclosure-de.yaml

  pass  Article 50(1) disclosure present
  pass  language de-DE matches the required language for DE
  pass  disclosure precedes the first AI turn
  fail  Art. 50(2) marking of synthetic audio: no assertion found

1 rule failed

An illustration of the output format. The command-line checker and the hosted checker are in development; this page will link to them when there is something to run.

Status

The grammar: the published form of the rules the engine runs
In development
In the platform
Policy and configuration version on each receipt
In controlled testing
On the receipt
Public repository under an open licence
In preparation
CC-BY-SA 4.0 intended
Checker you can run yourself
In development
Command line and hosted

Licence terms are indicative and subject to legal review before the specification is released publicly.

Why it is written to be published

A rule nobody outside can read is a rule nobody outside can check.

Two parties have to be able to read a compliance rule without asking us: the counsel who signs off on the deployment, and the authority who asks about it afterwards. That is a constraint on the format, not a marketing position.

AudactRules is written to be read outside Audact. An open licence and a contribution into the European standardisation track at CEN-CENELEC JTC 21 are in preparation. It is referenced in the response we submitted to the EU AI Office Article 50 consultation on 3 June 2026, which is published here in full — the five positions, unedited.

The public repository is in preparation. Until it is up, the grammar is shown here and walked through in onboarding, and the rule set that governs your calls is exportable from your own tenant.

When the law moves

A rule set has a version, and so does every call it governed.

Article 50 has applied since 2 August 2026, the Commission guidelines of 20 July 2026 refine how it is read, and the Digital Omnibus moved a date for systems that were already on the market. Anything written into a prompt has to be found and rewritten by hand each time that happens.

A versioned rule set changes in one place, and each receipt records the version it was issued under. That is what makes it possible to answer a question about last quarter without arguing about what the policy was at the time.

See a rule do something.

A rule is easiest to judge by the artefact it leaves behind. The receipt explorer walks one chain field by field, with the sample files next to it and no account needed.