{
  "$comment": "IDOP 1.x error code registry. Codes keep their meaning forever (§16). Meanings are diagnostic text, not localised UI.",
  "registry": "https://idoplabs.com/spec/idop/1.0/errors/",
  "codes": [
    {
      "code": "IDOP-BUNDLE-ENTRY-001",
      "section": "§14, Containers",
      "meaning": "The bundle does not carry the entry that was asked for."
    },
    {
      "code": "IDOP-BUNDLE-INPUT-001",
      "section": "§14, Containers",
      "meaning": "The declared entry lengths do not match the bundle payload."
    },
    {
      "code": "IDOP-BUNDLE-INTEGRITY-001",
      "section": "§14, Containers",
      "meaning": "The manifest names a file the bundle does not carry. It is incomplete or was edited after packing."
    },
    {
      "code": "IDOP-BUNDLE-INTEGRITY-002",
      "section": "§14, Containers",
      "meaning": "A file in this bundle does not match the digest its manifest recorded. It was corrupted or altered."
    },
    {
      "code": "IDOP-BUNDLE-INTEGRITY-003",
      "section": "§14, Containers",
      "meaning": "The bundle manifest lists the same entry twice."
    },
    {
      "code": "IDOP-BUNDLE-INTEGRITY-004",
      "section": "§14, Containers",
      "meaning": "This bundle carries a file its manifest does not declare. An undeclared extra file is refused, not imported."
    },
    {
      "code": "IDOP-BUNDLE-LIMIT-001",
      "section": "§14, Containers",
      "meaning": "This bundle exceeds the total size the Reader will expand."
    },
    {
      "code": "IDOP-BUNDLE-LIMIT-002",
      "section": "§14, Containers",
      "meaning": "This bundle contains more entries than the Reader will accept."
    },
    {
      "code": "IDOP-BUNDLE-LIMIT-003",
      "section": "§14, Containers",
      "meaning": "One entry in this bundle exceeds the per-file size limit."
    },
    {
      "code": "IDOP-BUNDLE-MANIFEST-001",
      "section": "§14, Containers",
      "meaning": "The bundle manifest is not valid JSON, or is too large."
    },
    {
      "code": "IDOP-BUNDLE-MANIFEST-002",
      "section": "§14, Containers",
      "meaning": "The bundle manifest does not match the schema: a field is missing, unknown, or the wrong shape."
    },
    {
      "code": "IDOP-BUNDLE-MANIFEST-003",
      "section": "§14, Containers",
      "meaning": "The bundle manifest is the right shape but the wrong contents."
    },
    {
      "code": "IDOP-BUNDLE-MANIFEST-004",
      "section": "§14, Containers",
      "meaning": "The bundle name is empty or longer than 120 characters."
    },
    {
      "code": "IDOP-BUNDLE-MANIFEST-005",
      "section": "§14, Containers",
      "meaning": "The bundle manifest could not be serialised."
    },
    {
      "code": "IDOP-BUNDLE-PATH-001",
      "section": "§14, Containers",
      "meaning": "This bundle carries an entry outside its `content/` directory. A bundle transports a directory and nothing else."
    },
    {
      "code": "IDOP-BUNDLE-PATH-002",
      "section": "§14, Containers",
      "meaning": "This bundle carries a path the Reader refuses: it escapes the directory, is absolute, or uses a name a filesystem would read differently."
    },
    {
      "code": "IDOP-BUNDLE-PATH-003",
      "section": "§14, Containers",
      "meaning": "This bundle contains another bundle. One import expands exactly one level."
    },
    {
      "code": "IDOP-BUNDLE-PROFILE-001",
      "section": "§14, Containers",
      "meaning": "This file has no `idop.bundle.json`, so nothing describes what it is meant to carry."
    },
    {
      "code": "IDOP-BUNDLE-SCHEMA",
      "section": "§14, Containers",
      "meaning": "The bundle manifest does not validate against the bundle schema."
    },
    {
      "code": "IDOP-BUNDLE-SCOPE-001",
      "section": "§14, Containers",
      "meaning": "A bundle scope must be workspace, folder or project."
    },
    {
      "code": "IDOP-BUNDLE-UNSUPPORTED-001",
      "section": "§14, Containers",
      "meaning": "This bundle declares a format or version this Reader does not implement."
    },
    {
      "code": "IDOP-CREDENTIAL-MISSING",
      "section": "§12.2",
      "meaning": "The document needs a credential that is not configured in this Reader."
    },
    {
      "code": "IDOP-CREDENTIAL-ORIGIN-DENIED",
      "section": "§12.2",
      "meaning": "The document wants a Reader credential sent to an origin that does not belong to that provider. The Reader refuses, whatever the manifest declares."
    },
    {
      "code": "IDOP-ENV-DENIED",
      "section": "§12.3",
      "meaning": "The document asked for an environment binding it never declared."
    },
    {
      "code": "IDOP-ENV-MISSING",
      "section": "§12.3",
      "meaning": "The document needs an environment variable that is not set."
    },
    {
      "code": "IDOP-HOST-NO-INPUT",
      "section": "§11.4",
      "meaning": "host.getInputFile() was called by a document that was not opened to display a file."
    },
    {
      "code": "IDOP-ITEMS-CYCLE-001",
      "section": "Containers §5",
      "meaning": "The item hierarchy contains a cycle, so no item has a root."
    },
    {
      "code": "IDOP-ITEMS-DECL-001",
      "section": "Containers §5",
      "meaning": "This document’s Portable Items declaration does not match the contract."
    },
    {
      "code": "IDOP-ITEMS-DECL-002",
      "section": "Containers §5",
      "meaning": "The Portable Items declaration is not well-formed JSON of the expected shape."
    },
    {
      "code": "IDOP-ITEMS-DECL-003",
      "section": "Containers §5",
      "meaning": "A Portable Items path is not a valid storage path — it escapes storage, or is absolute."
    },
    {
      "code": "IDOP-ITEMS-DECL-004",
      "section": "Containers §5",
      "meaning": "A shared dependency cannot live inside an item’s own state."
    },
    {
      "code": "IDOP-ITEMS-DECL-005",
      "section": "Containers §5",
      "meaning": "The item index cannot live inside an item’s own state."
    },
    {
      "code": "IDOP-ITEMS-DEPENDENCY-001",
      "section": "Containers §5",
      "meaning": "An item depends on something its manifest did not declare. An item cannot widen what it may carry."
    },
    {
      "code": "IDOP-ITEMS-DEPENDENCY-002",
      "section": "Containers §5",
      "meaning": "An item depends on state the document does not carry."
    },
    {
      "code": "IDOP-ITEMS-DUPLICATE-001",
      "section": "Containers §5",
      "meaning": "The item index lists the same item identifier twice."
    },
    {
      "code": "IDOP-ITEMS-INDEX-001",
      "section": "Containers §5",
      "meaning": "The document declares an item index it has not written yet."
    },
    {
      "code": "IDOP-ITEMS-INDEX-002",
      "section": "Containers §5",
      "meaning": "The Portable Items index is not valid JSON or exceeds its byte limit."
    },
    {
      "code": "IDOP-ITEMS-INDEX-003",
      "section": "Containers §5",
      "meaning": "The item index does not match the contract’s schema."
    },
    {
      "code": "IDOP-ITEMS-INDEX-004",
      "section": "Containers §5",
      "meaning": "The Portable Items index does not have the expected shape."
    },
    {
      "code": "IDOP-ITEMS-LIMIT-001",
      "section": "Containers §5",
      "meaning": "This document exposes more items than the Reader will list."
    },
    {
      "code": "IDOP-ITEMS-LIMIT-002",
      "section": "Containers §5",
      "meaning": "Exporting this item would exceed the size the Reader will derive."
    },
    {
      "code": "IDOP-ITEMS-NOT-FOUND-001",
      "section": "Containers §5",
      "meaning": "That item is not in the document’s index."
    },
    {
      "code": "IDOP-ITEMS-PARENT-001",
      "section": "Containers §5",
      "meaning": "An item names a parent that is not in the index."
    },
    {
      "code": "IDOP-ITEMS-PROFILE-001",
      "section": "Containers §5",
      "meaning": "Portable Items needs the 0.2-draft profile. A 0.1 document has no way to maintain the index the contract requires."
    },
    {
      "code": "IDOP-ITEMS-UNSUPPORTED-001",
      "section": "Containers §5",
      "meaning": "This document uses a Portable Items version the Reader does not implement."
    },
    {
      "code": "IDOP-ITEMS-UNSUPPORTED-002",
      "section": "Containers §5",
      "meaning": "This document does not offer portable items."
    },
    {
      "code": "IDOP-LIMIT-001",
      "section": "§6",
      "meaning": "The file is larger than the Reader limit for a compressed package."
    },
    {
      "code": "IDOP-LIMIT-002",
      "section": "§6",
      "meaning": "The package has more entries than the limit (§6)."
    },
    {
      "code": "IDOP-LIMIT-003",
      "section": "§6",
      "meaning": "A single entry exceeds the Reader limit."
    },
    {
      "code": "IDOP-LIMIT-004",
      "section": "§6",
      "meaning": "An entry decompresses out of all proportion to its stored size. That is what a ZIP bomb looks like."
    },
    {
      "code": "IDOP-LIMIT-005",
      "section": "§6",
      "meaning": "Decompressed, the package exceeds the total Reader limit."
    },
    {
      "code": "IDOP-LIMIT-010",
      "section": "§6",
      "meaning": "idop.json is larger than the manifest size limit (§6)."
    },
    {
      "code": "IDOP-LIMIT-011",
      "section": "§6",
      "meaning": "idop.json is nested too deeply or has too many nodes (§6)."
    },
    {
      "code": "IDOP-MANIFEST-001",
      "section": "§7, §12",
      "meaning": "The manifest is not a valid JSON document."
    },
    {
      "code": "IDOP-MANIFEST-003",
      "section": "§7, §12",
      "meaning": "idop.json does not validate against the manifest schema (Annex A): an unknown member, a missing member or an invalid value."
    },
    {
      "code": "IDOP-MANIFEST-004",
      "section": "§7, §12",
      "meaning": "idop.json has the right shape for the schema but a value of the wrong type for this version."
    },
    {
      "code": "IDOP-MANIFEST-010",
      "section": "§7, §12",
      "meaning": "The entry point must be an HTML file below `code/`."
    },
    {
      "code": "IDOP-MANIFEST-011",
      "section": "§7, §12",
      "meaning": "application.id is not a lowercase reverse-domain identifier."
    },
    {
      "code": "IDOP-MANIFEST-012",
      "section": "§7, §12",
      "meaning": "application.version is not a valid Semantic Versioning 2.0.0 version."
    },
    {
      "code": "IDOP-MANIFEST-013",
      "section": "§7, §12",
      "meaning": "state.schemaVersion is not a valid Semantic Versioning 2.0.0 version."
    },
    {
      "code": "IDOP-MANIFEST-014",
      "section": "§7, §12",
      "meaning": "The document's revision lineage or timestamps are inconsistent (§7.4)."
    },
    {
      "code": "IDOP-MANIFEST-015",
      "section": "§7, §12",
      "meaning": "A timestamp is not a valid RFC 3339 UTC timestamp."
    },
    {
      "code": "IDOP-MANIFEST-016",
      "section": "§7, §12",
      "meaning": "A list in idop.json that must hold unique values contains duplicates."
    },
    {
      "code": "IDOP-MANIFEST-020",
      "section": "§7, §12",
      "meaning": "The declared entry point does not exist in the package."
    },
    {
      "code": "IDOP-MANIFEST-021",
      "section": "§7, §12",
      "meaning": "The declared icon must point at an existing entry in `resources/`."
    },
    {
      "code": "IDOP-MANIFEST-022",
      "section": "§7, §12",
      "meaning": "Capability identifiers must be unique and of type `network`."
    },
    {
      "code": "IDOP-MANIFEST-023",
      "section": "§7, §12",
      "meaning": "A network capability needs at least one exact HTTPS origin — no path, query or fragment — and at least one method."
    },
    {
      "code": "IDOP-MANIFEST-024",
      "section": "§7, §12",
      "meaning": "A capability refers to a credential binding the manifest never declared."
    },
    {
      "code": "IDOP-MANIFEST-025",
      "section": "§7, §12",
      "meaning": "A credential binding names a provider; in 1.x a binding names no service (§12.2). The 1.0 schema refuses the member first (IDOP-MANIFEST-003), so a 1.0 validator that applies §9.1 in order never raises this code."
    },
    {
      "code": "IDOP-MANIFEST-026",
      "section": "§7, §12",
      "meaning": "A credential binding is not referenced by any capability (§12.2)."
    },
    {
      "code": "IDOP-MANIFEST-027",
      "section": "§7, §12",
      "meaning": "Environment binding identifiers must be unique (§12.3)."
    },
    {
      "code": "IDOP-MANIFEST-028",
      "section": "§7, §12",
      "meaning": "Credential binding identifiers must be unique (§12.2)."
    },
    {
      "code": "IDOP-NETWORK-BUDGET-EXHAUSTED",
      "section": "§11.3, §12.5",
      "meaning": "The document has used up the network requests allotted to this session."
    },
    {
      "code": "IDOP-NETWORK-CONCURRENCY",
      "section": "§11.3, §12.5",
      "meaning": "The document has too many requests in flight at once."
    },
    {
      "code": "IDOP-NETWORK-DENIED",
      "section": "§11.3, §12.5",
      "meaning": "The document asked for a capability it was not granted."
    },
    {
      "code": "IDOP-NETWORK-METHOD-DENIED",
      "section": "§11.3, §12.5",
      "meaning": "The request uses a method the capability does not declare."
    },
    {
      "code": "IDOP-NETWORK-ORIGIN-DENIED",
      "section": "§11.3, §12.5",
      "meaning": "The request target is not one of the origins the document declared and the user approved."
    },
    {
      "code": "IDOP-NETWORK-REQUEST-TOO-LARGE",
      "section": "§11.3, §12.5",
      "meaning": "The request exceeds the Reader limit."
    },
    {
      "code": "IDOP-NETWORK-RESPONSE-TOO-LARGE",
      "section": "§11.3, §12.5",
      "meaning": "The response exceeds the Reader limit."
    },
    {
      "code": "IDOP-NETWORK-TIMEOUT",
      "section": "§11.3, §12.5",
      "meaning": "The provider did not answer within the allotted time."
    },
    {
      "code": "IDOP-PATH-001",
      "section": "§4.3, §5",
      "meaning": "An entry name is empty or longer than 240 bytes (§5)."
    },
    {
      "code": "IDOP-PATH-002",
      "section": "§4.3, §5",
      "meaning": "Absolute, UNC and backslash paths are forbidden."
    },
    {
      "code": "IDOP-PATH-003",
      "section": "§4.3, §5",
      "meaning": "An entry name contains NUL or a control character (§5)."
    },
    {
      "code": "IDOP-PATH-004",
      "section": "§4.3, §5",
      "meaning": "An entry name is not normalised to Unicode NFC (§5)."
    },
    {
      "code": "IDOP-PATH-005",
      "section": "§4.3, §5",
      "meaning": "An entry name has more than 16 segments (§5)."
    },
    {
      "code": "IDOP-PATH-006",
      "section": "§4.3, §5",
      "meaning": "A path tries to escape the package (`.` or `..`). That is the classic ZIP-slip attack."
    },
    {
      "code": "IDOP-PATH-007",
      "section": "§4.3, §5",
      "meaning": "The name would be ambiguous on Windows (a trailing dot or space, or a colon)."
    },
    {
      "code": "IDOP-PATH-008",
      "section": "§4.3, §5",
      "meaning": "A reserved Windows device name was used (CON, PRN, AUX, NUL, COM1…)."
    },
    {
      "code": "IDOP-PATH-009",
      "section": "§4.3, §5",
      "meaning": "Paths carrying a drive letter are forbidden."
    },
    {
      "code": "IDOP-PATH-010",
      "section": "§4.3, §5",
      "meaning": "Only these may appear at the package root: mimetype, idop.json, code/, resources/, storage/, _idop/ and extensions/."
    },
    {
      "code": "IDOP-PATH-011",
      "section": "§4.3, §5",
      "meaning": "The archive contains a directory entry; packages contain files only."
    },
    {
      "code": "IDOP-PATH-012",
      "section": "§4.3, §5",
      "meaning": "An entry under extensions/ lacks a reverse-domain namespace and a child path (§4.3)."
    },
    {
      "code": "IDOP-PATH-020",
      "section": "§4.3, §5",
      "meaning": "Bridge storage paths are relative to `storage/` and must not repeat that prefix."
    },
    {
      "code": "IDOP-PATH-030",
      "section": "§4.3, §5",
      "meaning": "Two entries collide once Unicode and case are normalised. The Reader could not tell which one to run."
    },
    {
      "code": "IDOP-PATH-031",
      "section": "§4.3, §5",
      "meaning": "Two entries have exactly the same name."
    },
    {
      "code": "IDOP-PATH-040",
      "section": "§4.3, §5",
      "meaning": "A source directory being packed contains a symbolic link."
    },
    {
      "code": "IDOP-POLICY-001",
      "section": "§8",
      "meaning": "Executable content is allowed only below `code/`."
    },
    {
      "code": "IDOP-POLICY-002",
      "section": "§8",
      "meaning": "Below `code/` only HTML, JS/MJS, CSS, JSON and WebAssembly modules are allowed."
    },
    {
      "code": "IDOP-POLICY-003",
      "section": "§8",
      "meaning": "An entry under code/ is not valid UTF-8 text (§8)."
    },
    {
      "code": "IDOP-POLICY-004",
      "section": "§8, Executable boundary",
      "meaning": "A .wasm file under code/ is not a WebAssembly binary module."
    },
    {
      "code": "IDOP-POLICY-010",
      "section": "§8",
      "meaning": "The document code contains a forbidden primitive: `eval`, `new Function`, a shared or service worker, `window.open`, a `javascript:` URL or a native IPC symbol (§8, rule 5)."
    },
    {
      "code": "IDOP-POLICY-011",
      "section": "§8",
      "meaning": "The document HTML references a remote URL or an active embedding element. IDOP documents are fully offline."
    },
    {
      "code": "IDOP-POLICY-012",
      "section": "§8",
      "meaning": "A stylesheet references a remote URL or uses `@import`."
    },
    {
      "code": "IDOP-POLICY-013",
      "section": "§8",
      "meaning": "HTML under code/ contains an unterminated or inline script (§8)."
    },
    {
      "code": "IDOP-POLICY-014",
      "section": "§8",
      "meaning": "Inline scripts are forbidden; document code lives in its own files."
    },
    {
      "code": "IDOP-PROFILE-001",
      "section": "§4.2, §7.5",
      "meaning": "The first entry must be an uncompressed `mimetype` entry."
    },
    {
      "code": "IDOP-PROFILE-002",
      "section": "§4.2, §7.5",
      "meaning": "The `mimetype` entry does not hold the exact IDOP media type."
    },
    {
      "code": "IDOP-PROFILE-003",
      "section": "§4.2, §7.5",
      "meaning": "The `idop.json` manifest is missing."
    },
    {
      "code": "IDOP-PROFILE-004",
      "section": "§4.2, §7.5",
      "meaning": "The package contains no `code/**`, so there is nothing to run."
    },
    {
      "code": "IDOP-PROFILE-005",
      "section": "§4.2, §7.5",
      "meaning": "The mimetype entry and the manifest's formatVersion disagree (§7.5)."
    },
    {
      "code": "IDOP-PROJECT-MANIFEST-001",
      "section": "Containers",
      "meaning": "The project marker is not valid JSON, or is too large."
    },
    {
      "code": "IDOP-PROJECT-MANIFEST-002",
      "section": "Containers",
      "meaning": "The project marker does not match the schema."
    },
    {
      "code": "IDOP-PROJECT-MANIFEST-003",
      "section": "Containers",
      "meaning": "The project marker does not have the expected shape."
    },
    {
      "code": "IDOP-PROJECT-MEMBER-001",
      "section": "Containers",
      "meaning": "A project member path escapes the project, or uses a name the Reader refuses."
    },
    {
      "code": "IDOP-PROJECT-MEMBER-002",
      "section": "Containers",
      "meaning": "The project lists the same member twice."
    },
    {
      "code": "IDOP-PROJECT-MEMBER-003",
      "section": "Containers",
      "meaning": "A project cannot contain a workspace or another project. It holds cooperating documents and their files."
    },
    {
      "code": "IDOP-PROJECT-MEMBER-004",
      "section": "Containers",
      "meaning": "A project using explicit discovery must list its members."
    },
    {
      "code": "IDOP-PROJECT-SCHEMA",
      "section": "Containers",
      "meaning": "The project marker does not validate against the project schema."
    },
    {
      "code": "IDOP-RUNTIME-LIMIT",
      "section": "§11",
      "meaning": "A Runtime API request or response exceeds a Reader limit."
    },
    {
      "code": "IDOP-RUNTIME-METHOD",
      "section": "§11",
      "meaning": "The document called a Runtime API method that does not exist."
    },
    {
      "code": "IDOP-RUNTIME-SCHEMA",
      "section": "§11",
      "meaning": "A Runtime API call was made with parameters of the wrong shape."
    },
    {
      "code": "IDOP-RUNTIME-UNAVAILABLE",
      "section": "§11",
      "meaning": "The Runtime API is not available (for example, the session has ended)."
    },
    {
      "code": "IDOP-SAVE-CONFLICT",
      "section": "§10.3",
      "meaning": "The file changed on disk after it was opened. The Reader will not overwrite it — use “Save as”."
    },
    {
      "code": "IDOP-STORAGE-ENCODING",
      "section": "§11, Runtime API",
      "meaning": "Binary data passed to the storage API is not canonical standard base64."
    },
    {
      "code": "IDOP-STORAGE-NOT-FOUND",
      "section": "§10, §11",
      "meaning": "storage.read named a path that does not exist in the overlay."
    },
    {
      "code": "IDOP-STORAGE-QUOTA",
      "section": "§10, §11",
      "meaning": "The document has used up the storage space allotted to it."
    },
    {
      "code": "IDOP-STORAGE-UTF8",
      "section": "§10, §11",
      "meaning": "storage.read named an entry that is not UTF-8 text; use storage.readBytes."
    },
    {
      "code": "IDOP-THUMB-001",
      "section": "1.1 §3",
      "meaning": "_idop/thumbnail.png is present but is not an acceptable PNG (warning, never a refusal)."
    },
    {
      "code": "IDOP-THUMB-002",
      "section": "1.1 §3",
      "meaning": "A 1.0 package carries _idop/thumbnail.png, which 1.0 reserves (warning, never a refusal)."
    },
    {
      "code": "IDOP-THUMB-NOT-FOUND",
      "section": "1.1 §3",
      "meaning": "The package has no usable thumbnail."
    },
    {
      "code": "IDOP-UI-CANCELLED",
      "section": "§11, Runtime API",
      "meaning": "The user closed a Reader dialog (save, open) without choosing."
    },
    {
      "code": "IDOP-UI-DENIED",
      "section": "§11, Runtime API",
      "meaning": "The Reader does not offer that dialog here, or the browser refused it (for example, no user gesture)."
    },
    {
      "code": "IDOP-UI-TOO-LARGE",
      "section": "§11, Runtime API",
      "meaning": "A file to save or open exceeds 16 MiB."
    },
    {
      "code": "IDOP-UNSUPPORTED-001",
      "section": "§7.2, §15",
      "meaning": "The package targets a format or Runtime API version this Reader does not implement."
    },
    {
      "code": "IDOP-UNSUPPORTED-002",
      "section": "§7.2, §15",
      "meaning": "The package requires an unknown runtime feature. The Reader refuses rather than guessing."
    },
    {
      "code": "IDOP-UNSUPPORTED-003",
      "section": "§7.2, §15",
      "meaning": "A 0.1-draft package asked for external capabilities. That profile grants none — no network, no files, no credentials."
    },
    {
      "code": "IDOP-WS-ID-001",
      "section": "Containers",
      "meaning": "A container identifier must be a UUID."
    },
    {
      "code": "IDOP-WS-LIMIT-001",
      "section": "Containers",
      "meaning": "A container marker exceeds its byte limit."
    },
    {
      "code": "IDOP-WS-MANIFEST-001",
      "section": "Containers",
      "meaning": "The workspace marker is not valid JSON, or is too large."
    },
    {
      "code": "IDOP-WS-MANIFEST-002",
      "section": "Containers",
      "meaning": "The workspace marker does not match the schema. Unknown fields are refused rather than ignored."
    },
    {
      "code": "IDOP-WS-MANIFEST-003",
      "section": "Containers",
      "meaning": "The workspace marker is the right shape but the wrong contents."
    },
    {
      "code": "IDOP-WS-MARKER-001",
      "section": "Containers",
      "meaning": "That file is not a marker. A marker is `idop.workspace.json` or `idop.project.json` at a directory root."
    },
    {
      "code": "IDOP-WS-MARKER-002",
      "section": "Containers",
      "meaning": "A container marker does not have the expected shape."
    },
    {
      "code": "IDOP-WS-SECRET-001",
      "section": "Containers",
      "meaning": "This marker has a configuration key that names secret material. Credentials belong to the Reader; a workspace file may reference an alias, never a value."
    },
    {
      "code": "IDOP-WS-TIME-001",
      "section": "Containers",
      "meaning": "A container timestamp must be RFC 3339 in UTC."
    },
    {
      "code": "IDOP-WS-UNSUPPORTED-001",
      "section": "Containers",
      "meaning": "This marker declares a format or version this Reader does not implement."
    },
    {
      "code": "IDOP-ZIP-001",
      "section": "§4.1",
      "meaning": "No end-of-central-directory record was found: the file is not a ZIP archive or is truncated."
    },
    {
      "code": "IDOP-ZIP-002",
      "section": "§4.1",
      "meaning": "The central directory offset points outside the file."
    },
    {
      "code": "IDOP-ZIP-003",
      "section": "§4.1",
      "meaning": "A central directory record has an invalid signature."
    },
    {
      "code": "IDOP-ZIP-010",
      "section": "§4.1",
      "meaning": "ZIP64 structures and truncated archives are outside the profile."
    },
    {
      "code": "IDOP-ZIP-011",
      "section": "§4.1",
      "meaning": "There are extra bytes after the archive. A polyglot file cannot be verified, so it is refused."
    },
    {
      "code": "IDOP-ZIP-012",
      "section": "§4.1",
      "meaning": "Split and multi-part archives are outside the profile."
    },
    {
      "code": "IDOP-ZIP-013",
      "section": "§4.1",
      "meaning": "There are extra bytes before the archive."
    },
    {
      "code": "IDOP-ZIP-014",
      "section": "§4.1",
      "meaning": "An entry name uses non-ASCII characters without the UTF-8 flag."
    },
    {
      "code": "IDOP-ZIP-015",
      "section": "§4.1",
      "meaning": "Encrypted ZIP entries cannot be validated before execution."
    },
    {
      "code": "IDOP-ZIP-016",
      "section": "§4.1",
      "meaning": "Only the Store and Deflate methods are allowed."
    },
    {
      "code": "IDOP-ZIP-017",
      "section": "§4.1",
      "meaning": "Two central directory records point at the same local header."
    },
    {
      "code": "IDOP-ZIP-018",
      "section": "§4.1",
      "meaning": "The first entry does not start at offset 0. That is what a file appended to another format looks like."
    },
    {
      "code": "IDOP-ZIP-019",
      "section": "§4.1",
      "meaning": "The first local entry (mimetype) carries an extra field."
    },
    {
      "code": "IDOP-ZIP-020",
      "section": "§4.1",
      "meaning": "A local header has an invalid signature."
    },
    {
      "code": "IDOP-ZIP-021",
      "section": "§4.1",
      "meaning": "The local and central headers disagree. That is a classic way to hide a second file, so the package is refused."
    },
    {
      "code": "IDOP-ZIP-022",
      "section": "§4.1",
      "meaning": "A ZIP extra field is truncated."
    },
    {
      "code": "IDOP-ZIP-023",
      "section": "§4.1",
      "meaning": "The local records do not cover the archive exactly, in central directory order, from offset 0 to the central directory: there is a gap, an overlap or a record out of order. Bytes the central directory does not account for are where a hidden second entry would sit."
    },
    {
      "code": "IDOP-ZIP-024",
      "section": "§4.1",
      "meaning": "An entry sets general purpose bit 3, but no data descriptor with the central directory's CRC-32 and sizes follows its data."
    },
    {
      "code": "IDOP-ZIP-030",
      "section": "§4.1",
      "meaning": "The two independent ZIP parsers disagree on the number of entries."
    },
    {
      "code": "IDOP-ZIP-031",
      "section": "§4.1",
      "meaning": "The archive reads differently through its local and central headers."
    },
    {
      "code": "IDOP-ZIP-032",
      "section": "§4.1",
      "meaning": "Directory entries are forbidden; a package lists files only."
    },
    {
      "code": "IDOP-ZIP-033",
      "section": "§4.1",
      "meaning": "An entry decompressed to a different size than its headers declare."
    },
    {
      "code": "IDOP-ZIP-034",
      "section": "§4.1",
      "meaning": "Symlinks and device files are forbidden in a package."
    }
  ]
}
