holger-traits — crate card
Reverse-engineered (from source — verify, don't trust the name)
- One-line pitch: The workspace's shared vocabulary crate — artifact identity/format types and the backend/connector traits every server repo and agent connector implements.
- Does: Defines
ArtifactId,ArtifactFormat(Maven3/Pip/Rust/Go/Nuget/Npm/Gem/Deb/Rpm/Helm/Docker/Conda/Composer/Znippy/Raw),ArtifactEntry, theRepositoryBackendTrait(fetch/put/list), theHolgerObjectcore API, andConnectorTrait+RemoteAsset/RemoteRepository/ConnectorAuthfor the agent side.ArtifactFormat::znippy_type_id()derives the znippypkg_type/DenseUnion discriminant directly from znippy-common's plugins so the two can't drift (asserted byznippy_type_ids_match_*tests); only Pip(2)/Maven3(3) stay literals to keep the base dep graph thin. - Key deps:
znippy-common(source of truth for pkg_type discriminants),serde,async-trait,anyhow; optional gatednornir-testmatrix. - Shape: lib, single
lib.rs. Foundational leaf — deliberately does NOT depend on the python/maven znippy plugin crates. - Observed role in the workspace: Depended on by essentially everything — server/lib, agent/lib, ui, all connectors and repository backends. The type + trait seam the whole workspace is wired through.
Fill in (one line each — only the human knows these)
- Primary consumer(s):
- Why it exists (vs the obvious alternative):
- Hard constraint (airgap / no-C-deps / no-FFI / pure-Rust / etc.):
- Release cadence & independence (rides a parent? own repo someday?):
- Status (production / prototype / experimental / stubbed):
- Must-NOT-change invariant:
- Biggest known gap or TODO:
- Anything a newcomer would get wrong about it: