{
    "api_version": "1",
    "kind": "dse_post",
    "self": "https://update.dsesecurity.com/api/v1/posts/classify-restic-job-failures-from-the-documented-exit-status/",
    "item": {
        "id": "https://update.dsesecurity.com/updates/classify-restic-job-failures-from-the-documented-exit-status/",
        "slug": "classify-restic-job-failures-from-the-documented-exit-status",
        "url": "https://update.dsesecurity.com/updates/classify-restic-job-failures-from-the-documented-exit-status/",
        "alternate_urls": {
            "markdown": "https://update.dsesecurity.com/updates/classify-restic-job-failures-from-the-documented-exit-status.md",
            "json": "https://update.dsesecurity.com/api/v1/posts/classify-restic-job-failures-from-the-documented-exit-status/"
        },
        "title": "Classify restic job failures from the documented exit status",
        "summary": "The restic 0.19.1 scripting guide requires unknown exit codes to be treated as failure; review the job result separately from backup scope and recovery evidence.",
        "format": {
            "slug": "guide",
            "name": "Guide"
        },
        "priority": {
            "slug": "advisory",
            "name": "Advisory"
        },
        "featured": false,
        "image": {
            "theme": "continuity-recovery",
            "label": "Continuity & recovery",
            "alt": "Paired infrastructure paths converging on a stable recovered service.",
            "card_url": "https://update.dsesecurity.com/assets/editorial/continuity-recovery-card.webp?v=1.8.20",
            "hero_url": "https://update.dsesecurity.com/assets/editorial/continuity-recovery-hero.webp?v=1.8.20",
            "social_url": "https://update.dsesecurity.com/assets/editorial/continuity-recovery-social-v2.jpg?v=1.8.20",
            "width": 2400,
            "height": 1350
        },
        "topics": [
            {
                "slug": "business-continuity",
                "name": "Business Continuity",
                "url": "https://update.dsesecurity.com/topic/business-continuity/"
            },
            {
                "slug": "it",
                "name": "IT",
                "url": "https://update.dsesecurity.com/topic/it/"
            }
        ],
        "author": {
            "name": "DSE Security Editorial Team",
            "url": "https://update.dsesecurity.com/#editorial-team",
            "type": "Organization"
        },
        "publisher": {
            "name": "Detection Systems & Engineering",
            "url": "https://dsesecurity.com/"
        },
        "published_at": "2026-10-28T23:23:25+00:00",
        "modified_at": "2026-10-28T23:23:38+00:00",
        "reviewed_on": "2026-10-28",
        "reading_minutes": 3,
        "word_count": 528,
        "potentially_affected": "Review scope: restic 0.19.1 automation; confirm the installed client and wrapper before applying the documented code table.",
        "dse_recommendation": "DSE recommends a documented non-success branch, preserved native exit status and attended escalation for unrecognized outcomes.",
        "primary_source": {
            "name": "restic 0.19.1 — Scripting",
            "url": "https://restic.readthedocs.io/en/stable/075_scripting.html",
            "published_on": null,
            "authority": "restic.readthedocs.io"
        },
        "publishing_principles": "https://update.dsesecurity.com/updates/dse-updates-editorial-methodology/",
        "usage_info": "https://update.dsesecurity.com/usage/",
        "copyright_notice": "Copyright © 2026 Detection Systems & Engineering. All rights reserved.",
        "content_html": "<p><strong>Bottom line:</strong> DSE recommendation: decide how a scheduled backup job will report an unsuccessful or unrecognized result before using its run history as operational evidence. Keep that decision separate from which files were selected and whether a recovery exercise has passed.</p>\n<h2>Source fact: what the authority says</h2>\n<p>The <a href=\"https://restic.readthedocs.io/en/stable/075_scripting.html\" target=\"_blank\" rel=\"noopener noreferrer\">restic scripting guide</a> identifies version 0.19.1. Its general table defines zero as success. For backup, code 3 means some source data could not be read; for forget, it means one or more snapshots could not be removed. Unknown exit codes must be treated as failure, with command-specific help providing further detail.</p>\n<h2>What the source does not establish</h2>\n<p>This table is not proof that a particular job protected the intended files, produced an application-consistent recovery point or can restore a service. This article does not certify a wrapper, scheduler or installed client. Treat those as separate review subjects and retain uncertainty when the observed result cannot be explained.</p>\n<h2>Applicability questions</h2>\n<ul>\n<li>Which client version and exact command will the job execute, and who owns changes to that combination?</li>\n<li>Does the wrapper preserve the process result before running another command, and what will its attended recipient call non-success?</li>\n<li>Where will an unexpected code, interrupted run or missing completion record be investigated?</li>\n<li>Which separate evidence will establish backup scope and recoverability rather than merely process completion?</li>\n</ul>\n<h2>DSE recommendation: controlled next steps</h2>\n<p><em>The following paragraphs are DSE recommendations, not instructions or guarantees from the source.</em></p>\n<p>Build the classification around the exact operation, not a green status shared by all jobs. In the review sheet, give the backup and forget cases their own names, command identifiers and reviewed source meanings. Keep the recorded exit status next to the operation so the interpretation can be checked.</p>\n<p>Ask the reviewer to explain two status-3 records without relying on a generic label. Which one reports unreadable source data, and which one reports unsuccessful snapshot removal? Require that distinction to survive the scheduler, dashboard and notification handoffs. Keep secrets and sensitive file names out of the shared comparison.</p>\n<p>Give an unknown result a separate non-success route with a named investigator. Preserve the native status and redacted diagnostics before other wrapper steps. Decide retry or recovery policy separately; neither is established by this general code table. Keep a missing run distinct from a completed run with an unsuccessful result.</p>\n<h2>Verification and evidence</h2>\n<p>Proposed verification, not a performed test: define BACKUP-READ for a genuine backup status 3 and FORGET-REMOVE for a genuine forget status 3. Obtain either result only in a disposable, nonsensitive exercise where the condition can be safely reproduced; otherwise mark it untested. Compare each with its command-specific meaning above, without asserting that a snapshot was created.</p>\n<p>Define UNKNOWN-RESULT as a synthetic status absent from the reviewed table, injected at the wrapper boundary. Require its downstream record to remain non-success and identify the injection clearly. Retain the invocation, native or injected value, classification and attended notification. Ask another operator to trace all three records through each handoff; assess backup scope and restoration evidence separately.</p>\n<h2>Official references</h2>\n<ul>\n<li><a href=\"https://restic.readthedocs.io/en/stable/075_scripting.html\" target=\"_blank\" rel=\"noopener noreferrer\">restic 0.19.1 — Scripting</a> — official product documentation; source version and applicability limits are stated above.</li>\n</ul>\n<p>Source review completed October 28, 2026. Recheck the official documentation and deployment-specific applicability before a production change.</p>\n",
        "content_text": "Bottom line: DSE recommendation: decide how a scheduled backup job will report an unsuccessful or unrecognized result before using its run history as operational evidence. Keep that decision separate from which files were selected and whether a recovery exercise has passed.\nSource fact: what the authority says\nThe restic scripting guide identifies version 0.19.1. Its general table defines zero as success. For backup, code 3 means some source data could not be read; for forget, it means one or more snapshots could not be removed. Unknown exit codes must be treated as failure, with command-specific help providing further detail.\nWhat the source does not establish\nThis table is not proof that a particular job protected the intended files, produced an application-consistent recovery point or can restore a service. This article does not certify a wrapper, scheduler or installed client. Treat those as separate review subjects and retain uncertainty when the observed result cannot be explained.\nApplicability questions\n\nWhich client version and exact command will the job execute, and who owns changes to that combination?\nDoes the wrapper preserve the process result before running another command, and what will its attended recipient call non-success?\nWhere will an unexpected code, interrupted run or missing completion record be investigated?\nWhich separate evidence will establish backup scope and recoverability rather than merely process completion?\n\nDSE recommendation: controlled next steps\nThe following paragraphs are DSE recommendations, not instructions or guarantees from the source.\nBuild the classification around the exact operation, not a green status shared by all jobs. In the review sheet, give the backup and forget cases their own names, command identifiers and reviewed source meanings. Keep the recorded exit status next to the operation so the interpretation can be checked.\nAsk the reviewer to explain two status-3 records without relying on a generic label. Which one reports unreadable source data, and which one reports unsuccessful snapshot removal? Require that distinction to survive the scheduler, dashboard and notification handoffs. Keep secrets and sensitive file names out of the shared comparison.\nGive an unknown result a separate non-success route with a named investigator. Preserve the native status and redacted diagnostics before other wrapper steps. Decide retry or recovery policy separately; neither is established by this general code table. Keep a missing run distinct from a completed run with an unsuccessful result.\nVerification and evidence\nProposed verification, not a performed test: define BACKUP-READ for a genuine backup status 3 and FORGET-REMOVE for a genuine forget status 3. Obtain either result only in a disposable, nonsensitive exercise where the condition can be safely reproduced; otherwise mark it untested. Compare each with its command-specific meaning above, without asserting that a snapshot was created.\nDefine UNKNOWN-RESULT as a synthetic status absent from the reviewed table, injected at the wrapper boundary. Require its downstream record to remain non-success and identify the injection clearly. Retain the invocation, native or injected value, classification and attended notification. Ask another operator to trace all three records through each handoff; assess backup scope and restoration evidence separately.\nOfficial references\n\nrestic 0.19.1 — Scripting — official product documentation; source version and applicability limits are stated above.\n\nSource review completed October 28, 2026. Recheck the official documentation and deployment-specific applicability before a production change.",
        "content_markdown": "Bottom line: DSE recommendation: decide how a scheduled backup job will report an unsuccessful or unrecognized result before using its run history as operational evidence. Keep that decision separate from which files were selected and whether a recovery exercise has passed.\n\n## Source fact: what the authority says\n\nThe [restic scripting guide](https://restic.readthedocs.io/en/stable/075_scripting.html) identifies version 0.19.1. Its general table defines zero as success. For backup, code 3 means some source data could not be read; for forget, it means one or more snapshots could not be removed. Unknown exit codes must be treated as failure, with command-specific help providing further detail.\n\n## What the source does not establish\n\nThis table is not proof that a particular job protected the intended files, produced an application-consistent recovery point or can restore a service. This article does not certify a wrapper, scheduler or installed client. Treat those as separate review subjects and retain uncertainty when the observed result cannot be explained.\n\n## Applicability questions\n\n- Which client version and exact command will the job execute, and who owns changes to that combination?\n\n- Does the wrapper preserve the process result before running another command, and what will its attended recipient call non-success?\n\n- Where will an unexpected code, interrupted run or missing completion record be investigated?\n\n- Which separate evidence will establish backup scope and recoverability rather than merely process completion?\n\n## DSE recommendation: controlled next steps\n\nThe following paragraphs are DSE recommendations, not instructions or guarantees from the source.\n\nBuild the classification around the exact operation, not a green status shared by all jobs. In the review sheet, give the backup and forget cases their own names, command identifiers and reviewed source meanings. Keep the recorded exit status next to the operation so the interpretation can be checked.\n\nAsk the reviewer to explain two status-3 records without relying on a generic label. Which one reports unreadable source data, and which one reports unsuccessful snapshot removal? Require that distinction to survive the scheduler, dashboard and notification handoffs. Keep secrets and sensitive file names out of the shared comparison.\n\nGive an unknown result a separate non-success route with a named investigator. Preserve the native status and redacted diagnostics before other wrapper steps. Decide retry or recovery policy separately; neither is established by this general code table. Keep a missing run distinct from a completed run with an unsuccessful result.\n\n## Verification and evidence\n\nProposed verification, not a performed test: define BACKUP-READ for a genuine backup status 3 and FORGET-REMOVE for a genuine forget status 3. Obtain either result only in a disposable, nonsensitive exercise where the condition can be safely reproduced; otherwise mark it untested. Compare each with its command-specific meaning above, without asserting that a snapshot was created.\n\nDefine UNKNOWN-RESULT as a synthetic status absent from the reviewed table, injected at the wrapper boundary. Require its downstream record to remain non-success and identify the injection clearly. Retain the invocation, native or injected value, classification and attended notification. Ask another operator to trace all three records through each handoff; assess backup scope and restoration evidence separately.\n\n## Official references\n\n- [restic 0.19.1 — Scripting](https://restic.readthedocs.io/en/stable/075_scripting.html) — official product documentation; source version and applicability limits are stated above.\n\nSource review completed October 28, 2026. Recheck the official documentation and deployment-specific applicability before a production change."
    },
    "json_ld": {
        "@context": "https://schema.org",
        "@graph": [
            {
                "@type": "Organization",
                "@id": "https://dsesecurity.com/#organization",
                "name": "Detection Systems & Engineering",
                "alternateName": "DSE Security",
                "url": "https://dsesecurity.com/",
                "logo": {
                    "@type": "ImageObject",
                    "url": "https://update.dsesecurity.com/assets/dse-logo-20260812.png?v=1.8.20"
                }
            },
            {
                "@type": "Organization",
                "@id": "https://update.dsesecurity.com/#editorial-team",
                "name": "DSE Security Editorial Team",
                "url": "https://update.dsesecurity.com/",
                "parentOrganization": {
                    "@id": "https://dsesecurity.com/#organization"
                }
            },
            {
                "@type": "WebSite",
                "@id": "https://update.dsesecurity.com/#website",
                "name": "DSE Updates",
                "alternateName": "DSE Security Knowledge Hub",
                "url": "https://update.dsesecurity.com/",
                "inLanguage": "en-US",
                "publisher": {
                    "@id": "https://dsesecurity.com/#organization"
                },
                "potentialAction": {
                    "@type": "SearchAction",
                    "target": {
                        "@type": "EntryPoint",
                        "urlTemplate": "https://update.dsesecurity.com/?q={search_term_string}"
                    },
                    "query-input": "required name=search_term_string"
                }
            },
            {
                "@type": "WebPage",
                "@id": "https://update.dsesecurity.com/updates/classify-restic-job-failures-from-the-documented-exit-status/",
                "url": "https://update.dsesecurity.com/updates/classify-restic-job-failures-from-the-documented-exit-status/",
                "isPartOf": {
                    "@id": "https://update.dsesecurity.com/#website"
                },
                "lastReviewed": "2026-10-28"
            },
            {
                "@type": "BreadcrumbList",
                "@id": "https://update.dsesecurity.com/updates/classify-restic-job-failures-from-the-documented-exit-status/#breadcrumbs",
                "itemListElement": [
                    {
                        "@type": "ListItem",
                        "position": 1,
                        "name": "DSE Updates",
                        "item": "https://update.dsesecurity.com/"
                    },
                    {
                        "@type": "ListItem",
                        "position": 2,
                        "name": "Business Continuity",
                        "item": "https://update.dsesecurity.com/topic/business-continuity/"
                    },
                    {
                        "@type": "ListItem",
                        "position": 3,
                        "name": "Classify restic job failures from the documented exit status",
                        "item": "https://update.dsesecurity.com/updates/classify-restic-job-failures-from-the-documented-exit-status/"
                    }
                ]
            },
            {
                "@type": [
                    "Article",
                    "TechArticle"
                ],
                "@id": "https://update.dsesecurity.com/updates/classify-restic-job-failures-from-the-documented-exit-status/#article",
                "identifier": "https://update.dsesecurity.com/updates/classify-restic-job-failures-from-the-documented-exit-status/",
                "url": "https://update.dsesecurity.com/updates/classify-restic-job-failures-from-the-documented-exit-status/",
                "headline": "Classify restic job failures from the documented exit status",
                "description": "The restic 0.19.1 scripting guide requires unknown exit codes to be treated as failure; review the job result separately from backup scope and recovery…",
                "abstract": "The restic 0.19.1 scripting guide requires unknown exit codes to be treated as failure; review the job result separately from backup scope and recovery evidence.",
                "articleBody": "Bottom line: DSE recommendation: decide how a scheduled backup job will report an unsuccessful or unrecognized result before using its run history as operational evidence. Keep that decision separate from which files were selected and whether a recovery exercise has passed.\nSource fact: what the authority says\nThe restic scripting guide identifies version 0.19.1. Its general table defines zero as success. For backup, code 3 means some source data could not be read; for forget, it means one or more snapshots could not be removed. Unknown exit codes must be treated as failure, with command-specific help providing further detail.\nWhat the source does not establish\nThis table is not proof that a particular job protected the intended files, produced an application-consistent recovery point or can restore a service. This article does not certify a wrapper, scheduler or installed client. Treat those as separate review subjects and retain uncertainty when the observed result cannot be explained.\nApplicability questions\n\nWhich client version and exact command will the job execute, and who owns changes to that combination?\nDoes the wrapper preserve the process result before running another command, and what will its attended recipient call non-success?\nWhere will an unexpected code, interrupted run or missing completion record be investigated?\nWhich separate evidence will establish backup scope and recoverability rather than merely process completion?\n\nDSE recommendation: controlled next steps\nThe following paragraphs are DSE recommendations, not instructions or guarantees from the source.\nBuild the classification around the exact operation, not a green status shared by all jobs. In the review sheet, give the backup and forget cases their own names, command identifiers and reviewed source meanings. Keep the recorded exit status next to the operation so the interpretation can be checked.\nAsk the reviewer to explain two status-3 records without relying on a generic label. Which one reports unreadable source data, and which one reports unsuccessful snapshot removal? Require that distinction to survive the scheduler, dashboard and notification handoffs. Keep secrets and sensitive file names out of the shared comparison.\nGive an unknown result a separate non-success route with a named investigator. Preserve the native status and redacted diagnostics before other wrapper steps. Decide retry or recovery policy separately; neither is established by this general code table. Keep a missing run distinct from a completed run with an unsuccessful result.\nVerification and evidence\nProposed verification, not a performed test: define BACKUP-READ for a genuine backup status 3 and FORGET-REMOVE for a genuine forget status 3. Obtain either result only in a disposable, nonsensitive exercise where the condition can be safely reproduced; otherwise mark it untested. Compare each with its command-specific meaning above, without asserting that a snapshot was created.\nDefine UNKNOWN-RESULT as a synthetic status absent from the reviewed table, injected at the wrapper boundary. Require its downstream record to remain non-success and identify the injection clearly. Retain the invocation, native or injected value, classification and attended notification. Ask another operator to trace all three records through each handoff; assess backup scope and restoration evidence separately.\nOfficial references\n\nrestic 0.19.1 — Scripting — official product documentation; source version and applicability limits are stated above.\n\nSource review completed October 28, 2026. Recheck the official documentation and deployment-specific applicability before a production change.",
                "datePublished": "2026-10-28T23:23:25+00:00",
                "dateModified": "2026-10-28T23:23:38+00:00",
                "mainEntityOfPage": {
                    "@id": "https://update.dsesecurity.com/updates/classify-restic-job-failures-from-the-documented-exit-status/"
                },
                "inLanguage": "en-US",
                "isAccessibleForFree": true,
                "author": {
                    "@type": "Organization",
                    "name": "DSE Security Editorial Team",
                    "url": "https://update.dsesecurity.com/#editorial-team"
                },
                "publisher": {
                    "@id": "https://dsesecurity.com/#organization"
                },
                "image": {
                    "@type": "ImageObject",
                    "@id": "https://update.dsesecurity.com/updates/classify-restic-job-failures-from-the-documented-exit-status/#primaryimage",
                    "url": "https://update.dsesecurity.com/assets/editorial/continuity-recovery-social-v2.jpg?v=1.8.20",
                    "contentUrl": "https://update.dsesecurity.com/assets/editorial/continuity-recovery-social-v2.jpg?v=1.8.20",
                    "width": 1200,
                    "height": 630,
                    "caption": "Classify restic job failures from the documented exit status"
                },
                "articleSection": [
                    "Business Continuity",
                    "IT"
                ],
                "keywords": [
                    "Business Continuity",
                    "IT",
                    "Guide",
                    "Advisory priority"
                ],
                "genre": "Guide",
                "about": [
                    {
                        "@type": "Thing",
                        "name": "Business Continuity",
                        "url": "https://update.dsesecurity.com/topic/business-continuity/"
                    },
                    {
                        "@type": "Thing",
                        "name": "IT",
                        "url": "https://update.dsesecurity.com/topic/it/"
                    }
                ],
                "wordCount": 528,
                "timeRequired": "PT3M",
                "publishingPrinciples": "https://update.dsesecurity.com/updates/dse-updates-editorial-methodology/",
                "usageInfo": "https://update.dsesecurity.com/usage/",
                "copyrightHolder": {
                    "@id": "https://dsesecurity.com/#organization"
                },
                "copyrightNotice": "Copyright © 2026 Detection Systems & Engineering. All rights reserved.",
                "citation": {
                    "@type": "CreativeWork",
                    "name": "restic 0.19.1 — Scripting",
                    "url": "https://restic.readthedocs.io/en/stable/075_scripting.html"
                }
            }
        ]
    }
}