PREVIEW -- This crosswalk ships with SWT3 SDK v0.7.8

Who this is for: ML engineers deploying IBM Granite models locally or on watsonx.ai. Compliance leads governing open-weight models under EU AI Act, SR 11-7, or NIST AI RMF. Teams evaluating Granite for air-gapped or sovereign environments.

Contents

1. Why Open Weights Need Independent Witnessing 2. Granite Model Inventory 3. Deployment Path Matrix 4. Procedure Evidence Cards 5. Coverage Matrix 6. SDK Quick Start 7. Cross-References

1. Why Open Weights Need Independent Witnessing

You download granite-4.2-30b.gguf. From that moment, you are the deployer under EU AI Act Art. 28. IBM's governance umbrella ended at the download. IBM cannot attest to what you did with those weights after they left their infrastructure.

IBM provides excellent governance tooling: watsonx.governance captures model metadata, FactSheets document lineage, Granite Guardian classifies safety risks. These tools record IBM's view of IBM's platform. But they cannot answer the questions auditors ask about your deployment:

SWT3 witnesses what actually happened at inference time. It does not replace watsonx.governance. It completes the evidentiary chain by adding the independent, cryptographic attestation layer that no vendor can provide about your own infrastructure. Together, IBM's tools and SWT3 give auditors the full picture. Apart, each has a blind spot.

2. Granite Model Inventory

Model FamilyArchitectureSizesContextLicenseDeployment Formats
Granite 4.2Dense transformer3B, 8B, 30B128KApache 2.0watsonx.ai, Ollama, vLLM, GGUF, SGLang
Granite 4.1 HybridMamba-2 + Transformer MoE1B-32B (9B active)128KApache 2.0watsonx.ai, Ollama, vLLM, GGUF
Granite Guardian 4.1Dense classifier8B128KApache 2.0watsonx.ai, Ollama, vLLM
Granite Guardian HAPHAP classifier38M, 125MN/AApache 2.0CPU-deployable, any runtime
Granite CodeDense transformer3B, 8B, 20B, 34B128KApache 2.0watsonx.ai, Ollama, vLLM, GGUF

All Granite models are released under Apache 2.0, meaning the deployer assumes full governance responsibility upon download. The SWT3 granite-sovereign CLI profile is designed specifically for this scenario.

3. Deployment Path Matrix

Which SWT3 adapter you use depends on how you serve Granite:

DeploymentSWT3 AdapterCLI ProfileAir-Gap Ready
watsonx.ai (cloud)wrap_granite / wrapGraniteDefault or customNo (cloud API)
Ollama (local)Existing OpenAI adapter (auto-detected)granite-sovereignYes
vLLM (self-hosted)wrap_vllm / wrapVllmgranite-sovereignYes
Docker / GGUF directDepends on serving layergranite-sovereignYes

Key point: If you run Granite via Ollama or vLLM, no new SDK code is needed. The existing OpenAI and vLLM adapters handle it automatically. The dedicated wrap_granite adapter is for the native ibm-watsonx-ai Python SDK only.

4. Procedure Evidence Cards

AI-INF.1 -- Inference Provenance

Every Inference Gets a Tamper-Evident Anchor

Each call to Granite produces a witness anchor containing the model identifier, prompt hash, response hash, latency, and token counts. No plaintext is stored. IBM's FactSheets record model metadata at deployment time. SWT3 witnesses what the model actually produced at inference time.

Assessor Verification

Query the witness ledger for AI-INF.1 anchors filtered by agent_id. Verify that anchor count aligns with expected inference volume. Compare model_id in anchors against the declared deployment manifest.

AI-MDL.5 -- Model Weight Integrity

Hash the Weights Before Loading

Open-weight models are distributed as files. Between IBM's release and your GPU, the weights pass through download mirrors, caches, and storage layers. SWT3's witness_model_weights() hashes the weight file at load time and mints an anchor proving the exact bytes that entered your inference pipeline. IBM publishes model cards. SWT3 witnesses that the weights you loaded match the published hash at the moment of inference.

Assessor Verification

Compare the weight hash in the AI-MDL.5 anchor against the SHA-256 published on Hugging Face or IBM's model card. A mismatch indicates the weights were modified after download.

AI-MDL.6 -- Adapter Stack Provenance

LoRA and QLoRA Fine-Tuning Evidence

Granite's Apache 2.0 license enables fine-tuning. When you apply LoRA or QLoRA adapters, the effective model changes. SWT3's witness_adapter_stack() records which adapters were active during inference, their checksums, and the merge strategy. IBM's governance stops at the base model. SWT3 witnesses the full stack that actually ran.

Assessor Verification

Query AI-MDL.6 anchors to verify adapter consistency across deployment windows. Look for unexpected adapter changes between audits.

AI-MDL.7 -- Quantization Attestation

Track Which Quantization Variant Ran

Granite 4.2 ships in multiple quantization formats: FP8, MXFP4, NVFP4, Q4_K_M, Q8_0. Each trades accuracy for speed differently. SWT3's witness_quantization() records which variant was active during inference. The model card says "Granite 4.2 30B." SWT3 witnesses whether you ran Q4_K_M or FP8, which matters for accuracy-sensitive workloads.

Assessor Verification

Verify AI-MDL.7 anchors show the quantization variant that matches the deployment specification. Flag any drift from the declared variant.

AI-GRD.1 -- Guardrail Enforcement

Granite Guardian Integration

Granite Guardian is a separate model that classifies safety risks in prompts and responses. When you run Guardian alongside Granite, call witness.witness_guardrail() to record each Guardian verdict as an anchor. The granite-sovereign profile lists AI-GRD.1 as a required procedure, meaning missing Guardian evidence is flagged automatically. IBM built Guardian. SWT3 witnesses that you actually ran it.

Assessor Verification

Query AI-GRD.1 anchors. Verify the guardrail name is "Granite Guardian" and that anchor frequency matches AI-INF.1 inference anchors (every inference should have a corresponding Guardian check).

AI-GRD.2 -- Content Safety Filter

HAP Classifier Evidence

Granite Guardian HAP (Hate, Abuse, Profanity) models are lightweight classifiers that can run on CPU alongside any Granite deployment. When deployed as a content filter, each HAP classification result can be witnessed as a separate AI-GRD.2 anchor. IBM trained the HAP classifier on curated datasets. SWT3 witnesses that it was active in your pipeline.

Assessor Verification

Verify AI-GRD.2 anchors exist for content-sensitive deployments. Check that HAP classification was applied to both prompts and responses.

AI-SEC.1 -- Adversarial Detection

Prompt Injection Detection via Guardian

Granite Guardian 4.1 includes prompt injection detection as a built-in risk category. When Guardian flags a prompt injection attempt, witness the detection result with witness_adversarial_detection(). IBM built the detector. SWT3 records every detection event as tamper-evident evidence.

Assessor Verification

Query AI-SEC.1 anchors for detection events. Verify that the detection method references Granite Guardian and that flagged inputs were handled according to policy.

AI-HW.1 -- Hardware Attestation

GPU and TPM Inventory

The granite-sovereign profile requires hardware attestation. Call witness.witnessHardware() at service startup to record which GPUs executed Granite inference. For sovereign deployments, TPM 2.0 attestation binds the evidence chain to specific physical hardware. IBM cannot attest to your hardware. SWT3 witnesses it.

Assessor Verification

Verify AI-HW.1 anchors list expected GPU topology. For sovereign deployments, confirm TPM attestation is present and PCR values match the declared baseline.

AI-LIC.1 -- License Provenance

Apache 2.0 Attestation Chain

Granite's Apache 2.0 license permits modification and redistribution, but the deployer must maintain attribution. SWT3's witness_license() records the license type, attribution status, and any modifications applied to the original weights. The license file ships with the model. SWT3 witnesses that your deployment honors it.

Assessor Verification

Verify AI-LIC.1 anchors confirm Apache 2.0 license type and that attribution requirements are documented.

AI-SBOM.1 -- AI Bill of Materials

Model Component Inventory

An AI SBOM for Granite includes: base model version, tokenizer configuration, adapter stack, quantization format, serving runtime version, and dependency chain. SWT3's witness_sbom() captures this inventory as a witnessed artifact. IBM publishes model cards. SWT3 witnesses the complete stack that actually ran in production.

Assessor Verification

Verify AI-SBOM.1 anchors list all components. Cross-reference against IBM's published model card for the declared base model.

AI-FAIR.1 -- Bias Detection

Fairness Monitoring Evidence

watsonx.governance includes fairness monitoring with demographic parity and disparate impact metrics. SWT3's witness_bias_detection() records each fairness evaluation result as a witnessed anchor. watsonx.governance monitors fairness on IBM's platform. SWT3 witnesses that you ran those checks and records the results independently.

Assessor Verification

Query AI-FAIR.1 anchors. Verify that fairness evaluations were conducted at the declared frequency and that results are consistent with watsonx.governance reports.

AI-DRIFT.1 -- Model Drift Detection

Performance Monitoring Evidence

watsonx.governance tracks model drift against baselines. SWT3's witness_drift_detection() records each drift measurement as a witnessed anchor. watsonx.governance detects drift on its platform. SWT3 witnesses that drift monitoring is active and records the measurements independently of any vendor dashboard.

Assessor Verification

Query AI-DRIFT.1 anchors. Verify drift monitoring is continuous and that threshold breaches triggered the declared response procedures.

AI-DATA.1 -- Training Data Provenance

Data Lineage Documentation

IBM documents Granite's training data in published technical reports and model cards. For fine-tuned variants, the deployer's training data introduces new provenance requirements. SWT3's witness_data_provenance() records dataset identifiers, processing steps, and consent status for any additional training applied after download.

Assessor Verification

Verify AI-DATA.1 anchors for fine-tuned models. Cross-reference dataset identifiers against data governance documentation.

AI-ENV.2 -- Runtime Isolation

Containerized Deployment Evidence

Granite deployments via Docker, Kubernetes, or vLLM run in isolated environments. SWT3's environment witnessing records container image digests, runtime versions, and isolation boundaries. The deployment manifest says "isolated." SWT3 witnesses the actual runtime configuration.

Assessor Verification

Verify AI-ENV.2 anchors reference specific container image digests. Cross-reference against the declared deployment architecture.

AI-MARK.1 -- Content Provenance Marking

AI-Generated Content Labeling

EU AI Act Art. 50(2) requires that AI-generated content be labeled for machine detectability. SWT3's witness_content_marking() records when Granite output was marked with provenance metadata (C2PA, watermark, or metadata tags). Compliance requires marking. SWT3 witnesses that marking actually happened.

Assessor Verification

Query AI-MARK.1 anchors. Verify that the marking method is consistent with the declared content provenance strategy.

AI-SUPPLY.1 -- Supply Chain Attestation

Weight Download Chain Evidence

Between IBM's model hub and your inference server, weights travel through CDNs, registries, and storage systems. SWT3's supply chain witnessing records the download source, transport integrity, and any intermediary caches. IBM released the weights. SWT3 witnesses the chain of custody from release to your GPU.

Assessor Verification

Verify AI-SUPPLY.1 anchors trace the weight download path. Confirm the source matches IBM's official distribution channels.

5. Coverage Matrix

ProcedureGranite 4.2Granite 4.1 HybridGuardianCode Models
AI-INF.1 Inference Provenance✓✓✓✓
AI-MDL.5 Weight Integrity✓✓✓✓
AI-MDL.6 Adapter Stack✓✓✓
AI-MDL.7 Quantization✓✓✓
AI-GRD.1 Guardrail✓✓✓✓
AI-GRD.2 Content Safety✓✓✓
AI-SEC.1 Adversarial Detection✓✓✓
AI-HW.1 Hardware Attestation✓✓✓✓
AI-LIC.1 License Provenance✓✓✓✓
AI-SBOM.1 AI Bill of Materials✓✓✓✓
AI-FAIR.1 Bias Detection✓✓
AI-DRIFT.1 Model Drift✓✓✓
AI-DATA.1 Training Data✓✓✓✓
AI-ENV.2 Runtime Isolation✓✓✓✓
AI-MARK.1 Content Marking✓✓✓
AI-SUPPLY.1 Supply Chain✓✓✓✓

6. SDK Quick Start

Path A: Native watsonx.ai SDK (cloud or on-prem)

Python

from swt3_ai import Witness
from swt3_ai.adapters.granite import wrap_granite
from ibm_watsonx_ai import Credentials, APIClient
from ibm_watsonx_ai.foundation_models import ModelInference

witness = Witness(
    endpoint="https://sovereign.tenova.io/api/v1/witness",
    api_key="axm_live_...",
    agent_id="granite-risk-model",
)

credentials = Credentials(url="https://us-south.ml.cloud.ibm.com", api_key="...")
model = ModelInference(model_id="ibm/granite-3-8b-instruct",
                       credentials=credentials, project_id="...")

witnessed = wrap_granite(model, witness)  # or witness.wrap(model)

response = witnessed.generate(prompt="Summarize the quarterly risk report.")
# Response is untouched. Anchor minted silently in the background.

witness.flush()

TypeScript

import { Witness } from "@tenova/swt3-ai";
import { wrapGranite } from "@tenova/swt3-ai/adapters/granite";

const witness = new Witness({
  endpoint: "https://sovereign.tenova.io/api/v1/witness",
  apiKey: "axm_live_...",
  agentId: "granite-risk-model",
});

// Assuming watsonx SDK client is initialized
const witnessed = wrapGranite(model, witness);  // or witness.wrap(model)

const response = await witnessed.generate({ prompt: "Summarize the quarterly risk report." });
// Response is untouched. Anchor minted silently in the background.

await witness.flush();

Path B: Granite via Ollama (air-gapped, no new code)

Python

from swt3_ai import Witness
from openai import OpenAI

witness = Witness.from_config("granite-sovereign")

client = OpenAI(base_url="http://localhost:11434/v1", api_key="ollama")
witnessed = witness.wrap(client)  # Auto-detects Ollama, uses OpenAI adapter

response = witnessed.chat.completions.create(
    model="granite3.1-dense:8b",
    messages=[{"role": "user", "content": "Summarize the quarterly risk report."}],
)

witness.flush()

Four lines of witness code. Every inference now has a tamper-evident anchor. The granite-sovereign profile automatically requires signing, hardware attestation, and Guardian evidence.

7. Cross-References