From c68cd4287462b99e6f84e153b263f288167167b8 Mon Sep 17 00:00:00 2001 From: hudsonaikins-crown Date: Fri, 13 Nov 2026 18:41:30 -0500 Subject: [PATCH 1/2] docs: add crew scheduler and flight engineer roadmap Reorganize the roadmap around three roles: crew scheduler, dispatcher and a local flight engineer using Infinite Flight Connect API v2. Summarize what shipped through v0.5.1, re-sequence the unshipped v0.5.0 scope, and set the release order v0.5.2 through v0.11.0 with the Connect manifest spike first and arrival ops ahead of assisted autothrust. Point to the IFA projects in Linear. Amend goal.md (2026-11-13) to bring telemetry-driven assistance into planned scope, with no LLM in the real-time control loop. Co-Authored-By: Claude Opus 5.5 --- docs/goal.md | 2 + docs/roadmap.md | 246 ++++++++++++++++++++++++++++++++++++------------ 2 files changed, 187 insertions(+), 61 deletions(-) diff --git a/docs/goal.md b/docs/goal.md index 9693243..20eb7ae 100644 --- a/docs/goal.md +++ b/docs/goal.md @@ -55,4 +55,6 @@ Prioritize free/open-source technologies, openly licensed data, existing access, The user operates Infinite Flight, selects spawn, imports the plan, and manually sets thrust. Automatic spawning, thrust control, climb management, LNAV/VNAV assistance, and telemetry-driven control are later possibilities, not launch requirements. +**Amended November 13, 2026 (Hudson):** the product grows into three roles: a crew scheduler that chooses what to fly and why, the existing dispatcher, and a local flight engineer that uses Infinite Flight Connect API v2. Read-only telemetry, then opt-in assisted autothrust, predictive power and arrival ops are now planned work. The LLM never sits in the real-time control loop, and any manual throttle movement hands control back. The [roadmap](roadmap.md) owns the sequence. + No public-product launch, paid provider, hosting platform, model provider, spending limit, or deployment is selected. Research can identify options; consequential choices remain with Hudson. See the [open decisions](backlog.md#open-decisions). diff --git a/docs/roadmap.md b/docs/roadmap.md index 251bd20..ea0e6f8 100644 --- a/docs/roadmap.md +++ b/docs/roadmap.md @@ -1,77 +1,201 @@ # Roadmap -Status updated November 12, 2026 UTC. Production is **v0.4.6**; its -[deployment and exact-image acceptance record](implementation/deployment.md#current-release-v046) -own the observed release facts. New release work is tracked in the -[Infinite Flight Agent Linear project](https://linear.app/intelip/project/infinite-flight-agent-a2f7101e32e9). +Status updated November 13, 2026 UTC. Production is **v0.5.1**; its +[deployment record](implementation/deployment.md#current-release-v051) and +[release report](evidence/v051-release.md) own the observed release facts. Release work is +tracked in Linear as seven `IFA ·` projects under the "Infinite Flight Agent" project label, with +version milestones and target dates; the [Linear roadmap document](https://linear.app/intelip/document/infinite-flight-agent-roadmap-0dcea64227b8) +summarizes them. The [backlog](backlog.md) indexes current capability and historical research; -[goal.md](goal.md) owns accepted intent and the unchanged aircraft-support definition. +[goal.md](goal.md) owns accepted intent and the aircraft-support definition. -## Release outcomes +## Vision + +The agent tells you where to fly and why, then helps you fly it the way a real crew would. +It does this through three roles: + +| Role | What it does | Where it runs | Status | +| --- | --- | --- | --- | +| **Crew scheduler** | Picks what to fly: real airline flights from your home hubs and preferred carriers, mixed with trips somewhere new, each with a one-line purpose ("First A350 into Addis") | Hosted agent (MCP tools on the existing Worker) | Not started | +| **Dispatcher** | Plans how to fly it: flight research, SimBrief plan, briefing, spawn and thrust guidance | Hosted agent | **Shipped** (v0.1–v0.5.1) | +| **Flight engineer** | Watches and, later, manages power and arrival in real time through Infinite Flight Connect API v2 | A small local companion program on the same network as the simulator | Not started | + +### Design rules + +1. **The model proposes, code verifies.** The LLM drafts schedules and performance plans; + deterministic code enforces hard rules (rest, availability, fleet) and runs the control loop. +2. **No LLM in the control loop.** The agent computes the numbers before the flight; the + local companion flies them in real time. +3. **Solo first.** Spawn anywhere, no aircraft repositioning, no Infinite Flight Live + integration for now. +4. **Future schedules for planning, live status only at dispatch.** Live departure boards + return roughly three-hour windows and hit HTTP 429, so they are unsuitable for building + a schedule. + +## What has shipped + +| Area | Shipped capability | Versions | Still open | +| --- | --- | --- | --- | +| Dispatch | Dated FlightAware research, connection checks, reported gates, exact-input approval, SimBrief browser generation with SimBrief-chosen or agreed routes, retained multi-leg briefings, numbered revisions | v0.2–v0.4.7 | Cruise level and alternate inputs (INT-418); multi-airport departure search truncation and 429 | +| Trip control | Durable `trip_progress`, `cancel_trip`, 600 s turn deadline, restart recovery that never repeats Generate | v0.5.0, fixed in v0.5.1 | — | +| Thrust | Labeled A20N/A21N/B38M N1 estimates with exact engine identity and observed-N1 calibration | v0.3–v0.4.5 | **Zero aircraft verified**: simulator evidence missing (INT-412–414) | +| Aircraft catalog | Official v26 fleet matrix frozen: 51 current aircraft, 11 legacy | v0.4.4 | Per-aircraft references and simulator verification (INT-420–425) | +| Quality | 28-case whole-conversation MCP suite plus WF-029–033 trip-control suite in LangSmith; CI starts Playwright in the release image | v0.4.3–v0.5.1 | Client journeys and simulator import matrix (INT-426) | | Version | User outcome | Owning acceptance | | --- | --- | --- | -| v0.4.2 — shipped | Automatic routing, retained plans and bounded single-user browser workflows | [Deployment and acceptance](implementation/deployment.md#current-release-v042) | -| v0.4.3 — shipped | Invalid revisions return useful validation; provider failures explain the cause; workflow evaluation has a versioned baseline | [Release evidence](evidence/v043-release.md); [INT-402–406](https://linear.app/intelip/issue/INT-406) | -| v0.4.4 — shipped | Existing conversations and routing are predictable across broader scenarios; the v26 catalog/native-capability matrix is recorded | [Release evidence](evidence/v044-release.md); [INT-407–411](https://linear.app/intelip/issue/INT-411) | -| v0.4.5 — shipped | Existing neo/MAX estimate paths enforce exact engine/condition identity, safe calibration reuse and retained disclosures; profile accuracy remains unverified | [Release evidence](evidence/v045-release.md); INT-415 release, INT-412–414 verification open | -| v0.4.6 — shipped | Numbered revisions finish generation and finalization in order while retaining previous OFPs/briefings and exact approvals | [Release evidence](evidence/v046-release.md); [PR #24](https://github.com/IntelIP/InfiniteFlightAgent/pull/24) | -| v0.5.0 — planned | Trips expose durable progress and safe cancellation/recovery, support more dispatch inputs and private configurations, and report measured aircraft expansion | [INT-416–428](https://linear.app/intelip/issue/INT-428) | - -For this sequence, v0.4.x repairs and verifies existing behavior; v0.5 adds trip-control and -dispatch capabilities. v0.4.5 ships evidenced software corrections; its remaining profile -verification stays on INT-412–414. Linear owns the detailed task acceptance and actual -blocking relationships, rather than this map duplicating those specifications. - -The first parallel wave shipped revision validation (INT-404), provider failures (INT-405) -and workflow evaluations (INT-403), with one integrator handling documentation (INT-402) -and release assembly (INT-406). Isolated worker branches were integrated in PR #21; CI, -exact-image acceptance and production promotion are recorded as distinct observed steps. - -## Original product milestones and current gaps - -| Milestone | Current capability | Remaining acceptance | Backlog | +| v0.4.2 | Automatic routing, retained plans, bounded single-user browser workflows | [Deployment](implementation/deployment.md) | +| v0.4.3 | Useful revision validation; provider failures explain the cause; versioned evaluation baseline | [Evidence](evidence/v043-release.md); INT-402–406 | +| v0.4.4 | Predictable conversations and routing; v26 catalog matrix | [Evidence](evidence/v044-release.md); INT-407–411 | +| v0.4.5 | neo/MAX estimates enforce exact engine/condition identity; accuracy still unverified | [Evidence](evidence/v045-release.md); INT-415 | +| v0.4.6 | Numbered revisions generate and finalize in order | [Evidence](evidence/v046-release.md) | +| v0.4.7 | Generate is clicked directly; Route Finder no longer hangs generation | [Changelog](../CHANGELOG.md#047---2026-11-12) | +| v0.5.0 | Durable trip progress, cancellation and deadlines (INT-416/417). Broke generation; rolled back | [Report](evidence/v051-release.md) | +| v0.5.1 | Generation restored; CI checks the Playwright driver in the release image | [Report](evidence/v051-release.md) | + +The rest of the original v0.5.0 milestone (INT-418–428) did not ship and is re-sequenced below. + +## Priorities + +Two facts drive the order: + +- **The Connect API spike is the cheapest, most decisive step.** Whether the Connect manifest + exposes N1 and OAT decides how the performance card, assisted autothrust and predictive + power are designed. The same read-only telemetry is also the simulator evidence that every + open thrust-verification ticket is waiting for. One evening with Infinite Flight running + answers it, so it starts now, in parallel with the scheduler. +- **The scheduler needs only what the dispatcher already has.** It reuses FlightAware and the + dispatch flow, so it can ship first and deliver the new "why this trip?" value while + telemetry is being collected. + +Arrival ops moves ahead of assisted autothrust. It is read-only, reuses the gate research the +dispatcher already does, and needs only live position from the bridge. Autothrust and +predictive power need calibrated per-aircraft engine models, which take many logged flights +to build. Arrival ops fills that calendar gap without control-write risk. + +```mermaid +flowchart LR + P[v0.5.2 Departure search fix] --> S[v0.6 Crew scheduler MVP] + K[Spike: Connect manifest] --> B[v0.7 Read-only bridge] + S --> B + B --> C[v0.8 Performance card + verified thrust] + B --> A[v0.9 Arrival ops] + C --> T[v0.10 Assisted autothrust] + K --> T + T --> F[v0.11 Predictive power] +``` + +## Release plan + +Versioning follows the existing policy: fixes ship as patches; each new capability is a minor. + +| Version | Name | User outcome | Contents | Depends on | +| --- | --- | --- | --- | --- | +| **v0.5.2** | Departure search reliability | Multi-airport and 24-hour departure searches return complete results or say clearly what is missing | Page through boards instead of returning ~3-hour windows; back off and report on HTTP 429 (seen on KJFK) | — | +| **Spike** (no release) | Connect manifest | Known answers before phases 2–4 are designed | Dump the manifest for A20N, A21N and 77W; confirm N1, OAT, throttle read-back and AP speed/VS target writes; record in `docs/research/` | Hudson's device on the local network | +| **v0.6.0** | Crew scheduler MVP | "I have 4 hours" returns one real flight from a home hub, on a fleet aircraft, with a purpose line, ready to dispatch | Pilot profile (hubs, airline affinity, fleet, availability, regions); FlightAware `/schedules` with a cache; rules check in code; aircraft tiers in scoring; purpose generator (hub rotation, ~1-in-3 exploration, logbook gaps); manual "mark flown" logbook; hand-off to dispatch | v0.5.2 | +| **v0.7.0** | Read-only bridge | Flights log themselves, and every flight records the engine data needed to verify thrust | Local companion: Connect discovery and reads; automatic logbook (out/off/on/in), landing rate, flight-phase detection; N1/altitude/OAT/weight logs uploaded to the agent; checks that the imported plan matches the OFP (INT-426) | Spike, v0.6 | +| **v0.8.0** | Performance card | Before each flight: FLEX or derated N1, V-speeds, thrust reduction and acceleration altitudes, climb schedule and cruise level, with verified aircraft counted | Cruise level and alternate inputs (INT-418); per-aircraft reference scenarios (INT-420); first verified A20N/A21N/B38M from bridge logs (INT-412–414); thrust models for 77W, A35K, A339 (INT-422/423); measured coverage (INT-427) | v0.7 | +| **v0.9.0** | Arrival ops | A "company" message in descent with an assigned gate and an alternate, plus a taxi route on a companion map | FlightAware arrival gate when published, otherwise airline terminal and size-appropriate stand; OpenStreetMap taxiways and stands; text taxi instructions | v0.7 | +| **v0.10.0** | Assisted autothrust | The companion sets takeoff FLEX, CLB at thrust reduction and AP speed/VS by schedule; any manual throttle movement hands control back | Write-and-read-back confirmation for every set; opt-in per flight | Spike writes, v0.8 | +| **v0.11.0** | Predictive power | Planned N1 per segment, corrected live; step climbs, top of descent, approach speeds | Feed-forward from OFP winds, temperatures, levels and burn-off; PI correction on speed error; background re-plan only for large changes | v0.10, enough logged flights per aircraft | + +**Later:** themed campaigns (Gulf carrier month, Caribbean island hopper), bid lines and trip +trades, live hooks (delays, new routes, new Infinite Flight aircraft), Infinite Flight Live API, +deadhead repositioning, the 787 after its cockpit rework, private-jet presets and Challenger +350/ACJ guidance (INT-419, INT-421), regional jets and the remaining fleet (INT-424, INT-425). + +## Pilot profile (scheduler inputs) + +- **Home hubs:** IAD, LAX, LHR, FRA, ACC +- **Airline affinity:** 1) US carriers, 2) Middle East, 3) European +- **Fleet = type ratings:** prefer interactive or refreshed cockpits (see aircraft tiers) +- **Availability:** real-time windows (weeknights, long weekends) +- **Regions to explore:** Latin America, South America, Caribbean, East Africa, Southeast Asia +- **Default mix:** mostly affinity carriers from home hubs, with exploration trips woven in + +The monthly cycle is: build the schedule (reserve first; bid lines and trades later) → rules +check in code → dispatch (shipped) → fly it solo in real time → log it (manual in v0.6, +automatic in v0.7) → update pilot state → next assignment. + +## Aircraft tiers (Infinite Flight 26.x) + +| Tier | Aircraft | Best for | Thrust model | +| --- | --- | --- | --- | +| Interactive cockpit | A321neo (26.4), A320neo (26.5) | Short and medium haul | Estimate shipped; verification v0.8 | +| Refreshed cockpit (26.5) | 777, A350-900/-1000, A330 family, A380, 737 | Long haul (737 short haul) | B38M estimate shipped; 77W, A35K, A339 in v0.8 | +| Hold | 787 (not in the 26.5 refresh) | Swap in after its rework | — | + +The scheduler assigns only aircraft in the pilot's fleet. Aircraft without a verified thrust +model can still be assigned; their briefing says so, as today. + +## Connect API v2 facts + +- **Transport:** TCP 10112 on the device's IP; UDP discovery on 15000; enable in Settings > + General > "Enable Infinite Flight Connect". The companion must be on the simulator's network. +- **Reads:** position, ground speed, heading, on-ground, flaps, engine states, flight plan, + wind at the current level. +- **Writes:** throttle (`simulator/throttle`; read-back returns the negated value), autopilot + targets (for example `aircraft/0/systems/autopilot/spd/target`, m/s or Mach), flaps, toggle commands. +- **Limits:** writable states are not marked in the manifest; sets and commands are not + confirmed (read back to verify); commands that need data are unusable + (`FlightPlan.AddWaypoints`); reverse thrust is not controllable; the API cannot draw on + Infinite Flight's map. +- **Unknown until the spike:** whether the manifest exposes N1 and OAT. + +Control design for predictive power: feed-forward target N1 per segment (level, OAT/ISA +deviation, wind component, weight after burn-off); PI feedback on speed error, recomputed +locally when live wind or OAT diverges from forecast; the agent re-plans in the background +only for a new cruise level or reroute. + +## Original product milestones + +| Milestone | Current capability | Remaining acceptance | Now planned in | | --- | --- | --- | --- | -| M0 — Resolve integration feasibility | The selected generation, flight-data and hosted MCP paths run | Exact launch engine/profile applicability and simulator findings remain incomplete | DISC-01 through DISC-08 | -| M1 — Establish the application foundation | Deployed Deep Agent, MCP, storage/checkpoints and runnable quality gates exist | Durable execution progress/cancellation and client-specific journeys are tracked separately | SETUP-01, BUILD-01/02; INT-416/417/426 | -| M2 — Prepare a real flight collaboratively | Approval, browser generation, route-correlated OFPs, retained multi-leg briefings and 28-case MCP evaluation are observed | Broader live-provider scenarios, configuration evidence and simulator parking correspondence | BUILD-03/04; INT-419/426 | -| M3 — Deliver launch-aircraft thrust guidance | Labeled estimates and observed-reading calibration are implemented | Zero aircraft currently meet verified support criteria; per-profile references and simulator cases remain required | BUILD-05, VERIFY-01; INT-412–414/420–425 | -| M4 — Prove the usable release | Remote MCP and deployment acceptance are observed | Full intended-client journeys, simulator import-field matrix and usable aircraft-specific instructions | VERIFY-02/03; INT-426 | -| M5 — Expand aircraft coverage in batches | Official v26 catalog/capability matrix is frozen; family-batch work is defined | Source-backed methods, resolved applicability and simulator verification for individual aircraft | EXPAND-01; INT-420–427 | +| M0 — Integration feasibility | Generation, flight-data and hosted MCP paths run | Exact engine/profile applicability and simulator findings | Spike, v0.7 | +| M1 — Application foundation | Deep Agent, MCP, storage, CI, durable progress and cancellation | Client-specific journeys (INT-426) | v0.7 | +| M2 — Prepare a real flight collaboratively | Approval, generation, retained multi-leg briefings, evaluation suites | Simulator import and parking correspondence | v0.7, v0.9 | +| M3 — Launch-aircraft thrust guidance | Labeled estimates and calibration | Zero aircraft verified | v0.8 | +| M4 — Usable release | Remote MCP and deployment acceptance | Client journeys, import-field matrix | v0.7 | +| M5 — Aircraft expansion | v26 matrix frozen | Per-aircraft references and simulator verification | v0.8, then Later | -These milestones are distinct from release numbering. Shipping v0.5 does not automatically -complete all original launch or aircraft-support criteria. +Shipping a version does not by itself complete these launch or aircraft-support criteria. ## Aircraft expansion [INT-409](https://linear.app/intelip/issue/INT-409) froze the [official fleet and v26 matrix](research/aircraft-catalog-v26.md): -51 current aircraft and 11 legacy records retained separately. Strict majority is 26 fully -verified current entries; verified support is zero. Engine/configuration, exact profile, -displayed-target and native PERF/FMS unknowns remain explicit. Partial profile support is -reported separately and does not reduce the raw denominator. - -Priorities include the current Challenger 350, confirmed ACJ configurations and aircraft -with relevant v26 changes. An ACJ livery does not establish extra fuel capacity. Cockpit, -visual and fuel-system changes do not by themselves prove a thrust-model change. Native -indications are inspected before duplicating a capability in the dispatcher. - -Numerical scenarios distinguish N1, EPR, torque and other applicable target types; no N1 -formula is assumed universal. Scenario breadth, implemented estimates and simulator-verified -support have separate counts. Reference or simulator-access blockers stay visible. An -intermediate release reports its actual coverage and leaves unfinished expansion tasks open; -it cannot claim majority coverage or silently reduce the denominator. +51 current aircraft and 11 legacy records. Strict majority is 26 fully verified current +entries; verified support is zero. Expansion now follows the aircraft tiers first, because +those are the aircraft the scheduler will assign. Partial support is reported separately and +never reduces the denominator. Numerical scenarios distinguish N1, EPR, torque and other +target types; no N1 formula is assumed universal. Cockpit or visual changes alone do not prove +a thrust-model change. ## Evaluation and release evidence -- Use software-defined whole-scenario and persistent-state checks, not only unit tests or a preferred sequence of tool calls. -- Compare matched, versioned cases in LangSmith with code/fixture/verifier identity, useful workflow metrics and explicit invalid/missing-evidence outcomes. -- Keep scripted models/controlled services, real-model replay, live-provider acceptance, numerical references and simulator observations distinct. -- Preserve exact-input approval, immutable retained plans, Generate claims, bounded browser ownership and explicit unavailable thrust. -- Meet repository CI/product acceptance for the actual candidate. Live provider batches require an allowance; promotion retains the existing production approval gate and rollback identity. - -## Representative scenarios - -- Dated airline preparation with reported gate, simulator-mapping status, matched plan and appropriately qualified thrust instruction. -- Private multi-leg preparation with sourced aircraft configuration, FBO/ramp limitations, independently retained plans and per-leg guidance. -- Changed inputs, unsupported revision fields, rejected approvals, infeasible fuel/weight, unavailable targets, provider failures, uncertain generation and restart recovery. -- The original Dulles–Newark United A321neo case remains profile-specific verification work in DISC-09–11; successful generic neo dispatch does not complete that aircraft's simulator acceptance. +- Use whole-scenario and persistent-state checks in LangSmith, not only unit tests. +- Scheduler evaluations replay recorded or synthetic FlightAware schedule fixtures by default; + live schedule calls are opt-in and cached. +- Keep scripted models, real-model replay, live-provider acceptance, numerical references, + bridge telemetry and simulator observations as distinct evidence. +- Preserve exact-input approval, immutable retained plans, Generate claims, bounded browser + ownership and explicit unavailable thrust. +- Control writes (v0.10+) need recorded read-back evidence and a demonstrated manual handback + before release. + +## Known issues + +- Multi-airport 24-hour departure search returned truncated ~3-hour windows and an HTTP 429 on + KJFK (2026-11-12/13 testing). Planned for v0.5.2. +- SimBrief timed out before the Generate click (`clicked: false`); fixed in v0.4.7. v0.5.0's + generation failure is fixed in v0.5.1. + +## Sources + +- Connect API v2 docs: https://github.com/likeablegeek/ifc2docs +- Infinite Flight 26.5 (A320neo, cockpit retrofit): https://community.infiniteflight.com/t/infinite-flight-26-5-a320neo-and-fleetwide-cockpit-upgrades/1345775 +- Infinite Flight 26.4 (A321neo, interactive cockpit): https://community.infiniteflight.com/t/infinite-flight-26-4/1291848 +- Live API updates (free tier): https://community.infiniteflight.com/t/live-api-updates-march-2026/1166544 +- Autopilot speed target: https://community.infiniteflight.com/t/autopilot-setspeed-can-only-be-changed-by-1-issue-in-connect-api/1276959 +- Reverse thrust: https://community.infiniteflight.com/t/reverse-thrust-on-api/1277180 +- Drag-and-taxi availability: https://community.infiniteflight.com/t/taxi-route-feature-question/904963 From 6ba283938ed449b893a4fb7e51160844cfefcae6 Mon Sep 17 00:00:00 2001 From: hudsonaikins-crown Date: Fri, 13 Nov 2026 18:48:59 -0500 Subject: [PATCH 2/2] docs: align repository with production v0.5.1 Document trip_progress and cancel_trip as shipped in the README and agent guide, replace the v0.4.6 quality and live-acceptance figures with v0.5.1's, and note the release-image browser check. Update stale status lines in the backlog, goal, technical design and aircraft coverage, fix deployment anchors that pointed at superseded "current release" headings, point Linear references at the IFA projects, and add an Unreleased changelog entry for the roadmap and alignment. Co-Authored-By: Claude Opus 5.5 --- CHANGELOG.md | 10 ++++++ README.md | 53 +++++++++++++++++++++--------- docs/aircraft-coverage.md | 2 +- docs/backlog.md | 30 +++++++++++------ docs/goal.md | 2 +- docs/implementation/agent-usage.md | 9 ++--- docs/technical-design.md | 2 +- 7 files changed, 75 insertions(+), 33 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5e027ea..a62d182 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,16 @@ A running server reports its version at `/health`. ## [Unreleased] +### Documentation + +- New roadmap: the agent grows from a dispatcher into a crew scheduler, the dispatcher and a + local flight engineer that reads Infinite Flight's Connect API v2. Release order v0.5.2 + through v0.11.0, with no language model in the real-time control loop. The product goal + records the November 13 amendment. +- Align the README, backlog, agent guide, technical design and aircraft coverage with + production v0.5.1: `trip_progress` and `cancel_trip` are documented as shipped, the v0.5.1 + live acceptance replaces the v0.4.6 figures, and stale status lines and links are corrected. + ## [0.5.1] - 2026-11-13 ### Fixed diff --git a/README.md b/README.md index 487d775..92b22a5 100644 --- a/README.md +++ b/README.md @@ -46,6 +46,10 @@ where to spawn and what thrust to set. - **Know your takeoff thrust.** N1 targets come from SimBrief's own takeoff solution and the lapse shape of FlyByWire's open A32NX thrust model, each with a range. Aircraft it can't model get a clear "unavailable" instead of a guess. +- **Track or stop a trip.** Ask where a trip stands at any time, even after a server restart: + every leg's stage, the pending approval and anything uncertain. Cancel stops the work at the + next safe point and withdraws approvals not yet generated, while keeping finished plans; a + Generate click already made is never undone or repeated. - **Plan whole trips.** Each leg of a multi-leg trip is dispatched and kept separately, and must leave at least 45 minutes after the previous leg lands. - **Use it where you already chat.** Use the terminal chat, or connect an MCP client such as @@ -108,7 +112,7 @@ setting, resuming conversations, and MCP client setup. | Local SimBrief tools (stdio) | Retrieving, reading and estimating from existing SimBrief plans; no generation | [SimBrief tools](docs/implementation/simbrief-usage.md) | The remote MCP server exposes `plan_flight`, `approve_dispatch`, `turn_status`, -`conversation_status`, `list_saved_trips` and `browser_status` +`conversation_status`, `trip_progress`, `cancel_trip`, `list_saved_trips` and `browser_status` ([tool reference](docs/implementation/agent-usage.md#deployed-mode-self-hosted-single-user)). It is built for ChatGPT, Claude and Codex as MCP clients; each client's own end-to-end journey has not yet passed acceptance, so treat client compatibility as unverified until it does. @@ -146,10 +150,15 @@ lands. See the [agent guide](docs/implementation/agent-usage.md) and the - **Workflow evaluations.** 28 whole-conversation scenarios drive the production MCP tools over local HTTP with controlled FlightAware, SimBrief and browser services: planning, - routing, provider failures, approved revisions and recovery after a restart. The original - eight regression cases stay unchanged alongside them. Controlled-service results, matched - replays on the configured model and live-provider runs are reported separately - ([evaluation guide](evals/README.md), [v0.4.6 release record](docs/evidence/v046-release.md)). + routing, provider failures, approved revisions and recovery after a restart. Five more cover + trip control: cancelling at an approval, before or after a Generate click, and a turn + deadline. The original eight regression cases stay unchanged alongside them. + Controlled-service results, matched replays on the configured model and live-provider runs + are reported separately ([evaluation guide](evals/README.md), + [v0.5.1 release record](docs/evidence/v051-release.md)). +- **The release image is tested, not just the code.** CI builds the container image and starts + the browser driver inside it, after v0.5.0 shipped a driver that could not run in the + deployed image ([incident and fix](docs/evidence/v051-release.md)). - **Fixes come from traces.** For example, WF-025 found that numbered revisions were treated as alternatives; v0.4.6 completes them in order, each separately approved ([fix report](docs/evidence/wf025-revision-sequence.md)). @@ -160,12 +169,13 @@ lands. See the [agent guide](docs/implementation/agent-usage.md) and the - **No FlightAware fees for routine runs.** Evaluations replay synthetic or recorded FlightAware responses. Live provider checks are opt-in and capped at $1 per batch by default ([how to run them](evals/README.md)). -- **Live acceptance per release.** Each release candidate's exact image runs a two-leg trip - (KIAD→KEWR, then KEWR→KIAD) on a temporary staging Worker, with a separate approval per leg, - before production approval. For v0.4.6 each leg generated once, the two browser sessions - used 151 seconds in total, and no browser was left running - ([release record](docs/evidence/v046-release.md), [acceptance data](docs/evidence/live-acceptance.json)). - These are single runs, not performance statistics. +- **Live acceptance per release.** Each release runs a real multi-leg trip with a separate + approval per leg. For v0.5.1, on the promoted production server: KIAD→KEWR and KEWR→KIAD + each generated once (39 and 38 browser seconds), a third leg's pending approval was + cancelled and then refused, both finished briefings were kept, and no browser was left + running ([release record](docs/evidence/v051-release.md), + [acceptance data](docs/evidence/live-acceptance.json)). These are single runs, not + performance statistics. ## Releases @@ -191,8 +201,11 @@ Worker version with the same name. A running server reports its version at `/hea large FLEX reductions there may be flagged as suspect. - **FlightAware only sees about two days ahead.** Flights further out have no live schedule or gate. -- **It does not control the simulator.** It never claims your plan was imported, your aircraft - spawned, or your thrust was set. +- **It does not connect to the simulator.** It never claims your plan was imported, your + aircraft spawned, or your thrust was set. A local companion that reads Infinite Flight + through its Connect API is planned, not built. +- **Cancellation has limits.** Cancelling while a browser session is open, and the 600-second + turn deadline, are covered by controlled tests but have not been exercised live. ## Contributing @@ -209,9 +222,17 @@ Report vulnerabilities privately as described in [SECURITY.md](SECURITY.md). ## What's next -v0.5.0 adds durable trip progress and safe cancellation, more dispatch inputs such as cruise -altitude and alternates, sourced private-flight configurations, and measured aircraft expansion. -The [roadmap](docs/roadmap.md) and [backlog](docs/backlog.md) track it. +The agent is growing from a dispatcher into a small virtual crew: + +- **v0.5.2:** complete multi-airport departure searches and handle FlightAware rate limits. +- **v0.6 — Crew scheduler:** ask "I have 4 hours" and get one real flight from your home hubs + and preferred airlines, with a one-line reason to fly it. +- **v0.7 — Read-only bridge:** a local companion reads Infinite Flight's Connect API to log + flights automatically and record engine data, the evidence needed to verify thrust. +- **v0.8 onward:** a full performance card, arrival gates and taxi routes, then opt-in assisted + autothrust. No language model ever sits in the real-time control loop. + +The [roadmap](docs/roadmap.md) has the full plan and its reasoning. ## License diff --git a/docs/aircraft-coverage.md b/docs/aircraft-coverage.md index 21812b0..f443059 100644 --- a/docs/aircraft-coverage.md +++ b/docs/aircraft-coverage.md @@ -1,6 +1,6 @@ # Aircraft coverage -Status: planning; **zero aircraft have verified thrust-translation support in this project**. This describes available evidence, not a change to launch scope. The support definition is owned by [goal.md](goal.md#what-counts-as-aircraft-support). +Status November 13, 2026 (v0.5.1): labeled simulation-grade estimates ship for the A320neo, A321neo and 737 MAX 8; **zero aircraft have verified thrust-translation support in this project**. The [roadmap](roadmap.md) plans simulator evidence from a read-only Connect API bridge (v0.7) and the first verified aircraft with the performance card (v0.8). This describes available evidence, not a change to launch scope. The support definition is owned by [goal.md](goal.md#what-counts-as-aircraft-support). ## Current fleet baseline diff --git a/docs/backlog.md b/docs/backlog.md index aff2083..ceb8147 100644 --- a/docs/backlog.md +++ b/docs/backlog.md @@ -1,7 +1,8 @@ # Backlog -Status updated November 12, 2026 UTC. Current release work is tracked in the -[Infinite Flight Agent Linear project](https://linear.app/intelip/project/infinite-flight-agent-a2f7101e32e9). +Status updated November 13, 2026 UTC. Current release work is tracked in Linear as the +`IFA ·` projects under the "Infinite Flight Agent" project label +([roadmap document](https://linear.app/intelip/document/infinite-flight-agent-roadmap-0dcea64227b8)). This file indexes that work and preserves earlier research. [goal.md](goal.md) owns the accepted product requirements and aircraft-support definition; the [roadmap](roadmap.md) maps release outcomes. Linear owns current task acceptance, @@ -10,21 +11,23 @@ the current implementation and evidence summarized here supersede those dated bl ## Current delivery baseline -Production is [v0.4.6](implementation/deployment.md#current-release-v046). The exact release -image passed a deployed two-leg staging trip before promotion. The production rollout, -transport limitations, provider usage and cleanup are recorded in the deployment runbook. +Production is [v0.5.1](implementation/deployment.md#current-release-v051). It passed live +acceptance on the promoted production Worker: two generated legs, a cancelled third-leg +approval and a separate cancel-before-approval trip. v0.5.0 was rolled back after a browser +driver failure; the [release report](evidence/v051-release.md) records the incident, fix, +identities and usage. This proves the exercised dispatch integration, not simulator import or aircraft accuracy. | Surface | Current capability | Remaining work | | --- | --- | --- | -| Foundation — SETUP-01, BUILD-01/02 | Locked Python application, Deep Agent, MCP, transactional storage/checkpoints, CI and product-validation manifest are installed; deployed generation is observed | Whole-operation progress, cancellation/deadlines and intended-client acceptance remain separate tasks | +| Foundation — SETUP-01, BUILD-01/02 | Locked Python application, Deep Agent, MCP, transactional storage/checkpoints, CI (including a release-image browser-driver check) and product-validation manifest are installed; deployed generation is observed | Intended-client acceptance (INT-426) | | SimBrief — DISC-03/06, BUILD-04 | Browser generation (SimBrief-chosen route when none is agreed), exact-input approval/readback, retained route/navlog correlation and two retained legs are observed | More dispatch inputs and broader live-provider coverage; controlled recovery scenarios do not prove every provider option | | Flight research — BUILD-03 | Dated FlightAware research, connection checks, reported gates and explicitly unverified spawn suggestions are implemented | Verified simulator stand mapping, private configuration evidence and import behavior | | Thrust — BUILD-05, VERIFY-01 | Labeled A20N/A21N/B38M estimates and condition-specific observed N1 calibration are implemented | Zero aircraft have verified support under the accepted definition; engine/build applicability and simulator evidence remain open | -| Trip management and evaluation | Saved legs/briefings, approved revisions, recoverable validation/provider guidance and a matched 28-case whole-conversation MCP/recovery suite are shipped | Durable progress/cancellation and more dispatch/configuration inputs remain planned | +| Trip management and evaluation | Saved legs/briefings, approved revisions, recoverable validation/provider guidance, durable `trip_progress`, `cancel_trip` with turn deadlines, the 28-case whole-conversation suite and the WF-029–033 trip-control suite are shipped | Live evidence for cancelling during an open browser session and for the turn deadline; cruise level and alternate inputs (INT-418) | | Expansion — EXPAND-01 | Official v26 matrix is frozen: 51 current aircraft, 11 legacy records and explicit engine/native-system/profile gaps | Establish references, resolve applicability and verify simulator profiles before counting support | -## Active release work +## Release work | Version | Linear work | Outcome | | --- | --- | --- | @@ -32,7 +35,14 @@ This proves the exercised dispatch integration, not simulator import or aircraft | v0.4.4 — shipped | INT-407–411; [release evidence](evidence/v044-release.md) | Predictable existing conversations/routing, current catalog assessment and broader end-to-end scenarios | | v0.4.5 — shipped | [INT-415](https://linear.app/intelip/issue/INT-415); INT-412–414 verification remains open | Existing-profile software corrections shipped; independent reference/simulator applicability remains unverified | | v0.4.6 — shipped | [PR #24](https://github.com/IntelIP/InfiniteFlightAgent/pull/24); [release evidence](evidence/v046-release.md) | Ordered revisions complete generation/finalization with retained earlier results and exact approvals | -| v0.5.0 | INT-416–428; [release task](https://linear.app/intelip/issue/INT-428) | Durable trip control, expanded dispatch inputs, private-flight configurations and measured aircraft expansion | +| v0.4.7 — shipped | [Changelog](../CHANGELOG.md#047---2026-11-12) | Generate is clicked directly after the form is filled; Route Finder no longer hangs generation | +| v0.5.0/v0.5.1 — shipped | INT-416/417; [release report](evidence/v051-release.md) | Durable trip progress, cancellation and turn deadlines; v0.5.1 restored generation after the v0.5.0 rollback | +| v0.5.2 onward — planned | `IFA ·` projects in Linear | Departure search fix, crew scheduler, Connect API bridge, performance card, arrival ops and assisted power; see the [roadmap](roadmap.md) | + +The unshipped remainder of the original v0.5.0 scope (INT-418–427) was re-sequenced on +November 13, 2026: cruise level, alternates and thrust verification moved to the v0.8.0 +performance card, client and import verification to the v0.7.0 bridge, and private-flight and +broad fleet work to the unscheduled Fleet Expansion project. INT-428 was cancelled as superseded. The first implementation wave shipped through PR #21 and v0.4.3: INT-404 covers revision validation, INT-405 provider failure handling, INT-403 workflow evaluations, INT-402 planning @@ -97,7 +107,7 @@ admission, server lifetime and idle cleanup, no replacement after timeout, no sc usage, and honest release/billing telemetry. Check queuing and cleanup with controlled provider responses. Live generation acceptance passed on isolated Cloudflare staging for candidate `9363cd1`; [the acceptance report](evidence/pr20-live-acceptance.md) records results and limits. -Merged in PR #20 and deployed in [v0.4.2](implementation/deployment.md#current-release-v042), +Merged in PR #20 and deployed in [v0.4.2](implementation/deployment.md#previous-release-v042), with fresh acceptance of the exact release image before promotion. ## Research and decisions diff --git a/docs/goal.md b/docs/goal.md index 20eb7ae..35e2536 100644 --- a/docs/goal.md +++ b/docs/goal.md @@ -1,6 +1,6 @@ # Goal -Status: accepted product direction from Hudson's planning conversation, October 30, 2026. Implementation and verification have not begun. +Status: accepted product direction from Hudson's planning conversation, October 30, 2026, amended November 13, 2026. Implementation began November 1; production is v0.5.1, and the [roadmap](roadmap.md) records what has shipped against these criteria. ## User and problem diff --git a/docs/implementation/agent-usage.md b/docs/implementation/agent-usage.md index 05aa8be..84c753d 100644 --- a/docs/implementation/agent-usage.md +++ b/docs/implementation/agent-usage.md @@ -1,6 +1,6 @@ # Dispatcher agent: setup, use, and evaluation -Status November 12, 2026 (v0.4.6): the Deep Agent runs on GPT-6 Luna through Sign in with ChatGPT, locally (`ifd-chat`) and as a self-hosted remote MCP server on Cloudflare behind Cloudflare Access ([deployed mode](#deployed-mode-self-hosted-single-user), [deployment](deployment.md)). SimBrief plans are generated by filling the dispatch form in a logged-in Browserbase cloud browser after exact dispatch approval. Sections below are dated; the evaluation tables record the October 2026 runs, and current release evidence is in [`docs/evidence/`](../evidence/). Per-client ChatGPT, Claude and Codex journeys are not yet acceptance-verified. +Status November 13, 2026 (v0.5.1): the Deep Agent runs on GPT-6 Luna through Sign in with ChatGPT, locally (`ifd-chat`) and as a self-hosted remote MCP server on Cloudflare behind Cloudflare Access ([deployed mode](#deployed-mode-self-hosted-single-user), [deployment](deployment.md)). SimBrief plans are generated by filling the dispatch form in a logged-in Browserbase cloud browser after exact dispatch approval. Sections below are dated; the evaluation tables record the October 2026 runs, and current release evidence is in [`docs/evidence/`](../evidence/). Per-client ChatGPT, Claude and Codex journeys are not yet acceptance-verified. ## Shape @@ -116,9 +116,10 @@ The review queue scores whole conversations. Automatic workflow feedback is sepa owner acceptance. Provider usage reports FlightAware list-price estimates and Browserbase elapsed time; unknown invoice costs stay unknown. -## v0.5.0 trip control (unreleased) +## Trip control (v0.5.0, fixed in v0.5.1) -Remote MCP tools added for INT-416/417. Neither invokes the model or a provider. +Remote MCP tools added for INT-416/417 and accepted live in production on v0.5.1 +([release record](../evidence/v051-release.md)). Neither invokes the model or a provider. | Tool | Use | | --- | --- | @@ -136,7 +137,7 @@ unchanged: one active workflow, two waiters, 30-second queue wait, 180-second se ## Bounded browser management -Deployed in [v0.4.2](deployment.md#current-release-v042) after exact-image staging acceptance +Deployed in [v0.4.2](deployment.md#previous-release-v042) after exact-image staging acceptance on November 10 UTC (November 9 in New York). The [original PR acceptance](../evidence/pr20-live-acceptance.md) is retained separately from the release validation. Browserbase's project now reports concurrency 25. The dispatcher deliberately admits just diff --git a/docs/technical-design.md b/docs/technical-design.md index 4bcf550..0466fcd 100644 --- a/docs/technical-design.md +++ b/docs/technical-design.md @@ -1,6 +1,6 @@ # Technical design -Status: proposed design, October 30, 2026. [Goal](goal.md) owns accepted product intent. [Backlog](backlog.md) owns unresolved decisions and work. No architecture described here has been implemented or live-validated. +Status: design proposed October 30, 2026; much of it is now implemented and in production (v0.5.1). Sections headed "Implemented" describe shipped behavior; the rest record the original proposal and its reasoning. The [agent guide](implementation/agent-usage.md) and [deployment record](implementation/deployment.md) describe the running system. [Goal](goal.md) owns accepted product intent; the [roadmap](roadmap.md) and [backlog](backlog.md) own planned work. Dependency findings: [SimBrief extension](research/simbrief-extension.md), [flight/gate sources](research/flight-data-sources.md), and [professional thrust sources](research/professional-thrust-sources.md). These reports own the source evidence and open access questions; the design below incorporates their implications.