sam

SAM registries

Companion data files for the SAM specification. Advisory only — not enforced by the JSON Schema.

Files

Why advisory, not enforced

Registries that are enforced by schema age poorly. New standards emerge faster than the SAM schema can churn; if industryRefs.standard were enum-restricted, every new ISO release would require a major version bump. The spec accepts free-text strings (§5.1.9) and adds this companion registry to reduce drift without locking the value space.

Tooling MAY:

Tooling MUST NOT reject a SAM solely because it uses an unregistered string in industryRefs.standard or tensionsDeclared[].tension.

Shape

Both registries are flat JSON files with registry, version, description, and an entries[] array. Per-entry shapes:

standards.json entry:

{ "canonical": "...", "aliases": ["..."], "uri": "...", "domain": "..." }

canonical is the spelling SAM-aware tooling will treat as authoritative. aliases lists known variations that should map to the canonical. uri points at the canonical authoritative source for the standard. domain is a free-text categorization for filtering.

tensions.json entry:

{ "id": "...", "name": "...", "summary": "...", "cite": "...", "uri": "...", "applies_to": ["..."] }

id is the value that goes in tensionsDeclared[].tension. name, summary, and cite describe the tension to humans and auditors. applies_to names the SAM qualityAttributes characteristics or extensions that the tension typically couples.

Versioning

Each registry declares its own version independent of the SAM specification version. Registry versions follow SemVer at registry granularity:

A registry’s version does not change the SAM manifestVersion. SAMs reference standards and tensions by string; the registry is a translation aid, not a normative dependency.

Contributing

Open an issue or PR at the SAM repo with:

Aliases for existing entries are welcome — they lower the cost of producer drift.