diff --git a/docs/evidence/live-acceptance.json b/docs/evidence/live-acceptance.json
index a7e55b0..34cdeeb 100644
--- a/docs/evidence/live-acceptance.json
+++ b/docs/evidence/live-acceptance.json
@@ -1,35 +1,35 @@
{
"schemaVersion": "ifd-live-acceptance/v1",
"acceptance": "BUILD-04",
- "recorded_at": "2026-11-13T04:34:45.969186+00:00",
+ "recorded_at": "2026-11-13T05:22:46.980922+00:00",
"deployment": {
- "commit": "553a41ff8ceee658779196f2856b4cebc3ae241f",
- "worker_version": "42d1aede-d6f5-4e0b-a226-32617cab2c9e"
+ "commit": "238f05ceee4984261cffcbe9d48e92088c19fca6",
+ "worker_version": "62bc3afe-fb1f-474f-b2de-765ac1fdfeb5"
},
- "integration_digest": "3f5c27cd714b6f1ba0c85c7056419c4e6b62ee8481cc12be0b17cd8441e33845",
+ "integration_digest": "3c11a1be1cbc5c631098d42a7b6411396c9488c7c5cdda21ae51d62b40544a5c",
"outcomes": {
"generation_through_mcp": {
"passed": true,
- "detail": "v047-acceptance-20261113T0435Z leg 1, v047-acceptance-20261113T0435Z leg 2"
+ "detail": "v051-acceptance-20261113 leg 1, v051-acceptance-20261113 leg 2"
},
"neo_response": {
"passed": true,
- "detail": "v047-acceptance-20261113T0435Z leg 1 (A21N), v047-acceptance-20261113T0435Z leg 2 (A21N)"
+ "detail": "v051-acceptance-20261113 leg 1 (A20N), v051-acceptance-20261113 leg 2 (A20N)"
},
"two_legs_retained": {
"passed": true,
- "detail": "v047-acceptance-20261113T0435Z legs 1 and 2"
+ "detail": "v051-acceptance-20261113 legs 1 and 2"
},
"authentication_and_resumption": {
"passed": true,
- "detail": "approval wait, resume and signed-in generation: v047-acceptance-20261113T0435Z"
+ "detail": "approval wait, resume and signed-in generation: v051-acceptance-20261113"
}
},
"cases": [
{
- "thread": "trip-a674affc1b",
- "trip": "v047-acceptance-20261113T0435Z",
- "interrupts": 2,
+ "thread": "trip-6543469f37",
+ "trip": "v051-acceptance-20261113",
+ "interrupts": 3,
"resumes": 4,
"legs": [
{
@@ -38,21 +38,21 @@
"requested": {
"origin": "KIAD",
"destination": "KEWR",
- "aircraft": "A21N",
- "departure": "2026-11-13T14:00:00Z"
+ "aircraft": "A20N",
+ "departure": "2026-11-14T14:00:00Z"
},
"generation": {
"status": "generated",
- "clicked_at": "2026-11-13T04:33:08.752596+00:00",
+ "clicked_at": "2026-11-13T05:20:42.101703+00:00",
"browser_session": true
},
"snapshot": {
- "sha256": "a63e3d4603943fc117c08da55c0dc8a6c86472eead1a71866862cf0fc89a169d",
- "retrieved_at": "2026-11-13T04:33:21.323954+00:00",
- "generated_at": "2026-11-13T04:33:09Z",
+ "sha256": "a43b02a687926a06f2a856a532a57007aa65c45f82f493bbe3a46e8edaeba176",
+ "retrieved_at": "2026-11-13T05:20:55.378465+00:00",
+ "generated_at": "2026-11-13T05:20:43Z",
"origin": "KIAD",
"destination": "KEWR",
- "aircraft": "A21N",
+ "aircraft": "A20N",
"takeoff_status": "available"
}
},
@@ -61,22 +61,22 @@
"revision": 1,
"requested": {
"origin": "KEWR",
- "destination": "EIDW",
- "aircraft": "A21N",
- "departure": "2026-11-13T23:15:00Z"
+ "destination": "KIAD",
+ "aircraft": "A20N",
+ "departure": "2026-11-14T18:00:00Z"
},
"generation": {
"status": "generated",
- "clicked_at": "2026-11-13T04:33:55.305297+00:00",
+ "clicked_at": "2026-11-13T05:21:31.561695+00:00",
"browser_session": true
},
"snapshot": {
- "sha256": "3ca1d8c02210ae5e03228c3080237c58544031f86f5c5270b3be4247bc2a391c",
- "retrieved_at": "2026-11-13T04:34:10.114476+00:00",
- "generated_at": "2026-11-13T04:33:56Z",
+ "sha256": "268a6e51fe528a7ff477cad6d115b3498af037e1e6d2b715945d1212f3e99626",
+ "retrieved_at": "2026-11-13T05:21:43.080169+00:00",
+ "generated_at": "2026-11-13T05:21:32Z",
"origin": "KEWR",
- "destination": "EIDW",
- "aircraft": "A21N",
+ "destination": "KIAD",
+ "aircraft": "A20N",
"takeoff_status": "available"
}
}
diff --git a/docs/evidence/v051-release.md b/docs/evidence/v051-release.md
new file mode 100644
index 0000000..38b1d0f
--- /dev/null
+++ b/docs/evidence/v051-release.md
@@ -0,0 +1,74 @@
+# v0.5.0 and v0.5.1 releases: managed trip preparation
+
+Observed November 13, 2026 UTC. v0.5.0 added durable trip progress (`trip_progress`, INT-416)
+and safe cancellation with turn deadlines (`cancel_trip`, INT-417). It was deployed, failed
+live acceptance, and was rolled back. v0.5.1 fixed the failure and passed production live
+acceptance, including cancellation.
+
+## v0.5.0 incident and rollback
+
+- [Release run](https://github.com/IntelIP/InfiniteFlightAgent/actions/runs/43368857075) from
+ `3519df0b5fea383ae85cf60456a63bebf7926370`; Worker `bcca9620-3e4d-42be-bb1e-44acf95cce3a`
+ at 100%, image `sha256:8a5bc1cda0e9…`.
+- Every SimBrief generation failed before the click (`provider_error_unknown`, Browserbase
+ session `3a957516-edf9-4245-9618-f730fecb23ea`, 6.2 s). Container log at 05:05:30:
+ `playwright/driver/node: error while loading shared libraries: libatomic.so.1`. Dependabot
+ [#33](https://github.com/IntelIP/InfiniteFlightAgent/pull/33) moved playwright 1.64.1 →
+ 1.65.0, whose driver needs a library `python:3.12-slim` lacks. Unit tests mock the browser,
+ so CI never started the driver.
+- The same v0.5.0 trip showed `cancel_trip` withdrawing a pending approval correctly, with
+ one defect: `turn_status` still returned the withdrawn `approval_required`.
+- Production was rolled back to v0.4.7 (Worker `42d1aede-d6f5-4e0b-a226-32617cab2c9e`) with
+ `wrangler versions deploy`. No v0.5.0 plan was generated.
+
+## v0.5.1 fix and release identity
+
+[PR #37](https://github.com/IntelIP/InfiniteFlightAgent/pull/37) pins `playwright==1.64.1`,
+makes `turn_status` report `cancelled` after `cancel_trip` (regression test fails without
+the fix), and adds the CI `image` job that starts the Playwright driver inside the built
+container. Locally that check reproduced the v0.5.0 failure (`Connection closed while
+reading from the driver`) and passed on the fix.
+
+- PR squash merge and release source/tag: `238f05ceee4984261cffcbe9d48e92088c19fca6`.
+- [Release workflow](https://github.com/IntelIP/InfiniteFlightAgent/actions/runs/43370679495): guard, source CI including `image`, upload, owner-authorized production approval, promotion, trigger deployment and GitHub release publication passed.
+- Production Worker: `62bc3afe-fb1f-474f-b2de-765ac1fdfeb5`, at 100%.
+- Immutable image: `sha256:50cb0c37d75184b4576e091d8aed362d03543c672f47ce4074edd9350ad656e2`.
+- Rollback Worker: `42d1aede-d6f5-4e0b-a226-32617cab2c9e` (v0.4.7). Do not roll back to v0.5.0.
+- Integration digest: `3c11a1be1cbc5c631098d42a7b6411396c9488c7c5cdda21ae51d62b40544a5c`.
+- Local: 478 tests passed with three Postgres-only skips; Ruff check and format clean.
+
+## Production live acceptance (v0.5.1)
+
+Acceptance ran on the promoted production Worker through the remote MCP tools.
+
+**Cancel before approval.** Conversation `trip-7928b5ad19`, trip `v051-cancel-a-20261113`
+(KIAD–KTEB, A20N). `cancel_trip` returned `cancelled` (`outcome: stopped`) and withdrew the
+pending approval. `trip_progress` showed the turn and approval `cancelled`; `turn_status`
+returned `cancelled`; a later `approve_dispatch` was refused ("This approval was cancelled
+and cannot be approved. Nothing was dispatched or generated."); `conversation_status`
+returned `approval_cancelled`; nothing was saved for the trip.
+
+**Three-leg trip with a cancelled final leg.** Conversation `trip-6543469f37`, trip
+`v051-acceptance-20261113`: private standard A20N, N320HD, four passengers, KGS, automatic
+routes and runways, November 14, 2026.
+
+| Leg | Departure UTC | Result | Retained route | Browser seconds |
+| --- | --- | --- | --- | ---: |
+| 1: KIAD–KEWR | 14:00 | generated, briefing ready | `JCOBY4 SWANN PHLBO4` | 39.4 |
+| 2: KEWR–KIAD | 18:00 | generated, briefing ready | `DCT PARKE HYPER9` | 37.8 |
+| 3: KIAD–KBOS | 22:00 | approval cancelled, never generated | — | — |
+
+With leg 3's approval pending, `trip_progress` showed legs 1 and 2 `briefing_ready` and the
+approval history. `cancel_trip` then withdrew leg 3 (`withdrawn_revisions: []`); afterwards
+`turn_status` returned `cancelled`, `conversation_status` `approval_cancelled`, and
+`approve_dispatch` was refused. Legs 1 and 2 kept their briefings (snapshots `a43b02a6…`,
+`268a6e51…`). No Generate was retried and no browser remained active. All four
+[database-derived BUILD-04 outcomes](live-acceptance.json) pass and product validation
+reports `passed`.
+
+## Limitations
+
+Cancellation while a browser session is open, and the 600-second turn deadline, were not
+exercised live; both remain controlled-test evidence. Leg 2's SimBrief-chosen route has no
+SID (`DCT PARKE HYPER9`). Both briefings flag their FLEX thrust estimate as `SUSPECT`
+(reduction over the 25% FAA AC 25-13 limit); thrust remains a simulation-grade estimate.
diff --git a/docs/implementation/deployment.md b/docs/implementation/deployment.md
index e2ed26d..80598a6 100644
--- a/docs/implementation/deployment.md
+++ b/docs/implementation/deployment.md
@@ -1,8 +1,28 @@
# Cloudflare deployment
+
+
+## Current release: v0.5.1
+
+Observed November 13, 2026 UTC: [PR #37](https://github.com/IntelIP/InfiniteFlightAgent/pull/37)
+is merged and [v0.5.1](https://github.com/IntelIP/InfiniteFlightAgent/releases/tag/v0.5.1)
+is deployed at 100%, adding trip progress and safe cancellation (v0.5.0) with the
+generation fix. v0.5.0 (Worker `bcca9620-3e4d-42be-bb1e-44acf95cce3a`) failed every
+generation and was rolled back to v0.4.7 before v0.5.1; do not redeploy it.
+
+- Release source and PR merge: `238f05ceee4984261cffcbe9d48e92088c19fca6`.
+- Production Worker: `62bc3afe-fb1f-474f-b2de-765ac1fdfeb5`.
+- Immutable image: `sha256:50cb0c37d75184b4576e091d8aed362d03543c672f47ce4074edd9350ad656e2`.
+- Rollback Worker: `42d1aede-d6f5-4e0b-a226-32617cab2c9e` (v0.4.7).
+
+The [release report](../evidence/v051-release.md) owns the v0.5.0 incident, rollback,
+identities, cancellation acceptance and limitations. All four
+[database-derived BUILD-04 outcomes](../evidence/live-acceptance.json) pass for this release
+integration. Two sequential browser sessions used 77.1 seconds; zero active browsers remained.
+
-## Current release: v0.4.7
+## Previous release: v0.4.7
Observed November 13, 2026 UTC: [PR #27](https://github.com/IntelIP/InfiniteFlightAgent/pull/27)
is merged and [v0.4.7](https://github.com/IntelIP/InfiniteFlightAgent/releases/tag/v0.4.7)