Skip to content

Release 0.20.33: quieter recovery and clearer conversation failures - #263

Merged
Brian Krabach (bkrabach) merged 6 commits into
mainfrom
fix/goal-failure-diagnostics
Sep 28, 2026
Merged

Brian Krabach (bkrabach) merged 6 commits into
mainfrom
fix/goal-failure-diagnostics

Conversation

@bkrabach

@bkrabach Brian Krabach (bkrabach) commented Sep 27, 2026 •

Copy link
Copy Markdown
Contributor

Recovered background work can produce raw, repetitive notices even when its result is already saved, and a failed manager turn can appear successful when its last model call succeeded. This release makes saved-work notices readable, keeps the manager outcome accurate, and links a dated failure banner to the recorded details. Correctable tool errors remain in the work history without becoming a conversation-failure banner.

The app projects only validated host-owned recovery metadata, offers saved result and worker links when the matching records exist, and keeps the original notice behind Technical details. The companion loop-live change reconciles already-checkpointed results silently, restores missing evidence, and announces changed or uncertain outcomes without rerunning work. Handled startup failures now retain bounded, redacted private diagnostic receipts; Copy diagnostics carries their reference.

Prepares 0.20.33, including the already merged startup-selection, ChatGPT connection, and canvas-controls repairs in #262. Companion fixes are merged in microsoft/amplifier-module-loop-live#11, microsoft/amplifier-module-loop-streaming#65, and microsoft/amplifier-bundle-computer-use#26. The release notes explain that runtime component updates and a fresh worker are needed to adopt those changes.

Validation:

  • All 397 frontend tests passed; production build, repeated-build comparison, distribution verification, and lock checks passed.
  • Recovery browser scenarios passed for current and legacy notices, saved results, copying, and mobile layout. Startup selection passed through startup, failure, and reload without replay. All four session-health browser modes passed, including context-limit recovery with an active worker.
  • 61 focused history/recovery backend checks passed. The subsequent runtime/backend set passed 31 checks with one optional-native dependency skip, including all eight real Work/Anchors goal integration cases.
  • Startup diagnostics coverage includes Core validation logs, handled and unhandled failures, missing stderr, redaction, output bounds, private-file reuse, invalid paths, and persistence through failed send, reload, and recovery.
  • All 27 native job recovery and Work/Anchors goal integration checks passed after supplying the optional native transport dependency in a separate test-only directory. No provider network calls were made.
  • The complete local Python run finished with 4,304 passing checks, 124 skips, and one startup-authentication guidance regression. That regression is fixed; all 100 focused startup, diagnostics, module, manager-failure, session-health, and runtime tests then passed, including expanded coverage for all five classified provider failure categories. The complete suite was not repeated after that bounded repair.

No production service or user history was changed or replayed during validation. Browser evidence uses isolated fixtures; physical computer access, real provider accounts, external website rendering, and Spark-1 installed-worker adoption remain separate acceptance checks. The broader ecosystem diagnostics plan remains separate work.

…into fix/goal-failure-diagnostics

# Conflicts:
#	amplifier_web/static/assets/abnfDiagram-VCTEODGH-C8kvwBmU.js
#	amplifier_web/static/assets/abnfDiagram-VCTEODGH-CQpIpx4L.js
#	amplifier_web/static/assets/abnfDiagram-VCTEODGH-Cxthi7DF.js
#	amplifier_web/static/assets/app-7viUedJQ.js
#	amplifier_web/static/assets/app-CI1rDkjG.js
#	amplifier_web/static/assets/app-qQeXb9Sm.js
#	amplifier_web/static/assets/arc-C0HCYinx.js
#	amplifier_web/static/assets/arc-Cd207cxK.js
#	amplifier_web/static/assets/arc-nxCsMiB1.js
#	amplifier_web/static/assets/architectureDiagram-5GKGNRK7-BhCAQikW.js
#	amplifier_web/static/assets/architectureDiagram-5GKGNRK7-Bjg7KPfY.js
#	amplifier_web/static/assets/architectureDiagram-5GKGNRK7-C6yO5SnA.js
#	amplifier_web/static/assets/blockDiagram-I7D4REHJ-By5ih9VU.js
#	amplifier_web/static/assets/blockDiagram-I7D4REHJ-CYJ6zdxF.js
#	amplifier_web/static/assets/blockDiagram-I7D4REHJ-DgHoFQ7_.js
#	amplifier_web/static/assets/c4Diagram-7LVT6UL2-CAT7R2xj.js
#	amplifier_web/static/assets/c4Diagram-7LVT6UL2-DaabGhwo.js
#	amplifier_web/static/assets/c4Diagram-7LVT6UL2-MrqIjJZm.js
#	amplifier_web/static/assets/chunk-2Q5K7J3B-Hupey7um.js
#	amplifier_web/static/assets/chunk-2Q5K7J3B-gvMtHYDX.js
#	amplifier_web/static/assets/chunk-2Q5K7J3B-h1yMEKAe.js
#	amplifier_web/static/assets/chunk-5VM5RSS4-BkehtS-x.js
#	amplifier_web/static/assets/chunk-5VM5RSS4-DRn7AX50.js
#	amplifier_web/static/assets/chunk-5VM5RSS4-PcNlXskR.js
#	amplifier_web/static/assets/chunk-F27PBJKO-08qFJ2Jt.js
#	amplifier_web/static/assets/chunk-F27PBJKO-OmuqT5ZV.js
#	amplifier_web/static/assets/chunk-F27PBJKO-nNeL4pO3.js
#	amplifier_web/static/assets/chunk-IMKFNOWR-BHywLYsX.js
#	amplifier_web/static/assets/chunk-IMKFNOWR-BVcIx6xS.js
#	amplifier_web/static/assets/chunk-IMKFNOWR-BdYsEWWr.js
#	amplifier_web/static/assets/chunk-JWPE2WC7-B70-rL71.js
#	amplifier_web/static/assets/chunk-JWPE2WC7-DrQCOfW2.js
#	amplifier_web/static/assets/chunk-JWPE2WC7-KAwJt4Dq.js
#	amplifier_web/static/assets/chunk-POPQ4Y6H-BvDPAZm-.js
#	amplifier_web/static/assets/chunk-POPQ4Y6H-D4TU3m_X.js
#	amplifier_web/static/assets/chunk-POPQ4Y6H-DG8TEL9o.js
#	amplifier_web/static/assets/chunk-SVP7TREG-B8cpLBHP.js
#	amplifier_web/static/assets/chunk-SVP7TREG-D1PHBZoi.js
#	amplifier_web/static/assets/chunk-SVP7TREG-XhllUbrG.js
#	amplifier_web/static/assets/chunk-TICWLB2K-BIO8Aksa.js
#	amplifier_web/static/assets/chunk-TICWLB2K-Bl4ra87H.js
#	amplifier_web/static/assets/chunk-TICWLB2K-CTNsQHy0.js
#	amplifier_web/static/assets/chunk-XXDRQBXY-CfEngarh.js
#	amplifier_web/static/assets/chunk-XXDRQBXY-Cq6ARDN1.js
#	amplifier_web/static/assets/chunk-XXDRQBXY-Np_UiiaV.js
#	amplifier_web/static/assets/cose-bilkent-JH36ORCC-Dye32y_g.js
#	amplifier_web/static/assets/cose-bilkent-JH36ORCC-uMnsdoF-.js
#	amplifier_web/static/assets/cose-bilkent-JH36ORCC-xUNGJ0vC.js
#	amplifier_web/static/assets/cynefin-OW5HDTMX-BLW9r9wv.js
#	amplifier_web/static/assets/cynefin-OW5HDTMX-C3rRuP6Q.js
#	amplifier_web/static/assets/cynefin-OW5HDTMX-J4U8a7UR.js
#	amplifier_web/static/assets/cynefinDiagram-5FMLGOSQ-Bh9AalLD.js
#	amplifier_web/static/assets/cynefinDiagram-5FMLGOSQ-CvKwB1kz.js
#	amplifier_web/static/assets/cynefinDiagram-5FMLGOSQ-DTIGSPU7.js
#	amplifier_web/static/assets/dagre-GXQ25YYZ-CCjKlIeD.js
#	amplifier_web/static/assets/dagre-GXQ25YYZ-DKfI9V4I.js
#	amplifier_web/static/assets/dagre-GXQ25YYZ-KzOZEMD1.js
#	amplifier_web/static/assets/diagram-S7CK7UJ4-9QTEr0HP.js
#	amplifier_web/static/assets/diagram-S7CK7UJ4-D-u7xzTd.js
#	amplifier_web/static/assets/diagram-S7CK7UJ4-veo30afI.js
#	amplifier_web/static/assets/diagram-UQ7AKVKN-RtWVmCwn.js
#	amplifier_web/static/assets/diagram-UQ7AKVKN-p1LDS_vV.js
#	amplifier_web/static/assets/diagram-UQ7AKVKN-rolnrGRU.js
#	amplifier_web/static/assets/diagram-VSXAHHWV-DRWXkh1p.js
#	amplifier_web/static/assets/diagram-VSXAHHWV-hciGKJb3.js
#	amplifier_web/static/assets/diagram-VSXAHHWV-swuSh09p.js
#	amplifier_web/static/assets/diagram-VX7I27RA-BJzA7bhK.js
#	amplifier_web/static/assets/diagram-VX7I27RA-DSHd6GWi.js
#	amplifier_web/static/assets/diagram-VX7I27RA-DhfjE3ak.js
#	amplifier_web/static/assets/diagram-Z3DM3KII-DFDS5ly9.js
#	amplifier_web/static/assets/diagram-Z3DM3KII-M2LVzQ9u.js
#	amplifier_web/static/assets/diagram-Z3DM3KII-irwI-Q50.js
#	amplifier_web/static/assets/ebnfDiagram-PWID7BFC-Bhfed9ny.js
#	amplifier_web/static/assets/ebnfDiagram-PWID7BFC-CAUzYhbY.js
#	amplifier_web/static/assets/ebnfDiagram-PWID7BFC-DKDEclkq.js
#	amplifier_web/static/assets/erDiagram-RLTQ6QDP-B70udbuP.js
#	amplifier_web/static/assets/erDiagram-RLTQ6QDP-CH0fqdsO.js
#	amplifier_web/static/assets/erDiagram-RLTQ6QDP-CIiMC89f.js
#	amplifier_web/static/assets/flowDiagram-HODETNUW-0Sn6GjJB.js
#	amplifier_web/static/assets/flowDiagram-HODETNUW-B1v3Srof.js
#	amplifier_web/static/assets/flowDiagram-HODETNUW-Dr55GFTH.js
#	amplifier_web/static/assets/ganttDiagram-EL5Y4UJY-B0MKCZgH.js
#	amplifier_web/static/assets/ganttDiagram-EL5Y4UJY-B9pOy1nY.js
#	amplifier_web/static/assets/ganttDiagram-EL5Y4UJY-D3bk-x2Q.js
#	amplifier_web/static/assets/gitGraphDiagram-WWUBYQGX-BkLhRzpH.js
#	amplifier_web/static/assets/gitGraphDiagram-WWUBYQGX-DiGjaLDs.js
#	amplifier_web/static/assets/gitGraphDiagram-WWUBYQGX-f9cK08Gl.js
#	amplifier_web/static/assets/infoDiagram-27XIBGKW-B0EBkQjx.js
#	amplifier_web/static/assets/infoDiagram-27XIBGKW-CK_gEKA1.js
#	amplifier_web/static/assets/infoDiagram-27XIBGKW-PckyBAa0.js
#	amplifier_web/static/assets/ishikawaDiagram-5VMMS53U-BWjN8gxu.js
#	amplifier_web/static/assets/ishikawaDiagram-5VMMS53U-CbSqUZmq.js
#	amplifier_web/static/assets/ishikawaDiagram-5VMMS53U-b9XB65fS.js
#	amplifier_web/static/assets/journeyDiagram-3NMN7TZE-CiQTH8nI.js
#	amplifier_web/static/assets/journeyDiagram-3NMN7TZE-JRtLgR9E.js
#	amplifier_web/static/assets/journeyDiagram-3NMN7TZE-onVNO-Ru.js
#	amplifier_web/static/assets/kanban-definition-UXKFOSKX-5AJlkhrf.js
#	amplifier_web/static/assets/kanban-definition-UXKFOSKX-BdUNyxsG.js
#	amplifier_web/static/assets/kanban-definition-UXKFOSKX-CdzyHMSk.js
#	amplifier_web/static/assets/layout-25xfYTYA.js
#	amplifier_web/static/assets/layout-BcZLUxXn.js
#	amplifier_web/static/assets/layout-DVk1QBeS.js
#	amplifier_web/static/assets/linear-Cco8t75X.js
#	amplifier_web/static/assets/linear-Cs83r27z.js
#	amplifier_web/static/assets/linear-DBa5gqbW.js
#	amplifier_web/static/assets/mermaid.core-CdGsAdCF.js
#	amplifier_web/static/assets/mermaid.core-Db1rVExV.js
#	amplifier_web/static/assets/mermaid.core-faRzEm2Q.js
#	amplifier_web/static/assets/mindmap-definition-YA3MSWOX-CwiC6U0l.js
#	amplifier_web/static/assets/mindmap-definition-YA3MSWOX-DAZqrGPi.js
#	amplifier_web/static/assets/mindmap-definition-YA3MSWOX-JbWcMKU6.js
#	amplifier_web/static/assets/pegDiagram-XKGWAZYB-CTTLQYNg.js
#	amplifier_web/static/assets/pegDiagram-XKGWAZYB-CfavDD0n.js
#	amplifier_web/static/assets/pegDiagram-XKGWAZYB-v9433Pse.js
#	amplifier_web/static/assets/pieDiagram-E7YTZNPT-C0i1ELRP.js
#	amplifier_web/static/assets/pieDiagram-E7YTZNPT-CX12eTBo.js
#	amplifier_web/static/assets/pieDiagram-E7YTZNPT-ddjjrwh9.js
#	amplifier_web/static/assets/quadrantDiagram-AXDQQJYC-B0NuZ2VH.js
#	amplifier_web/static/assets/quadrantDiagram-AXDQQJYC-D85L1Xm7.js
#	amplifier_web/static/assets/quadrantDiagram-AXDQQJYC-DrtSdi-F.js
#	amplifier_web/static/assets/railroadDiagram-O6MQD6OU-BVdMX1Xe.js
#	amplifier_web/static/assets/railroadDiagram-O6MQD6OU-DoCBJMki.js
#	amplifier_web/static/assets/railroadDiagram-O6MQD6OU-g6HpylF4.js
#	amplifier_web/static/assets/requirementDiagram-BXWQKSXE-BJfHmPOs.js
#	amplifier_web/static/assets/requirementDiagram-BXWQKSXE-Dw7uZIHD.js
#	amplifier_web/static/assets/requirementDiagram-BXWQKSXE-iqmRVJ6U.js
#	amplifier_web/static/assets/sankeyDiagram-P5KCCOFB-CB3AkmG3.js
#	amplifier_web/static/assets/sankeyDiagram-P5KCCOFB-TltlQpcP.js
#	amplifier_web/static/assets/sankeyDiagram-P5KCCOFB-rJNnBF7P.js
#	amplifier_web/static/assets/sequenceDiagram-WJ2MYXX4-CSnbKoLl.js
#	amplifier_web/static/assets/sequenceDiagram-WJ2MYXX4-Cyss0tjQ.js
#	amplifier_web/static/assets/sequenceDiagram-WJ2MYXX4-bKHYNEhE.js
#	amplifier_web/static/assets/sizeCapture-INFHLROL-D20cEYLP.js
#	amplifier_web/static/assets/sizeCapture-INFHLROL-D65PZvgz.js
#	amplifier_web/static/assets/sizeCapture-INFHLROL-sZLC26GK.js
#	amplifier_web/static/assets/stateDiagram-D77RDMKH-5aAHBXw2.js
#	amplifier_web/static/assets/stateDiagram-D77RDMKH-C2JbMhAs.js
#	amplifier_web/static/assets/stateDiagram-D77RDMKH-kha-Ed3K.js
#	amplifier_web/static/assets/swimlanes-42K2YHIH-CC0B74Sr.js
#	amplifier_web/static/assets/swimlanes-42K2YHIH-D-dDTAzh.js
#	amplifier_web/static/assets/swimlanes-42K2YHIH-DQ8flE-9.js
#	amplifier_web/static/assets/timeline-definition-24CTP7MA-34PlETXr.js
#	amplifier_web/static/assets/timeline-definition-24CTP7MA-BpyofmdG.js
#	amplifier_web/static/assets/timeline-definition-24CTP7MA-Co35tawd.js
#	amplifier_web/static/assets/vennDiagram-4TSXK5OY-BOspaChz.js
#	amplifier_web/static/assets/vennDiagram-4TSXK5OY-DBCBZ2Sl.js
#	amplifier_web/static/assets/vennDiagram-4TSXK5OY-NKPu0hZr.js
#	amplifier_web/static/assets/wardleyDiagram-VM6X3IG4-B1YKb9X6.js
#	amplifier_web/static/assets/wardleyDiagram-VM6X3IG4-BF1oFwli.js
#	amplifier_web/static/assets/wardleyDiagram-VM6X3IG4-D1ei6gt2.js
#	amplifier_web/static/assets/xychartDiagram-S5SC5T6Z-1OmDLQT7.js
#	amplifier_web/static/assets/xychartDiagram-S5SC5T6Z-BW1aK6Jh.js
#	amplifier_web/static/assets/xychartDiagram-S5SC5T6Z-CJjJ47BC.js
#	amplifier_web/static/build.json
#	amplifier_web/static/index.html
@bkrabach Brian Krabach (bkrabach) changed the title Preserve manager failure outcomes and private startup diagnostics Release 0.20.33: quieter recovery and clearer conversation failures Sep 28, 2026
@bkrabach
Brian Krabach (bkrabach) merged commit 2a78126 into main Sep 28, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant