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 9693243..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 @@ -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/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/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 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.