SOCOM Legacy Modding
Reference

Refusal codes

Status: Format onlyOwned by: redotcom/docs/specs/2026-10-25-pack-framework.md, redotcom/packages/viewer/src/packs/registry.ts:527-535, redotcom/packages/creator-contracts/src/packs.ts

Every code the pack checker can refuse with, generated from the code.

Status: Format only. These are the findings of the pack check and of the Thunderstore export and checker; a pack that passes is stored, not applied (the pack-framework spec, "Import").

Every finding names its code, and where it helps a repair the field or file it is about, what was expected, what was found and a hint. An error refuses the pack; a note does not, but a skipped check leaves the report incomplete, never a pass.

The pack check (pack.)

codewhen
pack.MANIFEST_MISSINGThe pack has no s2u-pack.json and is not being read through an earlier format's loader.
pack.MANIFEST_TOO_LARGEs2u-pack.json is over PACK_MANIFEST_BYTES_ADAPTATION.
pack.MANIFEST_INVALIDs2u-pack.json is not UTF-8 JSON, or is not a JSON object.
pack.LEGACY_INVALIDAn earlier format's manifest is not in that format's shape, or its own path is not a valid member path.
pack.FIELD_UNKNOWNThe manifest, or a files row, has a field the format does not list.
pack.FIELD_INVALIDA field's value breaks its rule: the wrong type, out of its bounds, not one of its allowed values, or a target written in an earlier spelling. Also a stored member whose size is not a byte count.
pack.FORMAT_VERSIONformatVersion is not 2.
pack.TARGET_MISMATCHThe pack's target is not the build's disc revision.
pack.CONTRACT_MISMATCHThe build's engine contract version is outside the pack's contract range.
pack.PATH_INVALIDA path is empty, uses backslashes, is too long or too deep, or has a control character, colon, percent sign, or an empty, hidden, reserved or unsafe segment.
pack.PATH_ESCAPEA path is absolute, names a drive, or leaves the pack with ...
pack.PATH_COLLISIONTwo files or rows are the same path once Unicode-normalised and compared without case.
pack.EXTERNAL_URIA path is a URI, or a manifest text holds an address such as https:// or begins with data:, javascript:, file: or a similar scheme. Every byte comes from the pack or your own disc.
pack.TOO_MANY_FILESThe pack holds, or files lists, more than PACK_FILES_ADAPTATION members.
pack.TOO_LARGEThe members' sizes in the manifest add up to more than PACK_BYTES_ADAPTATION, or the stored files add up to more than that plus PACK_MANIFEST_BYTES_ADAPTATION.
pack.LIMIT_EXCEEDEDdependencies, intents or handlers has more entries than its bound.
pack.MEMBER_TOO_LARGEOne member is over its bound (PACK_MEMBER_BYTES_ADAPTATION, or PACK_RULES_MEMBER_BYTES_ADAPTATION for a rules member).
pack.MEMBER_INFLATEDA member has more bytes than its declared size.
pack.MEMBER_TRUNCATEDA member has fewer bytes than its declared size.
pack.MEMBER_MISSINGA listed member is not in the pack.
pack.MEMBER_HASH_MISMATCHA member's bytes do not match the sha256 its row names.
pack.MEMBER_UNLISTEDA file in the pack is not listed in files.
pack.ROLE_MISMATCHA member's file type is not one its role allows.
pack.INTENT_MISSINGNo intent names a member.
pack.INTENT_MISMATCHA collision, gameplay or rules member is covered only by a cosmetic intent.
pack.DUPLICATE_IDdependencies names the same pack or archive twice.
pack.DEPENDENCY_MISSINGNo available pack with that id is inside the range, or the named disc archive is not present.
pack.DEPENDENCY_ARCHIVE_MISMATCHThe disc archive is present but its SHA-256 is not the one the pack names.
pack.DEPENDENCY_CYCLEThe pack depends on itself, directly or through the available packs.
pack.HANDLER_CONFLICTTwo claims in the pack are on one slot, or the slot is held by another pack and only one pack may hold it.
pack.HANDLER_UNKNOWNThe build offers no such handler for that slot.
pack.ACTION_UNKNOWNThe claimed handler has no such action.
pack.STORE_FILEA files row names one of Thunderstore's root files. Leave them out of files: they sit at the pack's root outside its identity.
pack.CONTRACT_FLOORA rules pack's contract admits an engine before RULES_PACK_CONTRACT_FLOOR.
pack.RULES_MEMBER_INVALIDA rules member is not a UTF-8 JSON object, or its capabilities is not a list of {slot, handler, actions?}.
pack.CAPABILITY_MISMATCHA rules member's capabilities and the manifest's handlers claims disagree: a capability with no matching claim or action, or a claim on a behaviour. slot that no rules member names.
pack.CHECK_SKIPPEDA note, not an error: a check could not run because the build gave it nothing to check against (the available packs, your disc archives or the handler list). The report is then incomplete, never a pass.

The Thunderstore export and checker (store.)

codewhen
store.TEAM_INVALIDThe team name is not 1 to 128 letters, digits and underscores.
store.NAME_INVALIDThe pack's id has no store name.
store.NAME_COLLISIONTwo ids, the pack's own or ones it depends on, would become the same store name. Neither is renamed: one pack has to change its id.
store.VERSION_INVALIDThe pack's version is not strictly Major.Minor.Patch (a pre-release or build part).
store.DESCRIPTION_TOO_LONGThe store description is over 250 characters.
store.WEBSITE_INVALIDThe website_url given is neither empty nor an http or https address.
store.DEPENDENCY_UNRESOLVEDNo release of a dependency inside its range was given to pin.
store.ARCHIVE_DEPENDENCYA note, not an error: a disc archive dependency has no store form and stays in s2u-pack.json.
store.FILE_MISSINGA required root file is not at the package's root.
store.MANIFEST_INVALIDThe store manifest.json is not a UTF-8 JSON object within the manifest bound, or one of its keys breaks its rule.
store.MANIFEST_MISMATCHThe store manifest's name or version is not the pack's own.
store.ICON_INVALIDicon.png is not a PNG of the required size.

On this page