Skip to content

Hypermedia Security: Publication BOM Specification

v1.0.0Hypermedia AuL3

Publication BOM (typed, versioned, frozen on delivery; composes approved findings over the frozen catalog)

The L3 Publication BOM: the signed disclosure — the externally-facing artifact of record. It binds the rendered report to exactly the findings it discloses (compositions with aggregate complete: CycloneDX's own statement that no further constituents exist) and to the frozen finalised catalog it was written from. Publications are typed (an open list seeded with exec-summary and technical-report), versioned (draft to approved), and frozen on delivery — a revision is a new superseding version, never an edit. Release is gated by publish-approval/v1: a second identity, distinct from the report author, signs the disclosure decision.

Validate against: /schemas/publication/v1.schema.json

Download raw JSON

Relationships

References

Referenced by

About this standard

hyper-spec:artifactKind
BOM (L3 — the signed disclosure; 1..P per case)

Sources

cyclonedx.org
CycloneDX 1.7 — verified from the schema file 2026-07-11: compositions aggregate 'complete' = 'the relationship is complete. No further relationships including constituent components, services, or dependencies are known to exist'; assemblies = 'the bom-ref identifiers of the components or services being described'
www.iso.org
ISO 21043-5:2025 (Forensic sciences — Part 5: Reporting; published June 2025, Edition 1) — cited at title/scope level (clause text not verified first-hand): specifies requirements for reports that are accurate, clear, transparent, complete, unambiguous, impartial and suitable for their intended use, including review of case records and reports, issuance and control of reports, and testimony
www.rfc-editor.org
RFC 2119 (as clarified by RFC 8174) — requirement key words; only capitalised forms are normative
sec.hypermedia.au
website

PUBL-001 CycloneDX Document MUST

checked: schema

A Publication BOM MUST be a CycloneDX 1.7 BOM with bomFormat 'CycloneDX', specVersion '1.7', a urn:uuid serialNumber, a positive integer version, metadata.timestamp (ISO-8601), and a metadata.component of type 'data' naming the publication. The version advances through the draft-to-approved review loop and on supersession.

The serialNumber is the publication's permanent identity across its versions; publish-approval claims and delivery records resolve against it.

PUBL-002 Publication Identity MUST

checked: schema

metadata.properties MUST carry hyper-spec:caseId and hyper-spec:publicationType, each a non-empty string. The type vocabulary is OPEN, seeded with exec-summary and technical-report; new types MAY be added without a version bump. Supersession is carried by the envelope: a publication's serialNumber is stable across its versions and the version orders them.

The type is what distinguishes several publications of one case from one another — an exec-summary and a technical-report are separate documents with separate serialNumbers, not versions of each other. Within one publication, revision is a new version under the same serialNumber, so the chain back to what a version replaces needs no property to record it.

type-seed-values
exec-summary
type-seed-values
technical-report
type-vocabulary
open

PUBL-003 Report Document MUST

checked: schema

components[] MUST carry exactly one data component: the rendered report, with at least one hash entry over its delivered bytes. Every hash entry MUST carry alg 'SHA-384' or 'SHA-512' and lowercase hexadecimal content whose length matches the algorithm: 96 characters for SHA-384, 128 for SHA-512. Both values are members of the CycloneDX hash algorithm enumeration.

The hash is the delivered report's integrity anchor — what the publish-approval approves, what the recipient can verify, and what the Evidence Record covers. The reporting duties this document discharges are those of ISO 21043-5:2025 (Forensic sciences — Reporting): reports accurate, clear, transparent, complete, unambiguous, impartial and suitable for their intended use, with controlled issuance — cited at scope level; the clause text was not verified first-hand.

allowed-algorithms
SHA-384
allowed-algorithms
SHA-512
iso-basis
ISO 21043-5:2025 (title/scope level)

PUBL-004 Catalog Pin MUST NOT

checked: schema

externalReferences MUST carry an entry of type 'bom' marked hyper-spec:role 'finalisedCatalogRef', whose url is a document-form BOM-Link to the FINALISATION version of the case's Case Provenance BOM, paired with at least one hash of it. A publication MUST NOT pin an interim catalog version.

The disclosure is bound to the closed corpus: the frozen case-of-record whose Evidence Record already covers every hash. Pinning an interim version would mean disclosing against an evidence base that could still grow — the finalisation-only rule keeps 'what was the report written from' a closed question.

target-standard
https://sec.hypermedia.au/standards/case-provenance/v1#frozen-at-finalisation

PUBL-005 Complete Composition MUST

checked: schema

compositions[] MUST carry aggregate 'complete' with assemblies naming, by element-form BOM-Link to its document component, exactly the findings the report discloses. Every composed finding MUST be disclosable: it MUST carry a current terminal finding-approved from an identity distinct from its author (verifier-enforced at composition). A finding MAY appear in more than one publication.

aggregate 'complete' is CycloneDX's own completeness statement — no further constituents are known to exist — so 'the report contains exactly these findings and nothing undisclosed' is carried by the format's documented semantics, not by convention. The disclosability condition is the finding-approval invariant applied at the moment of composition.

aggregate
complete
disclosability
https://sec.hypermedia.au/standards/finding-approval/v1#supersession-and-invariant

PUBL-006 Author Signature MUST

checked: schema

The Publication BOM MUST carry an enveloped JSF signature by the report author, using ES384, ES512, or ML-DSA-65 or ML-DSA-87 identified by their FIPS 204 OIDs. The release decision MUST be signed by a different identity (publish-approval/v1, approver distinct from author, Fulcio-verified).

The same maker-checker shape as findings, at the release boundary: the author signs what the report is; a distinct approver signs that it may leave the enclave.

checker-standard
https://sec.hypermedia.au/standards/publish-approval/v1

PUBL-007 Versioning And Delivery MUST NOT

checked: chain-verification

Publication versions run draft to approved: each version is a signed object under the same serialNumber, and a changes-requested review outcome produces the next version. A DELIVERED publication is FROZEN: it MUST NOT change after delivery; any revision MUST be a new superseding version. Superseded and rejected versions MUST be retained, never edited or deleted.

Delivered-is-frozen is what makes 'which report did you give them' a question with one answer. Several publications can exist per case — different types, each with its own serialNumber and its own version sequence — and within one, the serialNumber and version carry the supersession chain: version n replaces version n−1, and the retained history keeps every delivered artifact accountable. ISO 21043-5's issuance-and-control-of-reports duty is discharged by exactly this discipline.

trigger
publish-approval/v1 changes-requested
iso-basis
ISO 21043-5:2025 issuance and control of reports (title/scope level)