Skip to content

fix(CCSDSPack): pre-tag MCU API boundary and documentation consistency audit - #173

Open
Inczert wants to merge 28 commits into
developfrom
audit/v2.1-pretag-source-doc-consistency
Open

Inczert wants to merge 28 commits into
developfrom
audit/v2.1-pretag-source-doc-consistency

Conversation

@Inczert

@Inczert Inczert commented Oct 11, 2026 •

Copy link
Copy Markdown
Member

Scope

Full pre-tag review of CCSDSPack v2.1.0 develop at 85e90eca475129773bd270e755b185b5f5d4276d, covering public C++17 and C11 API contracts, MCU/host boundaries, sources, examples, configuration parser behavior, package/CI surfaces, current standards statements and historical release records.

Confirmed MCU public-API defect (release blocker)

  • inc/CCSDSUtils.h advertised print*, writeBinaryFile(), readBinaryFile(), and fileExists() on CCSDS_MCU, but src/CCSDSUtils.cpp excludes their definitions on MCU. Guard only the truly hosted declarations; keep cross-platform CRC and formatting helpers available.
  • ccsds::Manager::read() and write() were similarly advertised/compiled on MCU and referenced excluded binary I/O routines. Align both their public declarations and definitions with the existing CCSDS_MCU guard on hosted template-file APIs. Packet/Manager in-memory buffer APIs are unchanged.
  • The old ccsds_secondary_header_flag example config key is ignored; remove it. The derived flag is governed by the installed secondary header.

Documentation claims verified/corrected

  • CRC-16/CCITT-FALSE is the default, not the only CRC16 configuration: C++ Packet::setCrcConfig() and C11 CRC config exist.
  • Hosted CLI sync_pattern_enable, sync_pattern, and decoder validation_enable keys are implemented but missing from the configuration reference. Document them and the fact that unknown typed keys may be accepted yet unused.
  • Describe existing non-owning DataField::getApplicationDataView() and its lifetime.
  • Distinguish the October 4 earlier hardware results from the physically tested October 11 implementation SHA 3c93e6b...; remove redundant status table and avoid treating prior target PASS as automatically qualifying these later MCU API guard changes.
  • Keep substantive CCSDS compliance matrices, PUS-C evidence, Validator matrix, performance results and v1.2 historical documents separate: these carry distinct traceability and are not accidental duplicates.

Qualification and controls

Base: develop only; do not merge to main, tag, or publish before tests.

The changes affect public MCU headers and the MCU Manager archive, so the final source SHA is different from physically validated 3c93e6b.... Run full hosted CI and rebuild MCU packages. After acceptance on develop, renew native Pi 5 and physical H755 qualification according to the project's release policy; record final hashes on the accepted commit. Do not treat historical tests as new target evidence.

No wire-format codec algorithms, C11 core, or hardware test harness source are changed.

Additional full-audit findings

  • The public getBinaryString(uint32_t, int32_t) helper previously allowed a shift >=32 and signed overflow for excessive bits; bounded to [1, 32] with empty output for non-positive bits. getBitsSpaces() similarly handles non-positive widths safely. Added one hosted C++ regression case, so the corrected candidate targets 135/135 native tests, whereas the completed October 11 physical Pi evidence retains its historically accurate 134/134 count.
  • The generic regression fixture retained the same ignored ccsds_secondary_header_flag config key as the example; removed.
  • Existing caller-buffer Packet::serialize(uint8_t *, size_t) was under-documented; added to raw-buffer documentation.
  • The historical v1.2 STM32 guide still instructed a checkout of current develop even though its CubeIDE source tree was removed for v2.1. It now directs reproduction to tag v1.2.0 and links to the current DAS/OpenOCD instructions.
  • Reconciled duplicate status/evidence blocks in docs/V2_HARDWARE_VALIDATION.md. Kept independently valuable conformance matrices and historical performance snapshots rather than deleting traceability.

Final audit scope and limitations

  • Repository tree: 205 tracked files. Checked all Markdown documents for local-link targets, leftover removed-doc references, major release/branch statements and documentation architecture; link scan returned zero broken local targets.
  • Checked all 12 C11 public-header / src/c module pairs and found definitions for 63 public ccsds_* functions (excluding intentionally inline helpers).
  • Reviewed C++ primary public-header/implementation boundaries, host-only compilation guards, config/CLI settings, examples, packaging and Actions workflows.
  • This is source/static consistency review plus GitHub CI. Physical validation on a new source SHA remains a separate gate.

Not a wire-format change: corrections touch C++ MCU API boundaries and an ancillary diagnostic formatter, not the C11 Space Packet/PUS/CUC codecs. Do not tag or promote to main until the new SHA is CI/target-qualified and the acceptance list is updated.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant