Skip to content

Ledger and SDK Roles

IGRE separates responsibilities across four actors.

Real systems are the sources of truth the CLI observes or mutates.

They can be remote or local:

  • remote SaaS APIs
  • production databases
  • local SQLite caches
  • local config files
  • generated files

Local does not mean safe. If local state can be overwritten or deleted, mutation belongs in laction.

The domain-specific SDK owns domain truth claims.

It declares:

  • available tools
  • local or remote action targets
  • observation address vocabulary
  • verification support
  • risk anchors
  • rollback classifications
  • intent builders
  • action executors
  • verification executors

The SDK should do more than wrap HTTP. It is the place where domain-specific claims become structured and lintable.

The ledger is the durable protocol record.

It stores:

  • fetch artifacts
  • intent artifacts
  • action runs
  • action steps
  • action units
  • validation and verification results

The ledger must preserve lineage:

action run -> intent -> fetches used to build intent

It may store raw observations, normalized observations, external ids, hashes, or references. IGRE requires durable lineage, not raw payload retention in every case.

The CLI owns user experience and policy.

It decides:

  • command names
  • argument parsing
  • local data paths
  • when local cache updates are included
  • how status is rendered
  • whether it runs embedded or delegates to a service

The CLI should keep action names explicit:

Terminal window
tool action commit-time-entries --intend intend_...
tool laction update-local-cache --intend intend_...

The action name is a human signal and a validation guardrail.