Astro~/0.4
** Conformance
** Astro * Conformance
** /conformance/xtce

XTCE

Element coverage matrix: what pkg/xtce does with each schema element, and why XTCE has no PICS.

Element coverage for pkg/xtce, XTCE 1.2 (OMG), CCSDS 660.1-G-2


Why a matrix and not a PICS

Every other package in this repository carries a PICS proforma, because CCSDS Blue Books publish one to fill in. XTCE has none to fill in: it is an OMG schema, and CCSDS 660.1-G-2 is a Green Book, a guide, not a Recommended Standard. So this file substitutes a coverage matrix, listing the schema's elements against what the package does with each. It lives beside the protocol page so the documentation triad stays uniform.

What the statuses mean

StatusMeaning
SupportedModeled as Go types, decoded, and reachable through the API.
OpaqueParsed as far as the XML allows and kept as raw bytes, so a caller can handle it and a later version can model it without changing what Load accepts.
IgnoredDecoded past without error. The element does not appear in the model. A file using it still loads.
UnsupportedSame as ignored on the wire, but named here because something depends on it: a parameter whose type is an unsupported kind will fail Validate with an unresolved reference.

The loader rejects malformed XML, a non-SpaceSystem root, documents past the size or depth limits, and a document whose values cannot be read as their schema types, such as a FixedValue that is not a number (ErrInvalidValue). Element coverage never fails Load: every status in the tables below loads. Values inside a covered element still have to parse.


Table A-1: Document structure

ElementStatusNotes
SpaceSystemSupported
SpaceSystem/@nameSupported
SpaceSystem/@shortDescriptionSupported
SpaceSystem/@operationalStatusSupported
LongDescriptionSupported
HeaderSupported
Header/AuthorSet, NoteSet, HistorySetIgnored
AliasSetIgnored
AncillaryDataSetIgnored
TelemetryMetaDataSupported
CommandMetaDataSupported
ServiceSetIgnored
Namespace http://www.omg.org/spec/XTCE/20180204Supported

Table A-2: Parameters

ElementStatusNotes
ParameterSetSupportedTelemetry and command sides share one name space, matching the schema's parameterNameKey.
ParameterSupportedName, parameterTypeRef, initial value, descriptions.
ParameterRefIgnoredThe schema allows a reference in place of a definition.
ParameterPropertiesIgnoredData source, persistence, read-only.

Table A-3: Parameter types

ElementStatusNotes
IntegerParameterTypeSupported
FloatParameterTypeSupported
EnumeratedParameterTypeSupported
StringParameterTypeSupported
BinaryParameterTypeSupported
BooleanParameterTypeSupported
AbsoluteTimeParameterTypeSupported
RelativeTimeParameterTypeOpaque
ArrayParameterTypeOpaque
AggregateParameterTypeOpaque
UnitSet, UnitSupported
ValidRangeIgnored
ToStringIgnored
@baseTypeOpaque

Table A-4: Data encodings

ElementStatusNotes
IntegerDataEncodingSupported
FloatDataEncodingSupported
StringDataEncodingSupported
BinaryDataEncodingSupported
@changeThresholdSupported
@bitOrder, @byteOrderSupported
ErrorDetectCorrectIgnored
FromBinaryTransformAlgorithmIgnored
ToBinaryTransformAlgorithmIgnored

Table A-5: Calibrators

ElementStatusNotes
DefaultCalibratorSupported
PolynomialCalibratorSupported
SplineCalibratorSupported
MathOperationCalibratorSupported
ContextCalibratorListOpaque

Table A-6: Containers

ElementStatusNotes
ContainerSetSupported
SequenceContainerSupported
EntryListSupported
ParameterRefEntrySupported
ContainerRefEntrySupported
ParameterSegmentRefEntryOpaque
ContainerSegmentRefEntryOpaque
StreamSegmentEntryOpaque
IndirectParameterRefEntryOpaque
ArrayParameterRefEntryOpaque
LocationInContainerInBitsSupported
RepeatEntrySupported
IncludeConditionOpaque
TimeAssociationIgnored
BaseContainerSupported
BaseContainer/RestrictionCriteriaYes
RestrictionCriteria/BooleanExpressionSupported
ConditionSupported
Condition/@useCalibratedValueYes
Condition/@instanceParsed
RestrictionCriteria/CustomAlgorithmOpaque
RestrictionCriteria/NextContainerParsed
Comparison/@useCalibratedValueYes
Comparison/@instanceParsed
DynamicValueSupported
LinearAdjustmentSupported
DefaultRateInStream, RateInStreamSetIgnored
BinaryEncoding on a containerIgnored

Table A-7: Commands

ElementStatusNotes
MetaCommandSetSupported
MetaCommandSupported
MetaCommandRefSupported
BlockMetaCommandOpaque
BaseMetaCommandSupported
ArgumentList, ArgumentSupported
ArgumentTypeSet and its typesUnsupported
CommandContainerUnsupported
TransmissionConstraintListUnsupported
VerifierSetUnsupported
DefaultSignificance, ContextSignificanceListUnsupported
InterlockUnsupported
ParameterToSetList, ParametersToSuspendAlarmsOnSetUnsupported

A warning about the command side. Everything that makes a command safe to send (verifiers, constraints, significance) is in the unsupported list. This package can tell you a command exists and what arguments it takes. It cannot tell you whether sending it is allowed or what it will do. Do not build an uplink path on this model.

Table A-8: Alarms

ElementStatusNotes
DefaultAlarmIgnoredOn numeric, enumerated and other types.
ContextAlarmListIgnored
StaticAlarmRanges, ChangePerSecondAlarmRangesIgnored
AlarmConditionsIgnored

Alarms are ignored rather than kept opaque. Half-modeled alarm limits are worse than none: a caller who found some of them present might reasonably assume all of them were.

Table A-9: Streams, messages, algorithms, services

ElementStatusNotes
StreamSet and every stream typeIgnored
MessageSet, MessageIgnored
AlgorithmSet and every algorithm typeIgnored
ServiceSetIgnored

Table A-10: References and names

FeatureStatusNotes
Absolute references (/A/B/C)Supported
Relative references (../B/C, ./C)Supported
Bare namesSupportedSearched in the referencing system, then each ancestor to the root.
NameReferenceType patternSupportedMalformed references are rejected with ErrInvalidReference.
Alias-based resolutionUnsupportedAliasSet is ignored, so nothing resolves by alias.

Table A-11: Validation

CheckStatusNotes
XSD schema conformanceUnsupported
parameterTypeRef resolvesSupported
parameterRef in entries resolvesSupported
containerRef in entries resolvesSupported
BaseContainer resolvesSupported
Container inheritance is acyclicSupported
Duplicate names within a SpaceSystemSupported
Encoding enumerations are legalSupported
argumentTypeRef resolvesUnsupported
metaCommandRef resolvesUnsupported

Limits

LimitValueWhy
MaxDocumentSize64 MiB
MaxDepth100 levels

Growing the coverage

This matrix is the contract for scope. Anything moving out of Unsupported or Opaque lands with its model structs, a fixture exercising it, and a change to its row here, in the same commit. A status that drifts from the code is worse than a gap that is written down.


Wire test vectors

The octets backing this statement live in the vector corpus — 8 published corpus files. Each vector names the clause it comes from and carries the derivation that produced it.

File
xtce/documents.json8 corpus files

These are data files, so any implementation can check itself against the same octets. See CONTRACT.md for how, and how this is verified for what rests on a published vector versus a reading of the clause.