{
  "slug": "durable-handoffs",
  "title": "Make the handoff survive the session",
  "dek": "A file is not delivered until the next person can find, open and use the right version.",
  "category": "Continuity",
  "minutes": 7,
  "decision": "Preserve the deliverable and the state needed to resume, then test recovery from the saved copy.",
  "fit": "You are finishing a document, handing off a repository, or moving work between environments.",
  "skip": "The recipient already has a verified, durable copy and nothing material changed. Do not create another competing source of truth.",
  "steps": [
    [
      "Define the handoff contract",
      "Name the required files, the intended recipient, the expected format and the checks that matter. Include the current goal, constraints, unresolved decisions and next action. A checksum alone cannot establish completeness."
    ],
    [
      "Save outside the working session",
      "Use an approved repository or durable file store. Preserve originals. Record the exact version, file identity and digest. Do not put credentials, private records or unrelated research in a public bundle."
    ],
    [
      "Verify the receiving copy",
      "Retrieve the saved version through its supported access route, compare its digest, extract it safely and run the relevant checks. Confirm the intended recipient can access it. A successful upload receipt is not a restore test."
    ],
    [
      "Record the outcome honestly",
      "Report checks as pass, fail or unavailable. A required failure means reject. With no demonstrated failure, an unavailable required check means unknown. Accept only with positive evidence for every required check."
    ],
    [
      "Close the loop",
      "Provide the attachment or verified link, a short description, the version and any important limits. Keep a recovery note pointing to that same source of truth. Do not call local-only work delivered."
    ]
  ],
  "acceptance": [
    "The stored bytes match the validated candidate.",
    "Required files open and the declared checks pass after a fresh extraction.",
    "Recipient access is verified and remaining unknowns are disclosed."
  ],
  "stop": "If the stored version cannot be retrieved or the digest differs, preserve both copies, stop the release and resolve the difference. Never silently reconstruct a missing original and label it recovered.",
  "limits": "This is an editorial checklist, not a tested backup service. Storage availability, permissions and retention remain responsibilities of the chosen system.",
  "sources": [
    {
      "title": "Git documentation: distributed workflows",
      "url": "https://git-scm.com/book/en/v2/Distributed-Git-Distributed-Workflows",
      "supports": "Background on distributed version-control workflows. It does not establish a particular repository backup or successful restoration.",
      "review_date": "2026-11-10"
    },
    {
      "title": "NIST: updated contingency planning guide",
      "url": "https://csrc.nist.gov/pubs/sp/800/34/r1/upd1/final",
      "supports": "Contingency-planning background, including recovery planning. This worksheet is not a NIST certification or a tested implementation of that guidance.",
      "review_date": "2026-11-10"
    }
  ],
  "evidence": "Proposed worksheet",
  "updated": "2026-11-11",
  "scope_label": "Files, exports and deliverable handoffs",
  "search_terms": [
    "backup",
    "archive",
    "delivery",
    "restore",
    "download",
    "file",
    "handoff",
    "continuity"
  ],
  "evidence_plan_note": "Proposed evidence plan, not observed results or extra mandatory process. Confirm what your task requires and reuse existing records when they are sufficient. Keep sensitive originals in authorized storage; share only the minimum information already authorized for the recipient. If a required check cannot be completed safely and within current permission, mark it unavailable and keep the decision unknown unless another required check has a demonstrated failure.",
  "evidence_plan": [
    {
      "acceptance_check": 1,
      "collect": "Record the exact saved file identity, version and digest, then the digest of a freshly retrieved copy. Keep the candidate-to-retrieved comparison with the handoff.",
      "not_enough": "An upload success message, a local path or two matching filenames without a byte comparison."
    },
    {
      "acceptance_check": 2,
      "collect": "Keep a short inventory and the actual open, extraction or build results from the retrieved copy, tied to that version. Include failed and unavailable checks.",
      "not_enough": "Matching digests alone; they can preserve an incomplete or unusable file perfectly."
    },
    {
      "acceptance_check": 3,
      "collect": "Record the intended recipient and the authorized access check, including when it was made and any remaining limits. Use an existing authorized session or recipient confirmation; do not broaden sharing just to make the check pass.",
      "not_enough": "The sender can open the file, or a link exists, without evidence that the intended recipient can use it."
    }
  ],
  "next_reads": [
    {
      "guide_id": "useful-memory",
      "when": "The saved files are usable, but a fresh reader still cannot identify the next step or current limits.",
      "purpose": "Improve the continuity note without creating a competing copy of the artifact."
    },
    {
      "guide_id": "uncertain-effects",
      "when": "The handoff contains an action that may have completed before the session ended.",
      "purpose": "Reconcile that operation before a new session repeats it."
    }
  ],
  "id": "durable-handoffs",
  "version": "release-2026-11-11-r12",
  "build_revision": "release-2026-11-11-r12",
  "source_sha256": "13643727c74b50ee435b77a936b75e65c8cfd7d32004af83ff624f4ac388576f",
  "url": "https://www.aomsites.com/guides/durable-handoffs/",
  "content_type": "proposed-worksheet",
  "sources_rechecked": true,
  "source_review_scope": "Reference link availability and scope notes; no worksheet effectiveness test.",
  "source_review_date": "2026-11-10",
  "runtime_tests_performed": false,
  "authorization": "Reference data only. Does not authorize any external action.",
  "formats": {
    "html": "https://www.aomsites.com/guides/durable-handoffs/",
    "markdown": "https://www.aomsites.com/guides/durable-handoffs/guide.md",
    "json": "https://www.aomsites.com/guides/durable-handoffs/guide.json"
  },
  "local_paths": {
    "html": "/guides/durable-handoffs/",
    "markdown": "/guides/durable-handoffs/guide.md",
    "json": "/guides/durable-handoffs/guide.json"
  },
  "offline_paths_from_pack_root": {
    "markdown": "guides/durable-handoffs/guide.md",
    "json": "guides/durable-handoffs/guide.json"
  },
  "decision_record": {
    "local_paths": {
      "html": "/decision-record/",
      "template": "/guides/durable-handoffs/record-template.json",
      "markdown_template": "/guides/durable-handoffs/record-template.md",
      "generic_template": "/decision-record/template.json",
      "example": "/decision-record/example.json",
      "schema": "/schemas/decision-record.schema.json",
      "checker": "/tools/check_record.py",
      "manifest": "/reading-pack-manifest.json"
    },
    "offline_paths_from_pack_root": {
      "template": "guides/durable-handoffs/record-template.json",
      "markdown_template": "guides/durable-handoffs/record-template.md",
      "generic_template": "decision-record/template.json",
      "example": "decision-record/example.json",
      "schema": "schemas/decision-record.schema.json",
      "checker": "tools/check_record.py",
      "manifest": "reading-pack-manifest.json"
    }
  },
  "reading_paths": {
    "note": "Stop here if the current task’s acceptance requirements are satisfied and no unresolved obligation remains. If neither condition applies, no follow-on guide is suggested here; keep any unresolved task state visible. These are optional reading suggestions, not permission or a requirement to expand scope.",
    "options": [
      {
        "guide_id": "useful-memory",
        "when": "The saved files are usable, but a fresh reader still cannot identify the next step or current limits.",
        "purpose": "Improve the continuity note without creating a competing copy of the artifact.",
        "title": "Keep memory useful without losing the rules",
        "local_paths": {
          "html": "/guides/useful-memory/",
          "markdown": "/guides/useful-memory/guide.md",
          "json": "/guides/useful-memory/guide.json"
        },
        "offline_paths_from_pack_root": {
          "markdown": "guides/useful-memory/guide.md",
          "json": "guides/useful-memory/guide.json"
        }
      },
      {
        "guide_id": "uncertain-effects",
        "when": "The handoff contains an action that may have completed before the session ended.",
        "purpose": "Reconcile that operation before a new session repeats it.",
        "title": "Check the outcome before retrying",
        "local_paths": {
          "html": "/guides/uncertain-effects/",
          "markdown": "/guides/uncertain-effects/guide.md",
          "json": "/guides/uncertain-effects/guide.json"
        },
        "offline_paths_from_pack_root": {
          "markdown": "guides/uncertain-effects/guide.md",
          "json": "guides/uncertain-effects/guide.json"
        }
      }
    ]
  },
  "discovery": {
    "title": "AI agent handoff checklist: save and verify deliverables",
    "description": "A proposed checklist for handing off AI-agent files and deliverables: preserve the right version, verify the receiving copy, and record what remains unresolved.",
    "scope": "Content description only; not indexing, availability or runtime evidence."
  },
  "section_map": [
    {
      "id": "decision",
      "label": "The decision",
      "json_pointer": "/decision",
      "markdown_heading": "The decision",
      "html_path": "/guides/durable-handoffs/#decision"
    },
    {
      "id": "applies",
      "label": "Use this when",
      "json_pointer": "/fit",
      "markdown_heading": "Use this when",
      "html_path": "/guides/durable-handoffs/#applies"
    },
    {
      "id": "skip",
      "label": "Skip this when",
      "json_pointer": "/skip",
      "markdown_heading": "Skip this when",
      "html_path": "/guides/durable-handoffs/#skip"
    },
    {
      "id": "checks",
      "label": "Work through the checks",
      "json_pointer": "/steps",
      "markdown_heading": "Checks",
      "html_path": "/guides/durable-handoffs/#checks"
    },
    {
      "id": "accept",
      "label": "What would count as success?",
      "json_pointer": "/acceptance",
      "markdown_heading": "Acceptance",
      "html_path": "/guides/durable-handoffs/#accept"
    },
    {
      "id": "evidence",
      "label": "Evidence to bring back",
      "json_pointer": "/evidence_plan",
      "markdown_heading": "Evidence to bring back",
      "html_path": "/guides/durable-handoffs/#evidence"
    },
    {
      "id": "stop",
      "label": "Stop or recover",
      "json_pointer": "/stop",
      "markdown_heading": "Stop or recover",
      "html_path": "/guides/durable-handoffs/#stop"
    },
    {
      "id": "limits",
      "label": "What this does not establish",
      "json_pointer": "/limits",
      "markdown_heading": "Limits",
      "html_path": "/guides/durable-handoffs/#limits"
    },
    {
      "id": "sources",
      "label": "Reference links",
      "json_pointer": "/sources",
      "markdown_heading": "Reference links",
      "html_path": "/guides/durable-handoffs/#sources"
    },
    {
      "id": "record",
      "label": "Use this guide with your own evidence",
      "json_pointer": "/decision_record",
      "markdown_heading": "Start this guide’s record",
      "html_path": "/guides/durable-handoffs/#record"
    },
    {
      "id": "next-reads",
      "label": "If another problem remains",
      "json_pointer": "/reading_paths",
      "markdown_heading": "If another problem remains",
      "html_path": "/guides/durable-handoffs/#next-reads"
    }
  ],
  "acceptance_links": [
    {
      "acceptance_check": 1,
      "acceptance_html_path": "/guides/durable-handoffs/#accept-1",
      "evidence_html_path": "/guides/durable-handoffs/#evidence-1",
      "acceptance_json_pointer": "/acceptance/0",
      "evidence_json_pointer": "/evidence_plan/0"
    },
    {
      "acceptance_check": 2,
      "acceptance_html_path": "/guides/durable-handoffs/#accept-2",
      "evidence_html_path": "/guides/durable-handoffs/#evidence-2",
      "acceptance_json_pointer": "/acceptance/1",
      "evidence_json_pointer": "/evidence_plan/1"
    },
    {
      "acceptance_check": 3,
      "acceptance_html_path": "/guides/durable-handoffs/#accept-3",
      "evidence_html_path": "/guides/durable-handoffs/#evidence-3",
      "acceptance_json_pointer": "/acceptance/2",
      "evidence_json_pointer": "/evidence_plan/2"
    }
  ],
  "citation_note": "Section paths identify content on the canonical HTML page; they are not separate pages or evidence of live availability. Per-check numbers and JSON pointers apply to this build revision. Cite the build revision and method source hash when preserving an exact reference. Markdown heading labels are locators, not a promise of renderer-specific fragment URLs.",
  "source_fields": [
    "acceptance",
    "category",
    "decision",
    "dek",
    "evidence",
    "evidence_plan",
    "evidence_plan_note",
    "fit",
    "limits",
    "minutes",
    "next_reads",
    "scope_label",
    "search_terms",
    "skip",
    "slug",
    "sources",
    "steps",
    "stop",
    "title",
    "updated"
  ],
  "source_hash_scope": "SHA-256 of the build-input guide record serialized as JSON with sorted keys, compact separators and ASCII escaping. Not the downloadable guide.json file bytes."
}
