Skip to main content

What an SSSA Is

A Signed Skill Safety Attestation (SSSA) is the document a miner returns from a dispatch. It carries the analysis verdict, the supporting evidence, the recommended runtime policy, and a signature over the whole thing.
SSSA = {
  schema_version: "1.0",
  skill: { ... },
  analysis: { ... },
  evidence: { ... },
  policy: { ... },
  signature: { ... },
}
The full SSSA must serialise to JSON, hash to a stable canonical value, and verify against the miner’s hotkey signature.

Top Level

FieldTypeDescription
schema_versionstringAlways "1.0" for the current schema
skillobjectSkill identification block
analysisobjectVerdict, risk, findings, capabilities
evidenceobjectTrace hashes, sandbox manifest, LLM evidence
policyobjectRecommended enforcement policy
signatureobjectMiner hotkey signature over canonical bytes

skill

FieldTypeDescription
skill_typeenumOne of rag_knowledge, declarative, executable_python, executable_script, mcp_server, agent_composition
bundle_sha256hex stringSHA-256 of the bundle bytes the miner received
noncehex stringThe nonce the validator dispatched
The validator verifies that skill_type matches the dispatched task type and that bundle_sha256 matches the dispatched bundle.

analysis

FieldTypeDescription
verdictenumALLOW, BLOCK, or REVIEW
risk_scorefloat[0.0, 1.0]
findingslist of objectsDetected risks
capabilitieslist of stringsDeclared capabilities (file_io, network, exec, env_read, etc.)
dependencieslist of objectsSBOM with CVE annotations

analysis.findings[i]

FieldTypeDescription
idstringStable identifier within the SSSA
categoryenumOne of prompt_injection, secrets_exposure, excessive_capability, dependency_cve, tool_poisoning, transitive_risk, canary_match, other
severityenumlow, medium, high, critical
descriptionstringHuman readable summary
evidence_refstringReference into evidence block
The validator’s consensus uses canonical finding keys derived from (category, severity, evidence_ref hash) to match findings across miners. See Consensus.

analysis.dependencies[i]

FieldTypeDescription
packagestringPackage identifier (e.g. requests)
versionstringResolved version
cveslist of stringsCVE IDs flagged for this version

evidence

FieldTypeDescription
trace_hashesobjectPer file SHA-256 of normalised trace JSONL
sandbox_manifestobjectImage digest, runtime config
probe_evidenceobjectEcho of the probe events the miner observed
llm_evidenceobjectOptional. LLM enrichment, if used
static_evidenceobjectOptional. Pre detonation static analysis results

evidence.trace_hashes

For runtime types, the miner must populate hashes for the relevant trace JSONL files.
FileRequired for
fs.jsonlAll runtime types
network.jsonlAll runtime types
process.jsonlAll runtime types
secrets.jsonlAll runtime types
mcp_io.jsonlmcp_server only
taint.jsonlexecutable_script only
cascade.jsonlagent_composition only
Each hash is the SHA-256 of the file content with normalisation applied: records sorted by ts, keys sorted within each record, no whitespace, no trailing newline.

evidence.sandbox_manifest

FieldTypeDescription
image_uristringRegistry URI of the sandbox image
digeststringsha256:... digest
runtime_configobjectCapabilities dropped, network mode, resource limits
The digest must equal the image_hash the miner declared at registration. The validator checks this immediately on synapse receipt.

evidence.probe_evidence

FieldTypeDescription
file_pathstringThe file path derived from the nonce
file_contentstringThe file content derived from the nonce
dns_hoststringThe DNS host derived from the nonce
process_echostringThe process echo string derived from the nonce
The validator independently derives the same four values from the nonce and verifies they match.

evidence.llm_evidence (optional)

FieldTypeDescription
model_idstringLLM identifier
allowed_useenumfinding_enrichment, mitre_owasp_mapping, or cve_explanation
prompt_hashhex stringHash of the prompt sent to the LLM
response_hashhex stringHash of the LLM response
The validator rejects any other value in allowed_use. LLMs cannot be used to produce verdicts, findings categories, or policies. They can only enrich already produced findings with human readable text.

policy

The recommended runtime enforcement policy.
FieldTypeDescription
versionstringPolicy schema version, currently "1.0"
default_actionenumallow, deny
ruleslist of objectsPer resource rules

policy.rules[i]

FieldTypeDescription
resourceenumfile_io, network, process, env_read, secrets_read, mcp_tool
actionenumallow, deny, prompt
patternstringMatch pattern (path glob, hostname pattern, etc.)
reasonstringHuman readable reason
π scoring compares the miner’s policy to the task’s expected_policy, weighted as F-β with β = 0.5.

signature

FieldTypeDescription
signer_hotkeyss58 stringMiner hotkey ss58
signaturebase64 stringSr25519 signature over canonical bytes
canonical_hashhex stringSHA-256 of the canonical JSON bytes that were signed
Canonical JSON: all keys sorted alphabetically at every level, no whitespace, UTF-8 NFC normalised. The signature covers every other top level field except signature itself.

Validator Side Checks

On receiving a SSSA the validator runs:
CheckFailure
Schema parseSubmission scored zero, reputation flagged invalid
skill.skill_type matches taskScored zero, reputation violation
skill.bundle_sha256 matches dispatched bundleScored zero, reputation violation
skill.nonce matches dispatched nonceScored zero, reputation violation
sandbox_manifest.digest matches registered image hash (primaries, runtime)Scored zero, reputation violation
Trace hashes consistent (primaries, runtime)Scored zero, reputation violation
Probe evidence matches nonce derived valuesScored zero, reputation invalid
llm_evidence.allowed_use is in the allowed set (if present)Scored zero, reputation violation
Signature verifies against miner hotkeyDiscarded, reputation invalid

Example: Minimal declarative SSSA

{
  "schema_version": "1.0",
  "skill": {
    "skill_type": "declarative",
    "bundle_sha256": "ab12...",
    "nonce": "f4e2..."
  },
  "analysis": {
    "verdict": "BLOCK",
    "risk_score": 0.82,
    "findings": [
      {
        "id": "f-1",
        "category": "prompt_injection",
        "severity": "high",
        "description": "Detected hidden role override at line 14",
        "evidence_ref": "static#span-14"
      }
    ],
    "capabilities": [],
    "dependencies": []
  },
  "evidence": {
    "trace_hashes": {},
    "sandbox_manifest": {},
    "probe_evidence": {
      "file_path": "/tmp/phylax/probe-f4e2.txt",
      "file_content": "f4e2probe",
      "dns_host": "f4e2.probe.phylax.local",
      "process_echo": "f4e2probe-echo"
    },
    "static_evidence": {
      "spans": [{"id": "span-14", "line": 14, "snippet": "..."}]
    }
  },
  "policy": {
    "version": "1.0",
    "default_action": "deny",
    "rules": []
  },
  "signature": {
    "signer_hotkey": "5GrwvaEF...",
    "signature": "aGVsbG8...",
    "canonical_hash": "9c0a..."
  }
}

What’s Next

Scoring

Per axis formulas using the SSSA fields.

Consensus

How findings, capabilities, and dependencies are compared across miners.

Probe Events

How probe evidence is derived from the nonce.

Protocol Reference

The synapse fields carrying the SSSA.