Back to F-ACT
Reference & test kit

A real place to start

Standards are easier to trust when you can run something. This is a minimal, honest starting point for F-ACT: an example governance envelope that answers the five GUARD questions, a self-test you can walk through by hand, an interactive checker and envelope builder that run in your browser, and a validator you can paste into a project. Everything here checks the GUARD 1 · Declared floor for real; the higher tiers can be declared but need runtime evidence to be proven, and that tooling is on the roadmap.

Try it in your browser

Paste a governance envelope, upload a .json file, or load the worked example. The check runs entirely in your browser — nothing is sent anywhere.

Example governance envelope

A single JSON document that answers all five questions for one agent. It is an example, not a certificate — the shape is what matters.

What the higher tiers add

GUARD 1 · Declared is verifiable from the document itself. GUARD 2 · Enforced and GUARD 3 · Provable are claims about what happens when the agent acts — so an envelope can only declare them and point at where the runtime evidence lives. The checker labels those tiers accordingly.

GUARD 2 · Enforced

  • • enforcement.mode is “preventive” — policy is checked before the action runs.
  • • enforcement.checkedBeforeExecution is true and denyByDefault is true.
  • • enforcement.policyDecisionPoint names where the decision is made.
  • • enforcement.decisionLogEndpoint points to the runtime record of decisions.

GUARD 3 · Provable

  • • provenance.evidenceType names a tamper-evident format (e.g. signed hash chain).
  • • provenance.tamperEvident is true and a verificationEndpoint is given.
  • • provenance.revocation.proofType and statusEndpoint let a third party check revocation.
Self-test — one check per dimension

Grant

Does the envelope name a human principal the agent’s authority resolves to?

Pass when: grant.traceableToNamedHuman is true and a real principal is named.

Usage

Is there an explicit allow-list, with everything else denied by default?

Pass when: usage.allowed lists permitted actions and usage.defaultDeny is true.

Data

Is there a lawful basis and a closed list of permitted destinations?

Pass when: data.lawfulBasis is set and data.egressOutsideBoundary is false.

Audit

Are consequential actions recorded in a tamper-evident form?

Pass when: audit.recordsConsequentialActions and audit.tamperEvident are both true.

Revocation

Can authority be withdrawn in real time and proven withdrawn by a third party?

Pass when: revocation.revocable, revocation.realTime and revocation.thirdPartyVerifiable are true.

Minimal validator (no dependencies)

The same checks as the browser tool, as a script. Download it or paste it into a file and run it against an envelope. It confirms all five questions are answered at the GUARD 1 · Declared floor. It checks the document only — it cannot prove enforcement is real, which is exactly why GUARD 2 and GUARD 3 need more than a file.

// fact-check.js — minimal L1 (Declared) self-check, no dependencies
// Usage: node fact-check.js envelope.json
const fs = require('fs');
const env = JSON.parse(fs.readFileSync(process.argv[2], 'utf8'));
const a = env.guard || {};

const checks = {
  Grant: a.grant && a.grant.traceableToNamedHuman === true
    && typeof a.grant.principal === 'string',
  Usage: a.usage && Array.isArray(a.usage.allowed)
    && a.usage.defaultDeny === true,
  Data: a.data && typeof a.data.lawfulBasis === 'string'
    && a.data.egressOutsideBoundary === false,
  Audit: a.audit && a.audit.recordsConsequentialActions === true
    && a.audit.tamperEvident === true,
  Revocation: a.revocation && a.revocation.revocable === true
    && a.revocation.realTime === true
    && a.revocation.thirdPartyVerifiable === true,
};

let ok = true;
for (const [dim, pass] of Object.entries(checks)) {
  console.log((pass ? 'PASS ' : 'FAIL ') + dim);
  if (!pass) ok = false;
}
console.log(ok ? '\nDeclared (L1): all five answered.'
              : '\nDeclared (L1): incomplete — see FAIL lines above.');
process.exit(ok ? 0 : 1);

What this kit does and does not prove

This kit checks that an envelope answers the five questions — the GUARD 1 · Declared tier. It does not prove GUARD 2 · Enforced or GUARD 3 · Provable, because those are claims about what happens at the moment an agent acts, not about a document. A full conformance suite for the higher tiers is planned and tracked on the roadmap. Being straight about that boundary is part of the standard being honest.

Read the standard behind the kit

The five questions and four tiers in full.

Open the standard