This document maps every user-facing feature area to its documentation status, identifies gaps, and proposes priorities for follow-up work. Keep this file updated as new features are added or gaps are closed.
Legend
| Symbol | Meaning |
|---|
| ✅ | Documented with examples |
| 📄 | Documented, no examples |
| ⚠️ | Partially documented |
| ❌ | Not documented |
1. Code Generation
1.1 Language Flags
1.2 Output Path Options
| Feature | Docs | Examples | Gap | Priority |
|---|
--c_path | ✅ | ✅ | — | — |
--cpp_path | ✅ | ✅ | — | — |
--ts_path | ✅ | ✅ | — | — |
--py_path | ✅ | ✅ | — | — |
--js_path | ✅ | ⚠️ | No dedicated JS guide | Medium |
--gql_path | ✅ | ❌ | No GraphQL guide | Medium |
--csharp_path | ✅ | ✅ | — | — |
--rust_path | ✅ CLI Reference | ✅ Rust SDK | — | — |
--catalog_path | ✅ CLI Reference | 📄 | sf_compile.json catalog mentioned; full schema not documented | Low |
1.3 SDK & Advanced Flags
| Feature | Docs | Examples | Gap | Priority |
|---|
--sdk | ✅ SDK Overview | ✅ | — | — |
--sdk_embedded | ✅ C++ SDK | ✅ | — | — |
--equality | ✅ CLI Reference | ❌ | No usage example showing equality operator output | Low |
--force | ✅ CLI Reference | ❌ | Example showing hash-based caching would help | Low |
--hash_path | ✅ CLI Reference | ❌ | No example | Low |
--generate_tests | ✅ CLI Reference | ❌ | No explanation of output format | Medium |
--validate | ✅ CLI Reference | ❌ | No example showing validation errors | Low |
--debug | ✅ CLI Reference | ❌ | No example of debug output | Low |
--csharp_namespace | ✅ CLI Reference | ✅ | — | — |
--csharp_sdk | ✅ C# SDK | ✅ | — | — |
--target_framework | ✅ CLI Reference | ❌ | No example showing framework targeting | Low |
--csharp_legacy_enum_names | ❌ | ❌ | Migration flag not documented | Medium |
2. Proto Field Types
| Type | Docs | Examples | Gap | Priority |
|---|
int8 | ✅ Message Definitions | ✅ | — | — |
int16 | ✅ | ✅ | — | — |
int32 | ✅ | ✅ | — | — |
int64 | ✅ | ✅ | — | — |
uint8 | ✅ | ✅ | — | — |
uint16 | ✅ | ✅ | — | — |
uint32 | ✅ | ✅ | — | — |
uint64 | ✅ | ✅ | — | — |
float | ✅ | ✅ | — | — |
double | ✅ | ✅ | — | — |
bool | ✅ | ✅ | — | — |
string (fixed) | ✅ | ✅ | — | — |
string (variable, max_size) | ✅ | ✅ | — | — |
repeated (fixed array) | ✅ | ✅ | — | — |
repeated (bounded array) | ✅ | ✅ | — | — |
repeated string | ✅ | ✅ | — | — |
repeated <message> | ✅ | ✅ | — | — |
enum | ✅ | ✅ | — | — |
| Nested messages | ✅ | ✅ | — | — |
oneof (union) | ✅ | ✅ | — | — |
oneof with discriminator option | ✅ | ✅ | — | — |
Envelope messages (is_envelope) | ✅ | ✅ | — | — |
import statements | ✅ | ✅ | — | — |
flatten option | ⚠️ Message Definitions | ❌ | Documented for Python/GraphQL only; no cross-language example | Medium |
2.1 Message Options
| Option | Docs | Examples | Gap | Priority |
|---|
msgid | ✅ | ✅ | — | — |
variable | ✅ | ✅ | — | — |
pkgid | ✅ | ✅ | — | — |
is_envelope | ✅ | ✅ | — | — |
3. Framing System
| Header | Docs | Examples | Gap | Priority |
|---|
| Basic (2 bytes) | ✅ Framing Details | ✅ | — | — |
| Tiny (1 byte) | ✅ | ✅ | — | — |
| None (0 bytes) | ✅ | ✅ | — | — |
3.2 Payload Types
| Payload | Docs | Examples | Gap | Priority |
|---|
| Minimal | ✅ | ✅ | — | — |
| Default | ✅ | ✅ | — | — |
| Extended | ✅ | ✅ | — | — |
| ExtendedMultiSystemStream | ✅ | ⚠️ | Network profile shown but multi-node routing not exemplified | Medium |
| Other payload variants (SysComp, Seq, etc.) | ❌ | ❌ | Additional payload variants in payload_types.hpp are not documented | Low |
3.3 Frame Profiles
| Profile | Docs | Examples | Gap | Priority |
|---|
| Standard | ✅ | ✅ | — | — |
| Sensor | ✅ | ✅ | — | — |
| IPC | ✅ | ✅ | — | — |
| Bulk | ✅ | ✅ | — | — |
| Network | ✅ | ⚠️ | SysId/CompId/Seq fields usage not exemplified end-to-end | Medium |
| Custom profile creation | ⚠️ Custom Features | ❌ | Mentions concept but no code example for creating a custom profile | Medium |
3.4 Checksum
| Feature | Docs | Examples | Gap | Priority |
|---|
| Fletcher-16 algorithm | ✅ Framing Details | ❌ | Algorithm explanation exists; no walkthrough | Low |
| Checksum failure handling | ⚠️ | ❌ | Negative test scenarios not described in docs | Medium |
4. SDK Classes
4.1 Encoders / Writers
| Class | Language | Docs | Examples | Gap | Priority |
|---|
FrameEncoderWithCrc | C++ | ⚠️ | ❌ | Not mentioned by name in docs | Medium |
FrameEncoderMinimal | C++ | ⚠️ | ❌ | Not mentioned by name in docs | Medium |
BufferWriter<Config> | C++ | ✅ | ✅ | — | — |
ProfileStandardWriter et al. | C++ | ✅ | ✅ | — | — |
ProfileStandardWriter | Python | ✅ | ✅ | — | — |
ProfileStandardWriter | TypeScript | ✅ | ✅ | — | — |
FrameEncoder<TProfile> | C# | ⚠️ C# SDK | ❌ | Constructor usage not shown | Medium |
4.2 Parsers / Readers
| Class | Language | Docs | Examples | Gap | Priority |
|---|
BufferParserWithCrc | C++ | ❌ | ❌ | Not documented | Medium |
BufferParserMinimal | C++ | ❌ | ❌ | Not documented | Medium |
BufferReader<Config> | C++ | ✅ | ✅ | — | — |
AccumulatingReader<Config> | C++ | ✅ | ✅ | — | — |
ProfileStandardAccumulatingReader | C++ | ✅ | ✅ | — | — |
ProfileStandardAccumulatingReader | Python | ✅ | ✅ | — | — |
ProfileStandardAccumulatingReader | TypeScript | ✅ | ✅ | — | — |
AccumulatingReader | Rust | ✅ Rust SDK | ✅ | — | — |
FrameDecoder / parsers | C# | ⚠️ | ❌ | Types exist but not shown by name | Medium |
4.3 High-Level SDK
4.4 Transports
| Transport | C++ | Python | TypeScript | C# | Gap | Priority |
|---|
| Serial | ✅ | ✅ | ✅ | ✅ | — | — |
| TCP | ✅ | ✅ | ✅ | ✅ | — | — |
| UDP | ✅ | ✅ | ✅ | ✅ | — | — |
| WebSocket | ✅ | ⚠️ | ✅ | ✅ | Python WebSocket only mentioned; no example | Low |
| Async (Python) | ✅ Python SDK | ✅ | N/A | N/A | — | — |
5. Language-Specific Generated Code
| Feature | C | C++ | Python | TypeScript | JavaScript | C# | GraphQL | Rust | Gap | Priority |
|---|
| Message struct/class | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — | — |
| Serialize / encode | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | N/A | ✅ | — | — |
| Deserialize / decode | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | N/A | ✅ | — | — |
| Enum to string | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | N/A | ❌ | Rust not documented | Medium |
Equality operators (--equality) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | N/A | ❌ | No docs for any language | Medium |
get_message_info function | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | N/A | ❌ | Rust not documented | Medium |
6. Getting Started
7. Reference
| Topic | Docs | Examples | Gap | Priority |
|---|
| CLI reference | ✅ CLI Reference | ✅ | — | — |
| Build integration | ✅ Build Integration | ✅ | — | — |
| Development guide | ✅ Development | ✅ | — | — |
| Testing guide | ✅ Testing | ✅ | — | — |
| Wireshark dissector | ❌ | ❌ | wireshark/ directory and Lua dissector not documented in docs site | Low |
8. Summary of Gaps by Priority
High Priority
-
JavaScript guide — JS generation is documented only via the CLI table; there is no language usage guide comparable to the Python/TypeScript pages.
-
GraphQL guide — No usage guide or example for --build_gql / GraphQL schema output.
Medium Priority
-
--csharp_legacy_enum_names — Migration flag not documented anywhere.
-
--generate_tests output format — Flag is listed but the format of the generated test code is not explained.
-
BufferParserWithCrc / BufferParserMinimal — These lower-level C++ parser classes are not described by name or exemplified.
-
Network profile end-to-end example — The SysId/CompId/Seq fields in ExtendedMultiSystemStream payloads are not exemplified in a multi-node scenario.
-
flatten option cross-language — Currently noted as Python/GraphQL only; should clarify which languages support it.
-
Equality operators — --equality flag is listed but generated code examples are not shown for any language.
-
Rust enum_to_string / get_message_info — Minor Rust coverage gaps; core encode/decode is documented.
Low Priority
-
Custom payload variants — SysComp, Seq, and other non-profile payload types in payload_types.hpp are not documented.
-
sf_compile.json full schema — The --catalog_path flag is now documented in the CLI reference but the full JSON schema is not described.
-
Wireshark dissector — The wireshark/struct_frame.lua dissector is present but not linked from the docs site.
-
Fletcher-16 walkthrough — Algorithm is named but no byte-level walkthrough is provided.
-
--equality, --force, --hash_path, --validate, --debug, --target_framework — Each of these flags lacks a code example showing the effect.
Last updated: 2026-05-04. Update this document whenever a gap is closed or a new feature is added.