Skip to content

README omits 5 of 11 production crates, including both primary execution engines — the enumeration gap from #5 on a second document #8

Description

@iceteaSA

Verified at 1675e6d. Same class as #2 and #5 (a declared surface absent from the document that describes it), on a third document, found by the enumeration act those issues argued for.

Result

README.md says "Production crates live under crates/" and lists 6. There are 11.

crate in README
synapse-core listed
synapse-engine-cuda absent
synapse-engine-ort listed
synapse-engine-owned absent
synapse-module listed
synapse-opctl absent
synapse-worker-ane listed
synapse-worker-cuda absent
synapse-worker-decode absent
synapse-worker-llama listed
synapse-worker-mlx listed

Detector control, since a check that reports nothing missing has not shown it can: a probe for a crate that cannot be present (synapse-zzz-nonexistent) correctly reported MISSING, so the not-found branch fires.

Why these five matter more than a count

The two absent engines are the ones a reader needs first. ARCHITECTURE.md calls synapse-engine-owned the "primary in-process execution engine" and synapse-engine-cuda the "primary in-process CUDA execution engine" — so the README's production-crate list names the ONNX fallback engine and neither primary. A reader deciding whether synapse runs on their hardware is reading the one list that omits both answers.

synapse-opctl is the operator entry point (ck-synapse-opctl), and synapse-worker-decode / synapse-worker-cuda are the supervised workers those engines drive.

How this was reached, since it is not a doc-review finding

This came out of a concrete evaluation: whether synapse could replace a set of HTTP inference containers on an RTX 5090 box. Answering "which engines exist and what do they run on" required reading Cargo.toml members, then 12 #[cfg(target_os = "macos")] gates in lib.rs, then the CUDA crate's dtype surface — because the README's crate list is incomplete and there is no platform×task matrix anywhere.

That is the cost being reported. Not that the doc is untidy: that the fastest path to "can this run here" currently goes through the source.

Suggested fix

Two parts, the second optional:

  1. Complete the list. Same shape as wire_contract_documents_every_management_operation — a test can enumerate crates/* against the README and fail on drift, which would keep this closed rather than fixing it once. Same caveat as Three emitted StableErrorCode values are undocumented in the consumer wire contract — and the new drift guard does not cover this axis #5: that guards the crate-name axis only.

  2. Consider a short platform×task matrix — which tasks (embed.*, rerank.score, owned_decode.*) are served by which engine on macOS vs Linux vs Windows. Optional because it is prose rather than an enumerable axis, and prose cannot be guarded the way a name list can. But it is the specific thing whose absence cost the most time here.

Related

The diff-shaped rule proposed on #5fail when a public surface grows without its documenting file changing in the same commit — would cover this document too, and would have caught these five at the commit that added each crate. Still unbuilt; noting it because this is now the third document exhibiting the same gap.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions