Skip to content
aruintelligencePublic

About

ĀML: inspectable policy and evidence for AI interfaces and agent actions. Try the live labs, reproduce the 13-case challenge, and wire a host-owned tool boundary.

Topics

Resources

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

1,363 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ĀML: AI proposes. The host decides. An illustrative agent message to an outside destination is blocked by an exact host policy before dispatch.

ĀML™ — ĀRU Meaning Language™

The accountability layer between AI and the human interface.

CI Proof Stable Preview License: MIT

AI can propose an interface. ĀML can make its meaning, policy, authority, and evidence inspectable before and after rendering.

HTML tells the browser what to display. ĀML tells the system why it deserves to be displayed.

ĀML is a working research prototype for meaning-native, policy-aware, accountable AI interfaces. It can sit between machine intent and human-facing output as an AI Interface Firewall™ without requiring teams to replace HTML, React, or existing frontend stacks.

Start with one decision

Enter the interactive first run → Change an agent's destination or a proposed interface value. The action path runs the project's browser planner, computes the canonical proposal SHA-256, and checks it against a published project vector. Then open the linked lab or reproduce locally. It never dispatches a tool.

Your goal First useful result
Build Shape a browser gate, share the exact scenario, and download runnable HTML, or start a guarded agent tool with a simulated local callback and host wiring guide.
Write ĀML Edit a program and inspect the browser compiler. Change one declared value, compare the decision, and share the source link.
Verify Reproduce a decision in 10 minutes; preserve the commit, commands, output, and any failure.
Challenge Run one action-boundary case, then all public and seeded cases against your own adapter.

ĀML's project-authored demonstrations are engineering evidence, not outside validation. The interface scores are declared prototype inputs, not objective measures of a person.

Open the research atlas: labs, counterexamples, and field observations

Explore the next boundary: Try the Action Boundary Lab — change an agent's intended tool call and see an exact policy decision, digest, stale simulated approval, and uncertain outcome. Try a one-use grant replay: a second attempt with the same local grant blocks before a callback. Explore the visual 13-case challenge, read its adapter contract, or read the pilot and its six published vectors. The browser rehearsal and repository self-test are project-authored, with no live tool access.

Design your own boundary: Open the Action Boundary Studio. Edit the proposed action and the host policy, inspect the live plan and canonical digest, then download a JSON calculation bundle. node scripts/verify-action-studio-bundle.mjs examples/action-studio/changed-destination.json rechecks a published example against the policy included in that bundle; the guide explains the limits. The verifier checks consistency, not policy ownership or a real approval.

Action Boundary Studio: editable proposal and policy produce a visible exact-rule decision and portable calculation bundle.

Bind the real target: Open the seven-case Target Binding Lab. A proposal can declare team@example.test as its approved resource while arguments.to names outside@example.test. Under an intentionally unreviewed exact rule, the reference reaches one simulated callback with the outside recipient. The opt-in host-owned wrapper derives the recipient from frozen tool arguments and blocks the mismatch before approval or callback. node scripts/build-target-binding-report.mjs --check regenerates the machine report; the integration guide explains how the resolver must match a real tool's schema. No message is sent. An aligned target does not authorize changed content.

A declared resource and actual tool recipient disagree; a host target binding check reduces the local simulated callback count from one to zero.

The next destination can be invisible: Inspect the seven-case Recipient Manifest Lab. The initial target-binding example resolves only arguments.to. Add bcc: ["outside@example.test"] while to remains approved and that example still reaches one simulated callback carrying the BCC field. The new strict mail adapter derives one exact resource from the complete to/cc/bcc manifest; the same unapproved addition reaches zero callbacks. node scripts/build-mail-target-report.mjs --check verifies the report. This is a bounded, project-authored mail-tool schema, not a general email or consent guarantee; read the integration limits.

An approved To address and unapproved BCC reach one callback with a to-only mapper and zero with a complete recipient manifest.

Try your own recipient shape: Open the local Recipient Workbench. Edit intended and proposed JSON to compare complete To/CC/BCC manifests and exact resource keys. It runs in the browser with no mail service; the shared parser is copied byte-for-byte to the site and checked against canonical JSON and Web Crypto digests in node test/action-boundary-mail-workbench.test.js. A matching target is only a destination comparison, not approval of content or delivery.

Wire the boundary into a mail function tool: Inspect the seven-case integration lab. A To-only host mapper can be sufficient for a To-only callback, but an expanded callback that accepts BCC can reach one simulated callback with an unapproved BCC. The complete-recipient wrapper validates the narrow mail schema, binds the full recipient resource, and reaches zero callbacks for that addition under the same intended policy. node scripts/build-mail-tool-report.mjs --check rechecks the report; the integration guide names host and provider responsibilities. This is a project-authored local comparison, not a live mail service or authenticated approval.

A BCC-capable function tool reaches one local callback with a To-only mapper and zero with the complete mail adapter.

Check the provider request, not just the tool input: Explore the eight-case Prepared Mail Lab. A host can append a BCC while constructing a provider request after the complete-recipient adapter checked the input; the local provider callback then runs once. The opt-in prepared-request adapter constructs and validates that request before policy and approval, so the same host-added BCC reaches zero callbacks under the intended rule. An original-body approval digest also fails if the host changes the body during preparation. node scripts/build-prepared-mail-report.mjs --check reproduces the machine report; integration instructions state the sender and provider assumptions. The comparison is project-authored and sends no mail.

The prepared mail request exposes a host-added BCC to policy before dispatch, changing the local provider callback count from one to zero.

A real screen exposes a second rule: Inspect the contact-continuity field study. Two hashed production screenshots of a Portland security page show a banner, navigation phone, and fixed contact dock. A declared ĀML candidate suppresses one repeated number and keeps a call and email path in both observed desktop states. A deliberate over-suppression leaves zero visible call paths after scrolling; a separate continuity guard rejects it. Source observations and label provenance, machine report, and node scripts/build-field-contact-continuity-report.mjs --check make the result inspectable. The live site was not changed; no visitor outcome was measured.

Preserved production screenshot of a Portland security page with visible contact routes in the banner, navigation, and dock.

Build against one case, then all 13: The visual implementer loop now gives each published fixture a focused command. node scripts/run-action-boundary-challenge.mjs --case changed-destination -- ../my-adapter/adapter reports precise mismatched fields; a single-case PASS is labeled partial. Drop --case changed-destination for the full compatibility run. Your adapter and its evidence should live in your own repository; the project reference adapter is a self-test, not an outside witness.

Make an outside run visible: node scripts/run-action-boundary-challenge.mjs --html-out ./my-boundary-run.html -- ../my-adapter/adapter now creates a self-contained offline visual result alongside the unchanged JSON stdout. The HTML shows each observed PASS/FAIL, diagnostics, scope, and contract hashes without fetching assets or replacing an existing file. Inspect the project-owned 13-case example to see the format, then run your own adapter. The example is explicitly labeled a reference self-test; neither it nor a caller-generated report automatically establishes independent validation.

See the result inside GitHub: The Action for outside adapters now posts a per-case run summary and uploads the actual JSON and offline HTML reports as a workflow artifact, even when cases fail. It then fails the step for a failed challenge. Copy the caller workflow and pin the Action to a reviewed commit for reproducibility. A GitHub artifact is inspectable run evidence; it does not establish who wrote the adapter or whether its implementation is independent.

A perfect fixed score can be a false signal: A deliberately canned adapter copies the 13 public expected answers and passes 13/13 without implementing the action boundary. The seeded counterfactual lab shows the same adapter at 13/19 when six proposal and policy transformations are added; the project reference executes 19/19 for that seed. The GitHub Action now includes fresh seeded probes, records the seed in its report and summary, and still accepts FAIL and MIXED. This is project-authored resistance to one form of answer memorization, not proof of independent verification or production safety.

A visual report shows thirteen project-reference challenge cases passing, with a clear self-test label and case-by-case evidence.

Where does an exact rule stop? Explore the eight-case Policy X-ray: with an unreviewed rule for send_message + send + team@example.test, a changed message body still reaches one simulated callback. A host decision bound to the original proposal digest blocks that changed body before dispatch. The machine report is regenerated by node scripts/build-action-policy-scope-report.mjs --check; integration guidance explains when this distinction matters. No message is sent and the fixed host digest is not human approval.

The same destination can carry a different message under an unreviewed action rule; a fixed original digest blocks the changed body in a local simulation.

Illustrated local action boundary: an agent proposes sending to an outside destination; the host policy blocks the call before dispatch.

Wire one agent tool: Follow the function-tool quickstart to wrap a host-owned callback with exact policy matching, approval binding, and a dispatch receipt. Its runnable local demo simulates execution; the host must supply real authorization and tool mapping.

Try the A2UI v1.0 function gate: a catalog-authorized agent function still needs an exact host action rule. Nine executable local cases show the catalog stop, destination switch, digest approval, frozen arguments, and uncertain callback. Run node pilots/action-boundary/a2ui-function-demo.mjs, then read the integration guide. This is a project-authored host-side example, not a full A2UI renderer or external validation.

An A2UI catalog-authorized agent function meets an AML exact-action gate; a changed destination reaches zero callbacks.

One ID must mean one invocation: Explore the pinned A2UI replay counterexample. The prior bridge called the simulated tool twice for the same functionCallId in one host session. The corrected bridge requires a host-owned atomic claim before approval or dispatch; a repeated ID reaches zero additional callbacks. Six historical/current cases, including a concurrent replay and separate-session control, are regenerated in CI. A2UI v1.0 remains a candidate specification, and the included claim store works in one Node process only.

Across workers, share the claim: The two-process replay lab runs the actual function gate in separate Node processes. Process-local claims permit two simulated callbacks for the same ID; a host-owned, private filesystem claim permits one, including after a worker restart. A separate-session control still permits two. The machine report is regenerated by node scripts/build-a2ui-worker-report.mjs --check in CI. This is a local filesystem pilot with simulated approval and callback, not a network store, human consent, or delivery proof.

Bring the action boundary to MCP: The eight-case MCP tool lab puts a host rule before a Client.callTool-shaped callback. A deliberately flawed client trusts readOnlyHint: true and invokes a simulated outside destination once; the AML wrapper checks the host-bound server/tool, schema, destination, and approval, so that case reaches zero callbacks. Returned tool errors and uncertain transports retain distinct statuses. Use the narrow client-side adapter; the machine report is regenerated in CI. This is project-authored in-memory execution, not a connected MCP server or external adoption.

Connected MCP pilot: Explore the stdio handler trace. An official SDK v2 client connects to a child MCP server and lists a misleading readOnlyHint: true tool. An intentionally unsafe direct call to an outside destination reaches its local handler once; the same proposal through the ĀML gate reaches it zero times. Six asserted connected cases, the machine report, and reproduction steps are checked in CI. This fixture writes a temporary local audit line; it sends nothing externally.

A repeated A2UI functionCallId reached two local callbacks before a host invocation claim and one after.

One local approval grant permits one simulated callback. Reusing it blocks before a second callback.

Two processes, one claim: Inspect the recorded race and run node pilots/action-boundary/file-grant-race-demo.mjs. Separate Node workers share a trusted local directory and compete to create an exclusive claim marker. The project-authored run records one simulated callback and one blocked replay. It is a local-filesystem prototype, not authenticated approval or a multi-machine production store.

Two local workers use one grant: one claim reaches a simulated callback, the replay blocks.

Two code paths, one published contract: Explore the JavaScript ↔ Python comparison. Both project-maintained implementations produce exact matching plans, receipts, callback counts, and frozen proposals on all 13 action-boundary cases. Run node scripts/build-action-cross-runtime-report.mjs --check to compare a fresh run with the visual page's checked-in machine report. This is cross-language engineering evidence for a limited JSON subset, not an independent external witness.

JavaScript and Python match on 13 published action-boundary cases; project-maintained evidence only.

After a timeout, no blind retry: Explore the dispatch ledger. A host-generated operation ID is bound to the exact proposal and claimed before a simulated callback. A two-process race yields one callback; a crash or callback error remains unknown, while a changed payload cannot reuse the ID. The six-scenario report is regenerated in CI. This is a local, project-maintained fail-closed pilot—not a distributed exactly-once or delivery guarantee.

A host operation ID is claimed before a simulated callback; a second worker is suppressed and uncertain results are not blindly retried.

A counterexample made the contract stronger: Inspect the key-order lab. Numeric-looking JSON keys exposed a real proposal-hash disagreement between the project's JavaScript and Python code paths. The Python wire order is fixed without changing existing JavaScript digests. A deterministic, deliberately adversarial 519-case regression records 439 mismatches under the prior Python ordering and zero after the fix; the seven selected examples show exact old and new bytes. This remains project-maintained evidence for a restricted JSON subset.

One action produced two hashes when Python sorted numeric-looking keys differently from JavaScript; the fixed Python path now matches.

A spent grant must stay spent: Watch the local replay counterexample. A misconfigured writable directory let the former one-use file store accept the same test grant twice after its claim directory was replaced. The store now rejects weak ownership, permissions, and symlinks before issuance or consumption. Four before/after scenarios run the pinned historical module and corrected module in CI. This project-authored POSIX simulation does not involve a second operating-system user or real tool side effect.

A writable local grant directory permitted two claims from one approval; private-path checks now reject it.

Prove the core claim in 60 seconds

Open this exact state: attention 5 / restoration 1 → SUPPRESS.

Now change restoration from 1 to 5: attention 5 / restoration 5 → ALLOW.

Prototype rule:

render_allowed = restoration_value >= attention_cost

The attention/restoration scores are declared or model-supplied prototype inputs. They are not claimed objective measurements of cognition, wellbeing, morality, or clinical state.

If the behavior does not reproduce, that is useful evidence. Please publish PASS / FAIL / MIXED with enough detail for someone else to repeat your result.

Field experiments — real customer-facing websites

ĀRU Intelligence is actively applying ĀML™ to real customer-facing web properties, including a multi-site Security First Alarm pilot. These are project-authored field experiments, not synthetic mockups and not independent validation.

The current work preserves pre-change checkpoints, identifies exact interface elements under test, records label provenance and declared policy inputs, and is designed to publish before/after evidence and decision receipts as each site experiment is completed.

Important boundary: site-specific phone numbers, SMS routing, email addresses, and business-contact rules are preserved as local ground truth. The experiment evaluates presentation and repetition, not arbitrary normalization of contact data.

The attention/restoration values used in these pilots are declared or model-supplied prototype inputs. They are not claimed objective measurements of cognition, wellbeing, psychology, neurological state, morality, or clinical outcome.

Do not endorse ĀML first. Verify it first.

Reproduce it locally

git clone https://github.com/aruintelligence/aml-core.git
cd aml-core
npm install
npm test

For the smallest deterministic reproduction, start with:

Project-authored tests are useful engineering evidence, but they do not count as independent external verification.

What ĀML is trying to make explicit

A generated interface usually has several hidden questions behind it:

  1. What did the system intend to show?
  2. Which policy allowed or blocked it?
  3. What authority or consent applied?
  4. What evidence explains the decision?
  5. Can another implementation reproduce the result?

ĀML turns those questions into inspectable data and deterministic decisions that can travel with the interface.

flowchart LR
    A[AI / app intent] --> B[ĀML Interface Firewall]
    B --> C[Meaning + policy]
    C --> D[Consent / privacy / accessibility / attention]
    D --> E[ALLOW or SUPPRESS]
    E --> F[HTML / React / other renderer]
    E --> G[Receipt + provenance + audit evidence]
    G --> H[Independent verification]
Loading

Three ways to use the project

1. Understand it

Evaluate it with a reproducible enterprise pilot

Run the 30-minute enterprise pilot to generate a decision report with full receipts, declared fixture hashes, three asserted outcomes, deterministic replay, and a tamper-rejection check. The CI workflow saves the report for review. This is project-authored evidence, with explicit deployment and claim boundaries.

2. Put it in front of an existing interface

Zero-install custom element:

<script type="module" src="https://aruintelligence.github.io/aml-core/aml-gate.js"></script>

<aml-gate
  purpose="Create urgency"
  attention-cost="5"
  restoration-value="1">
  <button>Act now</button>
</aml-gate>

Or keep the existing DOM and add three attributes:

<script type="module" src="https://aruintelligence.github.io/aml-core/aml-dom-gate.js"></script>

<div
  data-aml-purpose="Create urgency"
  data-aml-attention-cost="5"
  data-aml-restoration-value="1">
  Offer expires soon.
</div>

These browser bridges are intentionally narrow adoption surfaces. They do not claim to contain the full runtime policy, consent, privacy, accessibility, receipt, or trust stack.

3. Inspect the decision

The web gave developers View Source. ĀML explores View Meaning™.

import { viewMeaning } from "./index.js";
const report = viewMeaning(receipt);

A View Meaning report can expose declared purpose, policy/profile, consent/privacy/accessibility context, attention/restoration inputs, ALLOW/SUPPRESS outcome, rationale, provenance, and receipt integrity.

What exists today

The repository currently includes:

  • lexer/parser, AST, Abstract Meaning Tree, compiler, runtime, and CLI
  • semantic and policy diffs
  • pluggable policies and multi-policy consensus
  • consent, privacy, accessibility, and attention controls
  • execution receipts and Ed25519 signatures
  • SHA-256 audit streams, provenance graphs, and Merkle inclusion proofs
  • Proof-Carrying Interface™ manifests
  • capability negotiation, policy passports, replay protection, delegation, threshold authorization, transparency logs, and revocation registries
  • browser bridges, React-compatible adapters, starters, an HTTP service, Meaning Gate™ GitHub Action, and View Meaning™ tooling
  • RFCs, schemas, golden vectors, conformance fixtures, benchmarking, interoperability, and evidence-reporting surfaces

See API.md, ECOSYSTEM.md, rfcs/README.md, and STANDARDIZATION.md.

Evidence before adoption claims

ĀML separates project-controlled evidence from independent evidence.

Level Meaning
E0 concept / proposal
E1 project-authored demonstration
E2 automated repository verification
E3 independent reproduction
E4 independent implementation
E5 external pilot evidence
E6 production deployment evidence
E7 multi-party ecosystem evidence

The project should not describe internal tests, project-maintained reference implementations, clone counts, or outreach activity as independent adoption.

A failure, bypass, contradictory implementation, or MIXED result can be more valuable than praise if it reveals where the contract is weak.

Status

  • v1.3.0 remains the stable package/CLI/capability contract.
  • v1.4.0-rc.2 is the current GitHub prerelease snapshot of the broader architecture on main.
  • ĀML is not a ratified industry or Internet standard.
  • No claim is made here of universal adoption, standards-body approval, third-party certification, regulatory approval, scientific validation, or production suitability for every environment.

Security and production boundary

The reference implementation covers parser/compiler behavior, policy bypasses, receipts/signatures, wire replay, capability escalation, revocation, official trust-root verification, HTTP behavior, and browser-extension permission/privacy boundaries.

It does not replace production authentication, authorization, TLS, rate limiting, secure secret management, application-specific threat modeling, WCAG conformance testing, or independent security review.

Open technology. Controlled official identity.

The covered software is available under the MIT License. Official ĀML™ / ĀRU™ branding, logos, compatibility branding, certification-style identity, endorsement, OEM/co-branding, and related reserved brand rights are separate from the software license.

Technical conformance is independently testable. It does not automatically grant official ĀRU authorization, endorsement, partnership, certification, or trademark rights.

For the current rights and commercialization architecture, start here:

Current production public trust root:

Production private signing material is intentionally kept outside GitHub.

Commercial, OEM, enterprise, and strategic inquiries: Office@aruintelligence.com

The question

When AI generates an interface, can the system prove what it meant, what authority it had, which policies governed it, and why the human saw the result?

Created by Daniel Jacob Read IV and stewarded by ĀRU Intelligence Inc.™.

ĀML™, ĀRU Meaning Language™, AI Interface Firewall™, View Meaning™, Meaning Gate™, EthicalRenderGate™, Meaning-Native Computing™, Proof-Carrying Interface™, and named ĀML compatibility marks are claimed marks. Registration status varies; do not use ® unless a specific mark is actually registered for the relevant goods/services.

About

ĀML: inspectable policy and evidence for AI interfaces and agent actions. Try the live labs, reproduce the 13-case challenge, and wire a host-owned tool boundary.

Topics

Resources

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages