Astro~/0.4
** Conformance
** Astro * Conformance
** /conformance/sle

Space Link Extension

PICS proforma: what this package implements, clause by clause.

Conformance Statement for pkg/sle, CCSDS 913.1-B-2, 911.1-B-5, 911.2-B-4, 911.5-B-4, 912.1-B-5


A2.1 GENERAL INFORMATION

A2.1.1 Identification of PICS

FieldValue
Date of Statement (DD/MM/YYYY)23/08/2026
PICS Serial NumberASTRO-SLE-PICS-001
System Conformance Statement Cross-ReferenceThis document

A2.1.2 Identification of Implementation Under Test (IUT)

FieldValue
Implementation Nameastro/pkg/sle
Implementation VersionSee go.mod / latest commit on main
Special ConfigurationNone
Other InformationGo library implementing the ISP1 transport and the four SLE transfer services. The user role is implemented in full. The provider role answers the association and data operations, runs production and the transfer buffer of clause 3.1.9 and annex B, and serves several service instances through Complex; what it does not hold is a service agreement, whose provision periods and parameter ranges are mission configuration. The package owns no goroutines, no timers and no sockets beyond the TML reader and writer: the caller drives every machine and supplies the clock.

A2.1.3 Identification of Supplier

FieldValue
SupplierRavi Suhag
Contact Point for QueriesGitHub, github.com/ravisuhag/astro
Implementation Name(s) and Version(s)astro/pkg/sle (Go package)
System Name(s)Astro

A2.1.4 Identification of Specification

FieldValue
SpecificationCCSDS 913.1-B-2 (ISP1), 911.1-B-5 (RAF), 911.2-B-4 (RCF), 911.5-B-4 (ROCF), 912.1-B-5 (FCLTU)
Have any exceptions been required?Yes [X] No [ ]

NOTE, Non-supported and partly supported capabilities are identified in section A2.3 with explanations. What the provider does not hold is a service agreement, which is mission configuration rather than protocol; that is marked on every row it touches.


A2.2 REQUIREMENTS LIST

Table A-1: Transport Mapping Layer (CCSDS 913.1-B-2 clause 3.3)

ItemDescriptionReferenceStatusSupportNotes
SLE-1TML message framing3.3.2MYes
SLE-2Context message3.3.2.2.4MYes
SLE-3Heartbeat message3.3.2.2.5MYes
SLE-4SLE PDU message3.3.2.2.3MYes
SLE-5Heartbeat timing3.3.3MPartial
SLE-6Message size limit-OYes

Table A-2: BER encoding (ITU-T X.690, as SLE uses it)

ItemDescriptionReferenceStatusSupportNotes
SLE-7Definite-length formX.690 8.1.3MYes
SLE-8Indefinite-length formX.690 8.1.3.6OYes
SLE-9INTEGER, OCTET STRING, OBJECT IDENTIFIER, VisibleString, NULL, SEQUENCEX.690 8MYes
SLE-10Context-specific tagsX.690 8.1.2MYes

Table A-3: Credentials and authentication (CCSDS 913.1-B-2 clause 3.1.2)

ItemDescriptionReferenceStatusSupportNotes
SLE-11ISP1 credentials3.1.2MYes
SLE-12SHA-256 digest3.1.2.3MYes
SLE-13Credential time window3.1.2.2.1MYes
SLE-14Unauthenticated associations3.1.2OYes
SLE-15Credentials on service PDUs3.1.2MYes

Table A-4: Association operations (common PDUs module)

ItemDescriptionReferenceStatusSupportNotes
SLE-16BIND invocation and return911.1-B-5 3.2MYes
SLE-17UNBIND invocation and return3.3MYes
SLE-18PEER-ABORT3.11MYes
SLE-19Service instance identifier3.2.2MYes
SLE-20Version negotiation3.2.2MPartial

Table A-5: Service state machine (911.1-B-5 clause 4.2, and the same in the other three)

ItemDescriptionReferenceStatusSupportNotes
SLE-21State 1 'unbound'4.2.1MYes
SLE-22State 2 'ready'4.2.1MYes
SLE-23State 3 'active'4.2.1MYes
SLE-24BIND valid only in state 13.2.1.6MYes
SLE-25UNBIND valid only in state 23.3.1.5MYes
SLE-26START valid only in state 23.4.1.7MYes
SLE-27STOP valid only in state 33.5.1.3MYes
SLE-28Data transfer valid only in state 33.6.1.3MYes
SLE-29Negative STOP return leaves state 3table 4-1 row 10MYes
SLE-30Unexpected PDU -> PEER-ABORT 'protocol error'table 4-1MYes
SLE-30aDuplicate invoke identifiers3.1MYes
SLE-31Return <n> timertable 4-1 note 11MPartial
SLE-32Provider-initiated BINDtable 4-1 row 1ONo

Table A-6: Return All Frames (CCSDS 911.1-B-5)

ItemDescriptionReferenceStatusSupportNotes
SLE-33RAF-START3.4MYes
SLE-34RAF-STOP3.5MYes
SLE-35RAF-TRANSFER-DATA3.6MYes
SLE-36Transfer buffer3.1.9MYes
SLE-37RAF-SYNC-NOTIFY3.7MYes
SLE-38RAF-STATUS-REPORT3.8MYes
SLE-39RAF-SCHEDULE-STATUS-REPORT3.9MYes
SLE-40RAF-GET-PARAMETER3.10MYes
SLE-41Requested frame quality3.4.2MYes

Table A-7: Return Channel Frames (CCSDS 911.2-B-4)

ItemDescriptionReferenceStatusSupportNotes
SLE-42RCF-START with GVCID3.4MYes
SLE-43GvcId SEQUENCEannex AMYes
SLE-44Transfer frame version numbersannex AMYes
SLE-45RCF-TRANSFER-DATA3.6MYes
SLE-46RCF transfer buffer3.1.9MYes
SLE-47RCF-STATUS-REPORT3.8MYes
SLE-48RCF-GET-PARAMETER3.10MYes

Table A-8: Return Operational Control Fields (CCSDS 911.5-B-4)

ItemDescriptionReferenceStatusSupportNotes
SLE-49ROCF-START3.4MYes
SLE-50ControlWordType CHOICEannex AMYes
SLE-51Update mode3.4.2MYes
SLE-52ROCF-TRANSFER-DATA3.6MYes
SLE-53ROCF transfer buffer3.1.9MYes
SLE-54ROCF-STATUS-REPORT3.8MYes
SLE-55ROCF-GET-PARAMETER3.10MYes

Table A-9: Forward CLTU (CCSDS 912.1-B-5)

ItemDescriptionReferenceStatusSupportNotes
SLE-56CLTU-START3.4MYes
SLE-57CLTU-TRANSFER-DATA3.6MYes
SLE-58CLTU identification sequence3.6.2.5MYes
SLE-59Buffer available reporting3.6.2MYes
SLE-60CLTU-ASYNC-NOTIFY3.7MYes
SLE-61CLTU-THROW-EVENT3.9MYes
SLE-62CLTU-STATUS-REPORT3.8MYes
SLE-63FCLTU production statusannex AMYes
SLE-64CltuStatus valuesannex AMYes
SLE-65CLTU-GET-PARAMETER3.10MYes

Table A-10: Delivery modes

ItemDescriptionReferenceStatusSupportNotes
SLE-66Return timely online911.1-B-5 1.2.2MPartial
SLE-67Return complete online1.2.2MPartial
SLE-68Return offline1.2.2OPartial
SLE-69Forward online912.1-B-5 1.2MPartial
SLE-70Forward offline1.2OPartial
SLE-71Data discarded notificationtable 4-1 row 14MPartial

A2.3 EXCEPTIONS AND LIMITATIONS

Non-Supported Items

ItemDescriptionReason
SLE-32Provider-initiated BIND

Partly Supported Items

ItemDescriptionWhat is missing
SLE-5, SLE-31Heartbeat and return timers
SLE-20Version negotiation
SLE-40, 48, 55, 65GET-PARAMETER for all four services
SLE-66 to SLE-71Delivery modes
The provider role, throughoutServiceProvider, Production, Complex

Fully Supported Mandatory Items

The user role is complete for all four services: BIND, UNBIND, PEER-ABORT, START, STOP, SCHEDULE-STATUS-REPORT, and each service's data operations, TRANSFER-DATA and SYNC-NOTIFY and STATUS-REPORT for the return services, TRANSFER-DATA and THROW-EVENT and ASYNC-NOTIFY and STATUS-REPORT for FCLTU. GET-PARAMETER decodes and answers cleanly, and its per-service parameter CHOICEs are named: all 50 alternatives across the four services, with integer values read and structured ones left as raw BER.

AreaItemsImplementation
TransportSLE-1-6tml.go, framing, context, heartbeat.
EncodingSLE-7-10ber.go, the definite-length subset SLE uses.
AuthenticationSLE-11-15credentials.go, assoc.go.
AssociationSLE-16-20bind.go, assoc.go.
State machineSLE-21-31service.go, shared by all four services.
RAFSLE-33-41raf.go.
RCFSLE-42-48rcf.go, common.go for the GVCID.
ROCFSLE-49-55rocf.go.
FCLTUSLE-56-65fcltu.go.
Delivery modesSLE-66-71delivery.go.
Productionclause 3.1.9.1, annex Bproduction.go, the transfer buffer, the release timer, backpressure, the production status machine.
Service instances910.4-B-2 clause 4.4.2complex.go, the instance set and BIND routing.

A2.4 PRODUCTION AND THE TRANSFER BUFFER

Production implements clause 3.1.9.1 and annex B. It owns no clock: every method that involves time takes the time, and the release timer is read through Due, Expired and Deadline.

RequirementReferenceSupportNotes
Transfer buffer holds transfer-data and sync-notify recordsclause 3.1.9.1.2, clause 3.1.9.1.13Yes
Release timer starts on insertion into an empty bufferclause 3.1.9.1.4Yes
Timer duration is the latency limitclause 3.1.9.1.5Yes
Buffer holds transfer-buffer-size recordsclause 3.1.9.1.6Yes
Release when full, on timer expiry, or on 'end of data'clause 3.1.9.1.7Yes
Records released in insertion orderclause 3.1.9.1.8Yes
Backpressure discards the whole buffer and inserts 'data discarded due to excessive backlog'clause 3.1.9.1.9Yes
Buffer size temporarily incremented by one while that notification waitsclause 3.1.9.1.10Yes
An accepted STOP builds and passes the buffer immediatelyclause 3.1.9.1.11Yes
The buffer is cleared when the association is abortedclause 3.1.9.1.12Yes
Production status transitionstable B-1Yes
Initial production status is haltedclause B2.3Yes
A status change is notified through the buffer, in sequenceclause 3.1.9.1.3Yes

A2.5 SERVING SEVERAL SERVICE INSTANCES

Complex holds the configured instances and routes an inbound BIND.

RequirementSupportNotes
Several instances served at onceYes
Route a BIND to the instance it namesYes
Refuse an unknown instanceYes
Refuse an instance already boundYes
Refuse an unsupported versionYes
Refuse for service-agreement reasonsN by design

Wire test vectors

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

File
sle/association.json6 vectors
sle/ber.json23 vectors

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.