{
  "schema_version": "socair.report/v1",
  "header": {
    "document_id": "SOCAIR-20261015-14f1f01b",
    "template_version": "0.1",
    "issued_utc": "2026-10-15T03:14:33Z",
    "rescan_due": "2027-01-13T03:14:33Z",
    "artifact_short": "nvidia/Qwen3.8-27B-NVFP4",
    "assurance_level_awarded": "Tier 1 (static)",
    "signer_key_id": "6230d2225405c855da4cfba73cad678651dd6f0221e2739fc9bd3901ffd35e38",
    "document_hash": "22af02da3df842439708530287e9f25a54cc4f22111f52ec0ab541515aaab2f7"
  },
  "artifact": {
    "name": "nvidia/Qwen3.8-27B-NVFP4",
    "architecture": "Qwen3_5ForConditionalGeneration",
    "repo_url": "https://huggingface.co/nvidia/Qwen3.8-27B-NVFP4",
    "commit_or_tag": "482ca0f3832238542f8f5295dde86b5f22711d80",
    "commit_sha": "482ca0f3832238542f8f5295dde86b5f22711d80",
    "publisher_signing_status": "not established",
    "file_name": "Qwen3.8-27B-NVFP4",
    "sha256": "14f1f01bdd7978f942ec9f1ea5cee5788b50ce7ac610bbd2f2a40f6384b30c33",
    "format": "model directory",
    "size_bytes": 21945291730,
    "tokenizer_hash": "0997f410c57a1f4e53b09e4be8f4a172d90edd9564368fb0847030937229b9f3",
    "files": [
      {
        "path": ".gitattributes",
        "sha256": "34448b82c17d60fec9b65b1f093c115ddbaadc04beb1b0140b6bfed2e012a930",
        "size_bytes": 1570,
        "role": "other"
      },
      {
        "path": ".quant_summary.txt",
        "sha256": "0f8818b69fa46381899bdc72833805409e6ca9771f9c34e5f3dcf4674da9a3a1",
        "size_bytes": 318035,
        "role": "other"
      },
      {
        "path": "LICENSE",
        "sha256": "bbedc3fda3305820b977265f01b8619d87570a6739de3a5582c3464840f1e57a",
        "size_bytes": 11544,
        "role": "other"
      },
      {
        "path": "README.md",
        "sha256": "2dc5368ce2dda4393818fc3c6e587d588ec7b7f599b1f3a326d97dc271e3866d",
        "size_bytes": 9578,
        "role": "other"
      },
      {
        "path": "chat_template.jinja",
        "sha256": "c3cf9e34abf4f9e36c2d72165aa9c132d3e2a725b6c2586aaa3a8af9d7a81041",
        "size_bytes": 8952,
        "role": "chat_template"
      },
      {
        "path": "config.json",
        "sha256": "71fa01bb64de20971045cd82a82c0ebb25a54e1b0a3f09ef23cf5479e9c54df8",
        "size_bytes": 87506,
        "role": "config"
      },
      {
        "path": "generation_config.json",
        "sha256": "8a3a817a9d330f6f9e62f048fe62a48594946c4a5c4cb314a8011316d5094986",
        "size_bytes": 214,
        "role": "config"
      },
      {
        "path": "hf_quant_config.json",
        "sha256": "5f4aaa9e462ddb26a9790ab459eee69d100b9ade7541f0c86038e925c013f80b",
        "size_bytes": 53760,
        "role": "config"
      },
      {
        "path": "merges.txt",
        "sha256": "a9d356d7bdf1ef4949e3e748e95b8e10ad9d4e2e838eddc38a0a7b6b94d1db8d",
        "size_bytes": 3353259,
        "role": "tokenizer"
      },
      {
        "path": "model-00001-of-00003.safetensors",
        "sha256": "7d0fd155118901373eb0fd13ed3aae68f95be747bc205be72ebc41739c25ee80",
        "size_bytes": 9965652544,
        "role": "weights"
      },
      {
        "path": "model-00002-of-00003.safetensors",
        "sha256": "98a7e9486baa860c792c9463a770cb9d017696bdd17606300a5b9334149f4c27",
        "size_bytes": 9985757064,
        "role": "weights"
      },
      {
        "path": "model-00003-of-00003.safetensors",
        "sha256": "0506ad35dc21469708e7813bd76c592cef08bd0317b4a1fe899745ebe2435271",
        "size_bytes": 1970287672,
        "role": "weights"
      },
      {
        "path": "model.safetensors.index.json",
        "sha256": "7aa103a2582b7d26631988de33dea19e8a308ee9c239e8e14feb374af30905e2",
        "size_bytes": 214866,
        "role": "config"
      },
      {
        "path": "preprocessor_config.json",
        "sha256": "27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516",
        "size_bytes": 390,
        "role": "config"
      },
      {
        "path": "processor_config.json",
        "sha256": "d89ef49ce9cd37fbf510158e13c1ef063d9286411c1ec9049932dbe0487143b1",
        "size_bytes": 1191,
        "role": "config"
      },
      {
        "path": "tokenizer.json",
        "sha256": "0997f410c57a1f4e53b09e4be8f4a172d90edd9564368fb0847030937229b9f3",
        "size_bytes": 12809320,
        "role": "tokenizer"
      },
      {
        "path": "tokenizer_config.json",
        "sha256": "e5d078b00e6c1223b32444db8c1001dc71d86ceef8ee706b5bf084c3a43a1f9c",
        "size_bytes": 1121,
        "role": "tokenizer"
      },
      {
        "path": "video_preprocessor_config.json",
        "sha256": "7768af27c1fafa9cc9011c1dc20067e03f8915e03b63504550e11d5066986d13",
        "size_bytes": 385,
        "role": "config"
      },
      {
        "path": "vocab.json",
        "sha256": "ce99b4cb2983d118806ce0a8b777a35b093e2000a503ebde25853284c9dfa003",
        "size_bytes": 6722759,
        "role": "tokenizer"
      }
    ],
    "license": {
      "id": "apache-2.0",
      "name": "Apache License 2.0",
      "sources": [
        {
          "source": "LICENSE",
          "value": "Apache License",
          "id": "apache-2.0"
        },
        {
          "source": "model card license",
          "value": "apache-2.0",
          "id": "apache-2.0"
        }
      ]
    },
    "base_models": [
      {
        "name": "Qwen/Qwen3.8-27B",
        "repo": "Qwen/Qwen3.8-27B",
        "source": "model card base_model"
      }
    ]
  },
  "scope": {
    "check_set_version": "tier1/0.11",
    "tool_versions": "socair 0.1.0-rc.6",
    "execution_context": "Tier 1 static, portable",
    "input_path": "airlock pull",
    "scan_start_utc": "2026-10-15T03:14:33Z",
    "scan_end_utc": "2026-10-15T03:14:43Z"
  },
  "checks": [
    {
      "name": "Format and structure",
      "looks_for": "Malformed container structure, unexpected tensors",
      "status": "PASS",
      "notes": "4 of 4 file(s) PASS; e.g. model-00001-of-00003.safetensors: safetensors layout verified: 1043 tensors tile 9965526000 data bytes exactly, each sized to its shape and dtype; 1 metadata keys",
      "pass_means": "The container parsed, and its tensor data tiles the data section exactly: no unaccounted bytes, overlapping tensors, or duplicate names. For an ONNX model: every tensor holds exactly the data its type and shape need, no two initializers of a graph share a name, external data stays inside the model's directory and fits its file, and every operator is ONNX's own, one of onnxruntime's contrib operators, or a function the model defines. For an OpenVINO IR: every Const lies inside the .bin and is exactly the size its element type and shape take, the Consts cover the .bin with no byte outside them, and every operation OpenVINO builds is in its own opsets. Tensor values are not judged, and an operator library a deployment registers is outside the model. For a Keras model (HDF5 or a .keras archive): every dataset's storage lies inside the HDF5 data, sized by its type and shape, with none overlapping and no data or link in another file, the archive holds only what Keras reads, and the config names no Python bytecode, pickled module, or class or function from outside Keras and TensorFlow (KerasHub, KerasCV, and KerasNLP classes are named). Weight values are not judged.",
      "maps_to": [
        {
          "framework": "MITRE ATLAS",
          "version": "2026.09",
          "id": "AML.T0010.003",
          "name": "AI Supply Chain Compromise: Model"
        },
        {
          "framework": "OWASP LLM Top 10",
          "version": "2025",
          "id": "LLM03",
          "name": "Supply Chain"
        }
      ]
    },
    {
      "name": "File inventory and payloads",
      "looks_for": "Hidden files, embedded payloads, unexpected executables",
      "status": "PASS",
      "notes": "4 of 4 file(s) PASS; e.g. directory listing: repo: 19 files, 0 scripts inventoried (scripts are expected, not a finding); no pickle file: none is named as one or begins as one (a protocol 2 to 5 stream, or a zip holding a pickle), so no Pickle opcode scan row",
      "pass_means": "No script, shell command, long encoded blob, or executable signature was found in string metadata values, including every string-array element of 64 bytes or more, and no native executable among the files. Shorter array elements, such as vocabulary tokens, are too short to carry one and are not scanned. An archive among the files counts only when the Pickle opcode scan PASSed it and read every entry in it: a torch.save checkpoint with nothing outside torch.save's layout.",
      "maps_to": [
        {
          "framework": "MITRE ATLAS",
          "version": "2026.09",
          "id": "AML.T0011.000",
          "name": "User Execution: Unsafe AI Artifacts"
        },
        {
          "framework": "MITRE ATLAS",
          "version": "2026.09",
          "id": "AML.T0018.002",
          "name": "Manipulate AI Model: Embed Malware"
        },
        {
          "framework": "MITRE ATLAS",
          "version": "2026.09",
          "id": "AML.T0010.003",
          "name": "AI Supply Chain Compromise: Model"
        },
        {
          "framework": "OWASP LLM Top 10",
          "version": "2025",
          "id": "LLM03",
          "name": "Supply Chain"
        }
      ]
    },
    {
      "name": "Hash, provenance, lineage",
      "looks_for": "Traceable origin: a manifest bound to this hash, from an immutable upstream commit; files that disagree with the uploader's checksum list",
      "status": "PASS",
      "notes": "origin bound to this artifact's hash, at an immutable commit: repo https://huggingface.co/nvidia/Qwen3.8-27B-NVFP4; revision 482ca0f3832238542f8f5295dde86b5f22711d80; commit 482ca0f3832238542f8f5295dde86b5f22711d80; via airlock pull; publisher signature not established; manifest provenance.json (sha256 979f3f95058fd62f606300a61fb5d7eb2a7b90bfb619cccfdfee321988919f58)",
      "pass_means": "A trusted publisher signature verified over this artifact, or an operator-supplied manifest binds this hash to a repository at an immutable commit. The notes say which; a manifest is the operator's claim, not a signature. No file the scan compared with a SHA-256 list its uploader ships (SHA256SUMS or a .sha256 file) disagrees with it, save Markdown, which is named and not graded; agreement is noted, and the PASS does not rest on it.",
      "maps_to": [
        {
          "framework": "MITRE ATLAS",
          "version": "2026.09",
          "id": "AML.T0010.003",
          "name": "AI Supply Chain Compromise: Model"
        },
        {
          "framework": "MITRE ATLAS",
          "version": "2026.09",
          "id": "AML.T0115.001",
          "name": "Publish Poisoned AI Artifacts: Models"
        },
        {
          "framework": "OWASP LLM Top 10",
          "version": "2025",
          "id": "LLM03",
          "name": "Supply Chain"
        }
      ]
    },
    {
      "name": "Chat template",
      "looks_for": "Code reach, hidden or obfuscated text, override or content-triggered instructions, and the text the rendered template adds to the prompt",
      "status": "PASS",
      "notes": "template parsed; no code-execution reach, content-conditional injection, hidden or obfuscated text, or instruction-language lead found. Structural heuristic; not a proof of absence. Rendered on 6 probes/v1 probe conversation(s) with Socair's own Jinja evaluator, modelling transformers' sandbox settings. This template adds to the prompt: \"Reasoning effort is set to xhigh. Please think carefully through the task, validate key assumptions, consider plausible ...\" (4 of 6); \"Reasoning effort is set to xhigh. Please think carefully through the task, validate key assumptions, consider plausible ...\" (2 of 6); \"</tools>\\n\\nIf you choose to call a function ONLY reply in the following format with NO suffix:\" (2 of 6); \"<function=example_function_name>\\n<parameter=example_parameter_1>\\nvalue_1\\n</parameter>\\n<parameter=example_parameter_2>\\nTh...\" (2 of 6); \"<IMPORTANT>\\nReminder:\\n- Function calls MUST follow the specified format: an inner <function=...></function> block must b...\" (2 of 6); \"XML tags\\n- Required parameters MUST be specified\\n- You may provide optional reasoning for your function call in natural ...\" (2 of 6); and 3 more. Listed for review, not judged. No reviewed template text was available, so it was not compared.",
      "pass_means": "The template parsed and reaches no Python internals or process execution, and carries no override or concealment language, URL, hidden or obfuscated text, or condition on message content other than a standard content-part type such as text or image. Instructions written as ordinary guidance, or added for a content-part type, are not judged: the notes list the text a template adds for a content-part type, and, when the template rendered, the text it adds to the prompt and whether it matches a reviewed template.",
      "maps_to": [
        {
          "framework": "MITRE ATLAS",
          "version": "2026.09",
          "id": "AML.T0018.003",
          "name": "Manipulate AI Model: Modify Prompt Construction Logic"
        },
        {
          "framework": "MITRE ATLAS",
          "version": "2026.09",
          "id": "AML.T0051",
          "name": "LLM Prompt Injection"
        },
        {
          "framework": "MITRE ATLAS",
          "version": "2026.09",
          "id": "AML.T0011.000",
          "name": "User Execution: Unsafe AI Artifacts"
        },
        {
          "framework": "OWASP LLM Top 10",
          "version": "2025",
          "id": "LLM01",
          "name": "Prompt Injection"
        },
        {
          "framework": "OWASP LLM Top 10",
          "version": "2025",
          "id": "LLM03",
          "name": "Supply Chain"
        }
      ]
    },
    {
      "name": "Tokenizer config",
      "looks_for": "Tampered tokenizer tables: special-token ids, token types, control tokens",
      "status": "PASS",
      "notes": "tokenizer.json (sha256 0997f410c57a1f4e, BPE model): 248077 tokens, 33 added (21 special); special-token ids, added-token tables, declared special tokens, and template tokens agree; no token, normalizer, or template injects text. No canonical tokenizer reference was configured, so its tokens were not compared.",
      "pass_means": "The tokenizer tables are internally consistent, and no control token carries instructions. When a canonical reference table for its family is configured (from a feed or SOCAIR_TOKENIZER_REFERENCE), every token was compared with it and no ordinary token differs; the notes say which reference, or that none was configured or matched.",
      "maps_to": [
        {
          "framework": "MITRE ATLAS",
          "version": "2026.09",
          "id": "AML.T0018.003",
          "name": "Manipulate AI Model: Modify Prompt Construction Logic"
        },
        {
          "framework": "MITRE ATLAS",
          "version": "2026.09",
          "id": "AML.T0011.000",
          "name": "User Execution: Unsafe AI Artifacts"
        },
        {
          "framework": "MITRE ATLAS",
          "version": "2026.09",
          "id": "AML.T0010.003",
          "name": "AI Supply Chain Compromise: Model"
        },
        {
          "framework": "OWASP LLM Top 10",
          "version": "2025",
          "id": "LLM03",
          "name": "Supply Chain"
        }
      ]
    },
    {
      "name": "Remote code",
      "looks_for": "Python a loader would import: modules a config names (auto_map, custom_pipelines, sentence-transformers and diffusers modules), files loaders import by their path, and the repository files those import",
      "status": "PASS",
      "notes": "no loader is told to import code: no auto_map, custom_pipelines, sentence-transformers module outside sentence_transformers, or diffusers custom component in the 10 JSON config(s) read, and no custom_generate/generate.py, handler.py, pipeline.py, or code/inference.py",
      "pass_means": "No config a loader reads names Python in this directory or in another repository (through an auto_map entry, custom_pipelines, a sentence-transformers module, or a diffusers custom pipeline or component), and no file sits where a loader imports one by its path (custom_generate/generate.py, or an inference toolkit's handler.py, pipeline.py, or code/inference.py). Other Python and script files are listed in the notes and not judged: a loader Socair does not model, or a person, can still run them.",
      "maps_to": [
        {
          "framework": "MITRE ATLAS",
          "version": "2026.09",
          "id": "AML.T0011.000",
          "name": "User Execution: Unsafe AI Artifacts"
        },
        {
          "framework": "MITRE ATLAS",
          "version": "2026.09",
          "id": "AML.T0010.001",
          "name": "AI Supply Chain Compromise: AI Software"
        },
        {
          "framework": "OWASP LLM Top 10",
          "version": "2025",
          "id": "LLM03",
          "name": "Supply Chain"
        }
      ]
    }
  ],
  "findings": {
    "fails": [],
    "not_tested": []
  },
  "assurance_level": {
    "awarded": "Tier 1 (static)",
    "definition": "Static checks on the artifact's bytes and metadata, run offline. No inference is run, and the weights are not evaluated for behavior.",
    "does_mean": "Each listed check ran on the exact bytes identified by the artifact hash, and each row states what its PASS means. A FAIL carries positive evidence, a LEAD is a suspicious signal that needs a person's review, and a NOT_TESTED names why it was not tested. A FAIL or a LEAD withholds promotion, and no acceptance clears it.",
    "does_not_mean": "It is not an assessment of the model's behavior or safety. It does not test the weights for backdoors or poisoning, behavior that appears only after quantization or on particular hardware, or jailbreak susceptibility and harmful capability, and it is not a legal review of the model's license.",
    "tier2_note": "Tier 2 (inference on the production node class) did not run."
  },
  "bounded_statement": "For the artifact identified by its hash, the Tier 1 checks that returned PASS found no indicators within their stated scope. Rows marked NOT_TESTED were not examined, for the reason each row gives. Tier 1 runs no inference, so no model behavior was tested. Every surface outside that scope is listed under Out of scope.",
  "out_of_scope": {
    "does_not_certify": "This attestation does not certify the absence of unknown backdoors.",
    "ceiling": [
      "Backdoors, trojans, or poisoning in the model weights. Tier 1 reads the weights' layout, never their behavior.",
      "Triggered, sleeper, or polymorphic behavior. Tier 1 runs no inference.",
      "Behavior that appears only after quantization, or only on particular hardware or serving stacks, unless Tier 2 ran on the production node class.",
      "Behavioral safety: jailbreak susceptibility, harmful capability, and bias.",
      "Malicious behavior that only emerges at runtime under real traffic.",
      "Artifact formats we do not parse.",
      "Pickle code execution through a reviewed class's state, loader bugs, parse differentials, a tampered environment, or code carried as data for a later stage to run.",
      "Chat-template instructions written as ordinary guidance (no override or concealment phrase, URL, hidden or obfuscated text, or condition on message content other than a standard content-part type such as text or image): the text a rendered template adds, and the text a template adds for a content-part type, is listed in the report, not judged, unless the template matches a reviewed template.",
      "Legal review of a license, and compliance with its usage policies. The license is identified, and checked only against a policy you configure."
    ],
    "untested_node_classes": [
      "every node class: Tier 1 is static and ran no inference on any hardware"
    ],
    "not_run": [
      {
        "name": "Forward-pass trigger probes (Tier 2)",
        "looks_for": "Behavior under the production serving stack",
        "reason": "Tier 2 (forward-pass, on the production node class) did not run; Tier 1 is static and runs no inference"
      },
      {
        "name": "Serving-stack differential (Tier 2)",
        "looks_for": "Same artifact behaving differently across stacks",
        "reason": "Tier 2 (forward-pass, on the production node class) did not run; Tier 1 is static and runs no inference"
      },
      {
        "name": "Known-bad hash match",
        "looks_for": "Match against the known-bad artifact denylist",
        "reason": "no known-bad list was supplied (SOCAIR_DENYLIST, or a signed feed that carries one), so the artifact's hash was not matched against one"
      }
    ]
  },
  "promotion_authorization": {
    "authorized": true,
    "state": "authorized",
    "level": "Tier 1 only",
    "conditions": "Every Tier 1 check PASSed."
  },
  "verification": {
    "document_hash": "22af02da3df842439708530287e9f25a54cc4f22111f52ec0ab541515aaab2f7",
    "signing_method": "DSSE Ed25519 over an in-toto Statement v1",
    "signer_key_id": "6230d2225405c855da4cfba73cad678651dd6f0221e2739fc9bd3901ffd35e38",
    "artifact_sha256": "14f1f01bdd7978f942ec9f1ea5cee5788b50ce7ac610bbd2f2a40f6384b30c33",
    "rerun_instructions": "socair scan <directory>"
  },
  "issuer": {
    "signed_by": "socair.ai examples",
    "authority": "socair.ai examples",
    "excludes": "No absence guarantee. See the bounded statement and out-of-scope ceiling."
  },
  "appendices": {}
}
