# IRIS: a governed SOC teaching model

This original educational example illustrates a small part of the public IRIS architecture. It is not the IRIS product or a production integration. All data and actions are synthetic. There are no network calls, dependencies, credentials, or external side effects.

Use Node.js 24 or later:

```sh
node demo.mjs
node --test governance.test.mjs
```

Follow an event into an immutable action proposal, an explicit approval bound to its exact scope, a mock action, and verification. Duplicate signals and duplicate execution are handled separately. Untrusted event text cannot grant authorization. Expired approvals fail. Uncertain execution is not retried automatically.

The browser walkthrough imports the same governance module used by these tests.

## Deliberate simplifications

- Everything is in memory and the demonstration is synchronous. Restarting loses state. Real workers need durable transactions, concurrency control, tenant isolation, and an outbox or equivalent.
- The reviewer is a fixed fixture string, not authentication. A real approval service must establish trusted identity and verify authorization independently of the agent.
- Evidence references are teaching identifiers. Production systems need immutable provenance, retention controls, access enforcement, and tamper-evident audit storage.
- The adapter immediately returns a mock state. Real response needs bounded permissions, request timeouts, idempotency keys, reconciliation of partial failures, and separately observed outcomes.
- There is no LLM here. Models can suggest hypotheses and plans, but authorization must remain outside their generated text.
- Multi-tenant authorization, policy updates, revocation, cryptographic approval tokens, and operational recovery are design work before production.

A production design should preserve the properties illustrated here while replacing the fixtures with trusted, durable services. Read https://krisdjackson.com/iris/ for the full architecture and implementation stages.

## Reuse

Copyright 2026 Kris Jackson. This starter bundle is licensed under the MIT License; see LICENSE. This permission applies to this starter bundle, not third-party standards or product documentation linked by the site.
