Skip to main content

fabric

Since v1.2.0 · Top-level declaration

Grammar

fabric <Name> {
provider: <ident> # required — cloud slug (aws | gcp | azure | onprem | ...)
region: "<region>" # optional — geographic region tag
zones: <integer> # optional — availability-zone fan-out
ephemeral: <true|false> # optional — single-run substrate
shield: <ShieldRef> # optional — fabric-level defence layer
}

fabric declares the cloud substrate a manifest deploys onto: which provider, which region, how many zones, whether the infrastructure is ephemeral (torn down at run-end) or persistent. A manifest references exactly one fabric; the fabric carries the substrate-level shield that gates all underlying resource acquisitions.

This is where the language meets the cloud. Fabrics let an AXON program move between AWS, GCP, Azure, and on-prem without changing the cognitive layer — only the fabric declaration changes.

Surface

fabric is a top-level declaration. It is not nested inside a manifest.

fabric ClinicalCloud {
provider: aws
region: "us-east-1"
zones: 3
ephemeral: false
shield: PHIShield
}

Fields

provider: (required)

A single identifier naming the cloud provider. Open catalogue at the parser level — the runtime decides which providers are deployable. Common slugs: aws, gcp, azure, onprem, local, kubernetes.

region: (optional)

A string literal containing the provider-specific region tag ("us-east-1", "eu-west-2", "southamerica-east1", "westeurope"). Compliance shields cross-validate this against their declared geographic constraints — e.g. a GDPR-tagged manifest deployed to a non-EU region is rejected.

zones: (optional)

A non-negative integer literal. Number of availability zones the substrate spans. zones: 1 is single-AZ (lower cost, lower resilience); zones: 3 is the production standard for fault-tolerant deployments.

ephemeral: (optional)

A boolean literal. true ⇒ the substrate is torn down at run-end (test environments, CI lanes, one-shot scratch deployments). false ⇒ the substrate persists across runs (the production default; absence implies false).

shield: (optional)

A single identifier referencing a declared shield. The fabric-level shield wraps every resource acquisition under this substrate — defence-in-depth alongside per-resource shields.

Runtime behaviour

fabric lowers to a FabricDefinition IR node. At deploy time, the runtime resolves the provider slug against its substrate registry and validates the region + zones combination against the provider's available topology. Provider mismatches (provider: aws region: "eastus") are rejected with a structured axon-E041 region/provider mismatch diagnostic.

Compliance propagation: every audit row emitted under a fabric carries (fabric.provider, fabric.region) so cross-jurisdiction data movement is auditable.

What this primitive is NOT

  • Not a resource. A resource is one external dependency; a fabric is the substrate that hosts many resources.
  • Not a manifest. A manifest bundles resources + a fabric + compliance tags. The fabric is one of its three ingredients.
  • Not infrastructure-as-code. AXON fabric declarations do NOT provision infrastructure — they describe what the runtime expects to find. Provisioning happens upstream (Terraform, Pulumi, manual ops). The fabric makes expectations typed + auditable.

See also

  • axon://primitives/manifest — consumes the fabric.
  • axon://primitives/resource — sits atop the fabric.
  • axon://primitives/shield — defence wrapper.
  • axon://compliance/gdpr — example of region-locked compliance flowing through the fabric layer.