{
 "schema": "aiblocks-page/1",
 "id": "firmware-update-recovery-rehearsal",
 "type": "workflow",
 "name": "Firmware update recovery test planner",
 "summary": "Share your device and update design. Plan failure tests, review recovery evidence and prepare a gated rollout proposal.",
 "headline": "Firmware update recovery test planner",
 "subhead": "Share your device and update design. Plan failure tests, review recovery evidence and prepare a gated rollout proposal. The workflow keeps a checkpoint for each stage and waits when the next stage needs real evidence.",
 "job": {
  "id": "ship-and-host",
  "name": "Ship and host your app"
 },
 "level": "intermediate",
 "thinking": "high",
 "tested": true,
 "updated": "2026-11-03",
 "first_published": "2026-10-26",
 "inputs": [
  {
   "type": "document",
   "required": true,
   "label": "Document",
   "what": "a finished document, such as a Word file, a PDF or a page of notes"
  },
  {
   "type": "test_report",
   "required": false,
   "label": "Test report",
   "what": "what was tested, what passed, what failed and why"
  },
  {
   "type": "question",
   "required": false,
   "label": "Question",
   "what": "the problem, decision or piece of work you want help with, and what a good outcome looks like"
  }
 ],
 "outputs": [
  {
   "type": "plan",
   "required": true,
   "label": "Plan",
   "what": "a dated plan: what to do, in what order, with a decision rule for each step"
  },
  {
   "type": "test_report",
   "required": true,
   "label": "Test report",
   "what": "what was tested, what passed, what failed and why"
  }
 ],
 "you_give": [
  "Hardware/bootloader revisions, partition map and current/target firmware revisions.",
  "Update manifest and verification/boot-confirm design, without secret values.",
  "Connectivity, health windows, physical recovery path and available lab evidence."
 ],
 "you_get": [
  "A revision-specific compatibility and recovery matrix.",
  "A fault-rehearsal plan and evidence register.",
  "A canary proposal with agreed thresholds, owners and open rollout decisions."
 ],
 "use_when": [
  "You need a revision-specific compatibility and recovery matrix."
 ],
 "skip_when": [
  "You want a general review of embedded code: use the Embedded firmware engineer.",
  "You want day-to-day help running a fleet of connected devices: use the IoT fleet rollout planner.",
  "You have no lab and no past test records. It still plans the tests, but it cannot call an update safe to roll out."
 ],
 "output_sample": {
  "input": [
   "Your hardware, bootloader and firmware revisions, and the partition map",
   "Your update manifest and how the device checks and confirms a new image",
   "How devices connect, and how you can reach one that fails to boot",
   "Lab test records you already have (optional)"
  ],
  "prerequisites": [
   "Do not paste secret keys. Describe how signing works instead."
  ],
  "output": [
   {
    "name": "Compatibility and recovery matrix",
    "contains": "Each hardware revision with its update path, recovery access and open questions."
   },
   {
    "name": "Test matrix",
    "contains": "Failure cases such as cut downloads and bad images, each with expected safe state and evidence needed."
   },
   {
    "name": "Evidence register",
    "contains": "PASS, FAIL, NOT_RUN or BLOCKED for each case, linked to real logs."
   },
   {
    "name": "Canary proposal",
    "contains": "Which devices go first, health windows, stop conditions, owners and open decisions."
   }
  ]
 },
 "output_shape": "1. Bind the hardware and update revision\n   Handoff: Compatibility/recovery matrix and unresolved prerequisites.\n   Gate: Unknown required compatibility or recovery facts block affected test cases.\n\n2. Specify the recovery rehearsal\n   Handoff: Test matrix with case ID, revision, expected transition, recovery path and evidence needed.\n   Gate: A case with no safe recovery path is BLOCKED. Planning is allowed without executing the lab.\n\n3. Run authorized lab checks or assess supplied evidence\n   Handoff: Revision-bound PASS/FAIL/NOT_RUN/BLOCKED register with actual logs/artifacts.\n   Gate: Unrun, failed or incomplete recovery evidence blocks a rollout-ready conclusion.\n\n4. Prepare a hardware-diverse canary proposal\n   Handoff: Canary plan, acceptance/stop conditions, owners and unresolved decision list.\n   Gate: No rollout is described as approved or executed without applicable authorization and real evidence.",
 "how_to_use": [
  "Download the workflow and give the complete files to your AI.",
  "Ask it to read the governing instructions and workflow-state.json, then start with the first stage.",
  "Supply missing evidence at the checkpoint; keep later stages pending until their inputs exist.",
  "Review actual results, open items and any proposed external action."
 ],
 "checks": [
  "Evidence identifies firmware, bootloader and hardware revisions.",
  "Recovery is demonstrated in actual lab evidence or marked unrun.",
  "Cohort percentage alone cannot replace health/rollback evidence.",
  "No bricking-proof, fleet-ready or safe-update guarantee is asserted."
 ],
 "next": [
  {
   "name": "Service rollout and rollback planner",
   "url": "https://useaiblocks.com/skills/copilot-devops-rollout-plan",
   "why": "Service rollout and rollback planner"
  }
 ],
 "source": {
  "by": "Michael Sitarzewski and Agency Agents contributors",
  "repo": "msitarzewski/agency-agents",
  "url": "https://github.com/msitarzewski/agency-agents/blob/b37b5bb33b78f2c1d6567d98e25ca818e3259219/engineering/engineering-iot-fleet-engineer.md",
  "licence": "MIT",
  "original_name": "IoT Fleet Engineer",
  "commit": "b37b5bb33b78f2c1d6567d98e25ca818e3259219"
 },
 "credits": [
  {
   "title": "IoT Fleet Engineer",
   "by": "Michael Sitarzewski and Agency Agents contributors",
   "url": "https://github.com/msitarzewski/agency-agents/blob/b37b5bb33b78f2c1d6567d98e25ca818e3259219/engineering/engineering-iot-fleet-engineer.md",
   "used": "Selected task methods, rewritten and narrowed by AI Blocks. Original role profile retained only as provenance/background."
  },
  {
   "title": "Embedded Firmware Engineer",
   "by": "Michael Sitarzewski and Agency Agents contributors",
   "url": "https://github.com/msitarzewski/agency-agents/blob/b37b5bb33b78f2c1d6567d98e25ca818e3259219/engineering/engineering-embedded-firmware-engineer.md",
   "used": "Selected task methods, rewritten and narrowed by AI Blocks. Original role profile retained only as provenance/background."
  }
 ],
 "files": [
  "LICENSE",
  "references/agency-engineering-embedded-firmware-engineer.md",
  "references/agency-engineering-iot-fleet-engineer.md",
  "source.json",
  "workflow-state.json"
 ],
 "links": {
  "page": "https://useaiblocks.com/workflows/firmware-update-recovery-rehearsal",
  "markdown": "https://useaiblocks.com/workflows/firmware-update-recovery-rehearsal.md",
  "json": "https://useaiblocks.com/workflows/firmware-update-recovery-rehearsal.json",
  "instructions": "https://useaiblocks.com/skills/firmware-update-recovery-rehearsal/SKILL.md",
  "download": "https://useaiblocks.com/skills/firmware-update-recovery-rehearsal.zip",
  "api_item": "https://useaiblocks.com/api/v1/items/firmware-update-recovery-rehearsal",
  "api_document": "https://useaiblocks.com/api/v1/documents/workflow/firmware-update-recovery-rehearsal",
  "mcp": "https://useaiblocks.com/mcp"
 }
}
