Schema Governance for Scanner Outputs (SC9)

Status: Draft · Date: 2025-12-04 Scope: Define governance, approvals, RACI, and review cadence for schema bumps, downgrade adapters, and mapping table changes.

Objectives

RACI Matrix

Schema Changes

ActivityProductScanner TLSbomer TLPolicy TLOpsQA
CycloneDX version bumpARCCIC
CVSS version supportARICIC
SLSA version bumpARCCIC
New evidence fieldsARCCIC
CBOM property additionsARCCIC

Adapter Changes

ActivityProductScanner TLSbomer TLPolicy TLOpsQA
Downgrade adapter updateARCIIR
Mapping table changesARCIIR
Hash update approvalARIIIR
Fixture updatesIRCIIR

Release Artifacts

ActivityProductScanner TLSbomer TLPolicy TLOpsQA
Schema freezeARCCII
DSSE signingICIIRI
Offline kit bundlingIIIIRC
Release notesRCCCCI

Legend: R=Responsible, A=Accountable, C=Consulted, I=Informed

Schema Bump Workflow

1. Proposal Phase

graph LR
    A[RFC Draft] --> B[Technical Review]
    B --> C{Approved?}
    C -->|Yes| D[Implementation]
    C -->|No| A
    D --> E[Adapter Update]
    E --> F[Fixture Update]
    F --> G[Hash Freeze]
    G --> H[DSSE Sign]
    H --> I[Release]

2. Required Artifacts

ArtifactOwnerLocation
RFC DocumentScanner TLdocs/rfcs/
Mapping CSVScanner TLdocs/modules/scanner/fixtures/adapters/
Golden FixturesQAdocs/modules/scanner/fixtures/cdx17-cbom/
Hash ListQAdocs/modules/scanner/fixtures/*/hashes.txt
DSSE EnvelopeOpsout/offline/scanner-standards-kit-v1/

3. Approval Gates

GateApproversCriteria
RFC ApprovalProduct + Scanner TLTechnical feasibility, backwards compat
Adapter ApprovalScanner TL + QAMapping completeness, determinism tests pass
Hash FreezeScanner TL + QAAll fixtures pass hash validation
DSSE SignOpsAll hashes recorded, offline kit complete
ReleaseProductAll gates passed, release notes approved

Review Cadence

Regular Reviews

ReviewFrequencyAttendeesScope
Schema SyncMonthlyScanner, Sbomer, Policy TLsUpcoming changes, deprecations
Adapter ReviewPer releaseScanner TL, QAMapping accuracy, test coverage
Hash AuditPer releaseQA, OpsAll fixture hashes valid

Ad-hoc Reviews

Triggered by:

Change Control

Acceptable Changes

Change TypeRequiresExample
Add optional fieldScanner TL approvalNew evidence property
Add required fieldRFC + Product approvalNew mandatory hash
Remove fieldRFC + deprecation noticeLegacy property removal
Change orderingScanner TL + QA approvalSort key update
Update hashQA approval + documented reasonFixture content change

Prohibited Changes

ChangeReasonAlternative
Silent hash updateBreaks determinism validationDocument change, get approval
Remove required fieldBreaks consumersDeprecate with N-1 support
Change field typeBreaks serializationNew field with migration
Reorder without docsBreaks hash validationUpdate ordering rules + hashes

Deprecation Policy

Deprecation Timeline

PhaseDurationActions
Announced+0 daysAdd deprecation notice to docs
Warning+30 daysEmit warning in API responses
N-1 Support+90 daysOld format still accepted
Removal+180 daysOld format rejected

Deprecation Notice Format

{
  "deprecated": {
    "field": "ratings[method=CVSSv30]",
    "since": "v2.5.0",
    "removal": "v3.0.0",
    "replacement": "ratings[method=CVSSv31]",
    "migrationGuide": "docs/technical/migration/cvss-v30-removal.md"
  }
}

Adapter Locking

Lock Conditions

Adapters are locked when:

  1. Hash recorded in hashes.txt
  2. DSSE envelope signed
  3. Offline kit bundled

Unlock Process

To modify a locked adapter:

  1. Create new version (e.g., mapping-cvss4-to-cvss3-v2.csv)
  2. Update hash file with new entry
  3. Keep old version for N-1 compatibility
  4. Get Scanner TL + QA approval
  5. Sign new DSSE envelope

Audit Trail

Required Records

RecordLocationRetention
RFC decisionsdocs/rfcs/ (proposals); accepted ADRs in docs/architecture/decisions/Permanent
Hash changesGit history + CHANGELOG.mdPermanent
Approval recordsPR commentsPermanent
DSSE envelopesCAS + offline kitPermanent

Git Commit Requirements

Schema-related commits must include:

feat(scanner): Add CVSS v4 support

- Add CVSSv4 rating method
- Update adapter mapping CSV
- Update golden fixtures
- New hashes recorded

Approved-By: @scanner-tl
Reviewed-By: @qa-lead
Hash-Update: mapping-cvss4-to-cvss3.csv BLAKE3=fa600b26...

Refs: RFC-2025-012, SCAN-GAP-186-SC9