#[non_exhaustive]pub enum Refusal {
Show 22 variants
Remix {
object: Hash,
},
FixedSizeChunking {
object: Hash,
chunk_size: u32,
},
NonCanonicalChunking {
object: Hash,
detail: &'static str,
},
TimestampOverflow {
object: Hash,
timestamp: u64,
},
TagName {
object: Hash,
},
RefName {
name: String,
reason: &'static str,
},
SchemaVersion {
object: Hash,
},
Gitlink {
object: Hash,
path: String,
},
TreeEntryName {
object: Hash,
name: String,
},
UnknownTreeMode {
object: Hash,
mode: String,
},
NormalizedModeInFork {
object: Hash,
mode: String,
},
NegativeTimestamp {
object: Hash,
timestamp: i64,
},
Unparsable {
object: Hash,
detail: String,
},
BlobTooLarge {
object: Hash,
size: u64,
},
TooManyTreeEntries {
object: Hash,
count: usize,
},
TreeEntryKind {
object: Hash,
name: String,
},
Unrepresentable {
object: Hash,
detail: String,
},
TooManyParents {
object: Hash,
},
AuthorPayload {
object: Hash,
},
TagChain {
object: Hash,
},
DuplicateTreeEntry {
object: Hash,
},
TreeTooDeep {
object: Hash,
},
}Expand description
A deliberate, spec’d refusal to translate (actionable; per-ref granularity is the caller’s job).
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Remix
Remix objects are not translated in v1 (SPEC-GIT-BRIDGE §8).
FixedSizeChunking
Fixed-size chunked-blob manifests have no exact inverse (SPEC-GIT-BRIDGE §4).
NonCanonicalChunking
Content-defined manifest a conformant mkit writer cannot have
produced (≤ threshold total size, or boundaries that differ
from the pinned FastCDC output) — it would not round-trip
(SPEC-GIT-BRIDGE §4).
TimestampOverflow
Commit/tag timestamp exceeds i64::MAX (SPEC-GIT-BRIDGE §6.2).
TagName
Tag object name contains bytes outside the mkit ref grammar (SPEC-GIT-BRIDGE §7.1).
RefName
Ref name is mkit-legal but git-illegal (SPEC-GIT-BRIDGE §12.1).
SchemaVersion
Object prologue carries a schema version this mapping does not cover (SPEC-GIT-BRIDGE §1.2).
Gitlink
Import: submodule gitlink entry (SPEC-GIT-IMPORT §3.3). The
object is the zero-padded git tree sha1.
TreeEntryName
Import: git tree-entry name mkit cannot store (SPEC-OBJECTS §4.1 deserialize-time rules).
UnknownTreeMode
Import: a git tree mode outside the pinned §3.3 table.
NormalizedModeInFork
Import: a historic mode would normalize, but the state dir is fork-mode (normalization breaks shared-SHA passthrough).
NegativeTimestamp
Import: pre-1970 git timestamp (mkit timestamps are u64).
Unparsable
Import: structurally unparsable git object (SPEC-GIT-IMPORT §3.2/§3.5 — refused per-ref, never coerced).
BlobTooLarge
Import: blob over the 1 GiB per-file cap (SPEC-GIT-IMPORT §3.1).
TooManyTreeEntries
Import: git tree with more entries than mkit’s decode cap — storing it would poison a signed object the store can never read back (SPEC-GIT-IMPORT §3.3).
TreeEntryKind
Import: a tree entry’s git mode contradicts the actual kind of the object it names (e.g. mode 100644 → a commit). git tools barely tolerate these; mkit’s object model cannot represent them (SPEC-GIT-IMPORT §3.3).
Unrepresentable
Import: the translated object cannot serialize under SPEC-OBJECTS caps (oversize payload, illegal field) — refused per-ref rather than failing the whole run.
TooManyParents
Import: more than 1000 parents (MAX_PARENTS).
AuthorPayload
Import: author/tagger identity payload empty or over 4096.
TagChain
Import: tag→tag chain beyond the pinned depth (16).
DuplicateTreeEntry
Import: duplicate entry names after re-sorting to mkit order (git-representable as file+dir of one name; undecodable here).
TreeTooDeep
Import: tree nesting beyond MAX_TREE_DEPTH (128).