Apache Longbow Research archive

Apache analysis and reconstruction

Reference and scope

The October 2000 European disc is the primary reference. Its DOS engine was built on 12 January 1998; the Windows software and 3dfx engines on 14 January. Earlier discs, the demo and patches remain comparison material. The June 1998 Voodoo2 update is a separate renderer compatibility variant.

The first reconstruction targets the original software game, with original assets selected from a local installation, C++26, Linux-first verification, square pixels and the window/scaling approach used in our other Lost Engines projects. Audio, controls, menus and campaign integration are part of the game, not optional follow-up work. Original unsafe memory access is not something to emulate.

Current integration state

The C++ game runs Quickstart, training, single missions and campaigns with live flight, combat, instruments, audio and persistent pilot/campaign progress. The planner, waypoint editor, payload selector, 3D preview, preferences, joystick controls, manual and movies are connected. First-launch setup and multiplayer are verified, including two real windows exchanging chat and shared flight. Optimized packaging and all six CI configurations pass; release packages are published and the current local build is ready for playtesting. The entries below retain the analysis history. See current status for the present completion state.

Work sequence

  1. Media characterisation: complete. Seven distinct disc contents, four patches and one demo preserved with hashes and comparisons. No CD audio.
  2. Reference installation and executable map: complete for the selected engine. The DOS reference runs in an isolated drive. Windows ELF/DWARF symbols are decoded and checked; earlier Windows revisions have partial address maps and original-routine comparisons.
  3. Resources and local workbench: complete. Models, terrain/scenery, missions, images, palettes, fonts, cockpit/menu art, movies and audio have decoders and local viewers. MANEDIT's original figure plays all 104 supported poses. Six newer authoring files expose raw channels because the supplied editor cannot load them.
  4. Engine and gameplay: complete for the selected software reference. Rendering, flight, avionics, weapons, AI, damage, campaign progression, saves, controls, timing, audio and multiplayer are traced and implemented.
  5. Analysis review: complete. Resource and dispatch coverage, original-code evidence and defined-behaviour limits are recorded in the current status and implementation documents.
  6. C++ reconstruction: ready for beta testing. The connected game is committed and pushed to ../apache-cpp; game assets remain outside Git.
  7. Integration and acceptance: automated checks and CI complete. Normal, sanitizer and optimized builds pass original-code comparisons and private-window game journeys. Hardware controls, sound devices and subjective playability remain human beta-test items.

Working boundaries

Research and generated assets stay local. There is no deployment or publication task. Extracted media are immutable; working installs use copies. Input automation runs on a private X server and never controls the desktop. Only apache-cpp has commit/push authorisation at this stage. Other sibling projects are references, not editing targets.

Current findings

Gameplay reference coverage

The reconstruction handoff records the verified foundation and the targeted research that continues alongside implementation.

C++ implementation progress

The reconstruction now loads the original images, models, terrain, features and palettes; draws the original menu widgets; and assembles terrain, scenery, clouds, stars, sun/moon, moving objects, shadows, smoke, explosions, craters and detached debris. These have independent original-versus-C++ state and framebuffer checks, including sanitizer runs. The model shadow comparisons cover all 848 true-coordinate models. Ship-deck shadow receiving and hidden-player rendering are included. Dynamic night/weather/glare palettes, thermal rendering and complete RGB frames also have original-execution comparisons. All cockpit panels, redraw modes and night lighting now match at both original resolutions, as do both instrument fonts and all five moving mechanical instruments. Warning lamps, radio text, electronic display pages and MFD control/failure state also match original execution. The additional FLIR, weapons, radar, tactical and flight-plan pages now have exact framebuffer comparisons, including automatic target cameras, target highlighting, route scaling and arrival estimates. Moving-map rendering now matches 744 complete maps and 640 MFD frames, including contours, super-features and initialized ground-object symbols. The central gunner display uses the same verified FLIR page. Helmet flight instruments, all weapon cues and complete sight layouts now match original frames, along with world-to-helmet projection and flight-to-instrument state conversion.

The combined avionics pass now matches 147 complete mission-derived frames, with 27 additional cases using bounded handling for original missing normals. Runtime model metadata matches all 1,314 objects. Fuel, engine, rotor, temperature, failure, control-normalization, hover and landing routines match 9,602 cases and their warning/audio call order.

Gameplay is not yet connected to the frontend. The continuous realistic-flight model now passes 32 original-code traces, including carrier takeoff, across all four warzones. Arcade flight also passes 28 continuous traces and 6,000 exact component cases. All 110 missions now load and initialize their actors, formations and carrier assignments with exact original-code comparisons. Weapon definitions, acceleration/drag/expiry, damage, selection and firing timing also pass the complete normal and sanitizer checks. Complete actor movement and collision-volume routines now pass original-code comparisons in normal and sanitizer builds. Seekers, missile guidance, gravity, proximity detonation and terrain-impact subdivision now also pass original-code comparisons in normal and sanitizer builds. Projectile launch, pool updates, collision removal and smoke now pass continuous comparisons across all four warzones. Live target descriptions and full visibility queries also pass normal and sanitizer comparisons. Live guidance, countermeasure response, direct/area damage and combat effect construction now also match original execution. Actor firing now also joins selection, aiming, ammunition, deadlines and target release with matching original-execution checks. Task acquisition, target retention, radar-directed patrols, ground battles, terrain-masked radar coverage, contact grids and static defence dispatch now also have original-execution comparisons. All mission sector ownership, front distances and dynamic scenery setup match. All 110 mission radar initializations and initial contact grids also match, including original startup coordinate quirks and separate animation/combat flags. Live spatial updates and target searches now match across the shipped missions. Eight continuous movement/combat traces also match, including retaliation, patrols, stationary defences, ground battles and casualties; firing calls remain observed boundaries in those traces. A second continuous suite now connects live firing, guidance, automatic countermeasures, collisions and smoke, with 3,882 matching launches and 7,843,193 matching fields in normal and sanitizer builds. A third continuous suite applies damage, casualties, destroyed scenery and combat effects, matching 7,629,707 fields, 3,438 launches and 74 combat casualties in normal and sanitizer builds. Remaining implementation includes connecting these verified components into complete combat, connecting collisions to player flight, live sensor behavior, complete frontend/campaign interaction and audio, followed by full journey acceptance. The detailed comparison counts are maintained in ../apache-cpp/docs/implementation.md; local reports are under work/checks/cpp/.

Player runtime integration

Live player flight, carrier starts, takeoff, collision dispatch, deck attachment and carrier reservation changes now match original execution. Normal and sanitizer comparisons cover eight continuous traces and 2,400 deliberate contacts, matching 8,188,635 fields. Keyboard ramps, external-view routing, device setup and calibrated joystick response also match 36,784 fields. The shared mission runtime now owns the connections between actors, flight, weapons and combat damage; its combined acceptance is in progress. The windowed frontend still opens menus. Player weapons, live sensors, frontend/campaign integration, audio and persistence remain active work.

Shared player mission runtime verification

The combined player battle now passes normal and sanitizer comparisons: 9,399,339 fields over 9,600 updates across all four warzones and both flight models. This includes player flight, collisions, AI, live firing and guidance, damage, destruction and player subsystem failures. Another eight traces verify slow-frame flight subdivision (1,561,448 fields), and 600 contact fixtures include 50 carrier landings followed by another flight update (42,350 fields). Keyboard and joystick sampling match 36,784 fields. Reports are in work/checks/cpp/mission-player-battle, mission-timing, carrier-followup and controls, with matching -sanitize directories.

The window still shows the menus. Next are player firing and sensors, connecting the shared runtime and renderer to the frontend, and campaign, audio and persistence integration. These checks do not substitute for an end-to-end playable mission.

Player weapons connected

Weapon selection, safing, gun/rocket aiming, physical rack launches, laser designation, ammunition use, gun flash/sound, incoming-missile warnings, firing solutions and impact estimates now have original-versus-C++ comparisons. Eight live mission traces match 3,047,894 fields, including 1,326 player-launched rounds, in both normal and sanitizer builds. Component comparisons cover another 1,613,243 fields. Local reports are in work/checks/cpp/player-weapons, player-mounts, player-sight, player-warnings and player-launches, with matching sanitizer reports.

Next are live radar and optical targeting, followed by the playable frontend connection, campaigns, audio and persistence. The window currently opens the menus.

Live targeting and camera integration

All 110 missions now pass live sensor comparisons: 5,500 scans and 22,000 optical selections match 11,852,651 fields. Targeting controls and automatic/manual waypoint changes also match. Eight connected sensor/combat traces match another 3,282,731 fields, 2,079 launches and 69 kills. Normal and sanitizer results agree.

All ten camera geometry paths and all twenty view choices match original execution, including optical devices, fault fallback and remembered magnification. Continuous view-state verification and binding the renderer to the live mission are now the active integration work. The remaining frontend, campaign, audio, persistence and complete game journeys still follow; the menu window is not yet a playable release.

Live scene and instrument verification

Continuous camera, lighting and sight calculations now pass original-code comparisons. The renderer reads the shared mission objects directly. Four battle traces produce 60 scene frames; five frames avoid original invalid model reads and match all indexed pixels and RGB output. The remaining 55 use bounded handling for missing normals. A separate cockpit integration check matches 467,620 instrument fields and 1,170,510 simulation fields over 1,200 updates. Normal and sanitizer runs agree. The next connection is the playable window, followed by campaign, audio, persistence and full journeys.

Playable session, campaign entry and debrief

The live session joins the verified simulation and renderer to the window. Original timer/key input and both video modes are supported, as are explicit pause, camera changes while paused, focus-loss key release and return to the frontend. Training, single missions and all three campaigns have menu entry, mission preparation, takeoff, debrief, retry and in-memory result logging. Campaign entry retains the separate opening overview and stage situation. Text wrapping/selection/scrolling matches 32 original frames, with another 20 exact vertical-scrollbar frames and the ten original static menu frames still matching.

The communications implementation passes 6,000 original-code operations (600,000 fields); pilot/campaign serialization and progression pass 2,476 cases; debrief decisions and record insertion pass 5,565 cases. Twenty complete mission-derived debrief fixtures match their explanation text and 1,880 serialized pilot bytes. Normal and sanitizer results agree. Each fixture states its supplied landing, destruction or crash condition; these are analytical comparisons, not claims to have flown entire campaigns.

Continuous live-session comparisons exposed two ordering requirements: aiming the chain gun uses the preceding barrel attachment transform, and selecting an explosion sample consumes the same Watcom random sequence used for wind gusts. The latter still matters with audio disabled. The gun correction retains all 3,047,894 matching player-launch trace fields, including 1,326 player-fired rounds. Wider integrated flight/frame checks are continuing under work/checks/cpp/session-*.

Next are persistent pilot profiles, full briefing/map controls, preferences, Quickstart and audio playback, followed by complete game journeys and CI. No publication or asset redistribution is part of this work.

Persistent profiles and campaign presentation

Completed original-format user/pilot storage, logbook editing, campaign transfer after pilot loss, campaign ending screens, promotions and medals. Original menu comparison covers eight populated pilot screens (2,457,600 exact pixels). Restart, capacity, deletion, protected pilots, rejected saves, campaign endings and award journeys pass in normal and sanitizer builds. Saves remain outside source game data.

The complete four-warzone session matrix now passes: 1,896 frames, 142,200 state fields, 1,456,128 palette bytes, 106,255,220 defined cockpit pixels and 62,592,000 full-frame pixels across 326 frames without original invalid reads.

Next: preferences and original control selectors, full briefing/map tools, Quickstart and audio playback. No CI yet.

Preferences integration

Original selectors, toggles, sliders, terrain preview and joystick calibration indicators are connected. Thirteen preference/popup frames match 3,993,600 original pixels. Three hundred axis/hat cases match 12,000 fields. Saved choices survive restart and reach live flight. Normal and sanitizer checks pass, as do the existing menu text/scrollbar and complete frontend journey checks. Sixteen previews cover four zones and four detail settings; Yemen at minimum detail is exact. The other views encounter missing model normals already covered by bounded renderer handling. The Korea discrepancy was traced to shaded lines in copsed (model 142) requesting normal 0 from an empty normal table. No emulation of that invalid read is added.

Next: Quickstart and its score table, remaining briefing/map controls, and audio playback.

Quickstart and score table

All three Quickstart missions now run through the menu, with unlimited ammunition/fuel, Invincible mode, first-launch Preferences flow and saved high scores. The original score calculation matches 280 cases; six score-table frames match 1,843,200 pixels. Six live traces match 288 frames, 21,600 state fields, 221,184 palette bytes and 8,110,080 cockpit pixels. Normal and sanitizer menu journeys cover ties, insertion into a full table, editing, restart and training assistance. Complete ordinary frontend journeys remain passing.

Next: audio playback and the remaining briefing/map controls. No CI yet.

Audio playback

Connected the original PCM effects, menu theme, spoken briefings and flight/combat sound events. Reference comparisons cover 189 effect payloads, 128 gain values, 430 speech filenames, 2,050 channel/priority results and a 270-second looping stream (11,880,000 matching PCM bytes). Speech interruption, completion and mission return retain original resume positions. Independent resampling and callback-size checks pass in normal and sanitizer builds. Host audio hardware has not been exercised by automation.

The longer Quickstart comparison exposed a static-scenery construction error: scenery must not instantiate the attached turret used by the equivalent mobile model. The corrected construction matches all 1,000 scenery frames. The extended session now passes 828 frames, including the radio-chatter interval, with 62,100 matching state fields, 635,904 palette bytes, 26,144,180 defined cockpit pixels and 14,361,600 pixels across 187 complete safe frames. Normal and sanitizer builds agree.

Briefing map navigation matches 5,082 original operations and 23,652 fields. The route overlay matches 400 frames and 122,880,000 pixels, including rotation, symbols, labels and route visibility. UI integration is continuing. Remaining integration: briefing/map interaction, remaining frontend screens and full game journeys. No CI yet.

Briefing map integration

Connected drag zoom/undo/fit, rotation, right-click centering, route drawing, territory and threat layers, weather and payload selection. Tool windows can be raised, moved and closed. Original-code comparisons cover 5,082 navigation operations, 400 route frames, 32 overlay frames and 30 real mouse gestures. Twelve complete map/weather/payload frames across all four warzones match both indexed pixels and RGB output. Normal and sanitizer builds pass. The colour comparison identified the original grassy-terrain palette override also affecting payload art in Fort Hood and Korea; the reconstruction applies it at the same final palette stage.

Next are the 3D preview camera, waypoint editing and scripted briefing presentation, then remaining frontend screens and whole-game journeys. No CI yet.

Live map preview and waypoint planning

The C++ map preview now has the original satellite, orbit and fly-to-point modes and a resizable window. Camera comparisons match 9,956 operations and 199,120 fields. Twenty window gestures match 320 bounds fields. Fourteen preview frames match 840,966 pixels; eighteen cases containing the previously identified invalid source normals stay outside exact frame comparisons. All fifty payload combinations match 3,465,500 RGB pixels and their final launched inventory.

The waypoint editor matches 3,050 original operations and 2,618,694 fields, including hit selection, dragging, fixed endpoints, append/insert caps, deletion, types, grid coordinates and leg timing. Thirty tool/information frames match 2,498,460 indexed and RGB pixels. Thirty route snapshots and the launched navigation route also agree. Numeric controls include the original expanded arrows, held repeat and digit menus. These comparisons pass in normal and sanitizer builds. Existing map and campaign journeys remain green. Reports are under work/checks/cpp/map-{camera,preview,window,editor}, work/checks/cpp/waypoint-ui* and work/checks/cpp/payload*.

An audit of all 149 mission text and bundle files found no :Briefing sections or brace commands. The retained camera-tour parser is unused by this CD's English, French and German data. Shipped briefings use descriptions and recorded narration. See work/checks/briefing-script-audit/report.json; reproduce with tools/audit_briefing_scripts.py.

Remaining frontend integration: joystick buttons/hat, in-flight help/preferences/quit confirmation, movie playback, first-launch asset acquisition and full game journeys. CI remains disabled while implementation continues.

Joystick buttons and hats are integrated and verified: 24,576 original decoder cases, 6,000 device-source cases and ten live flight traces. Help covers all 108 authored pages and 227 navigation checks; 18 full 800x600 frames match 8,640,000 pixels. Quit confirmation matches both original resolutions and freezes simulation until Y/N. Normal and sanitizer checks pass, with private-Xvfb checks for help entry/exit and both quit responses. These changes are pushed as 8f5a802 and 42f92c8.

The root filesystem filled during capture output. Generated C++ comparison PPM/pixel files were losslessly compressed, recovering 595 MB; the conversion inventory is work/checks/cpp/compressed-captures.json. Source media and analysis references were retained. Further large captures use work/checks/ or /tmp; only selected evidence is kept here. No in-flight Preferences key exists among the registered gameplay keys; the original exposes those choices before takeoff. Remaining work continues with movie integration and full game journeys.

Movies and first-launch setup

Original ANIM playback now covers all 26 movies and 5,217 frames, with 306,913,280 matching pixels and 4,006,656 palette bytes. The delta path matches all 256 byte masks. Campaign movie selection, audio suspension and intro/briefing transitions pass normal and sanitizer checks, with a private-window journey through campaign takeoff. Committed as b322940.

The exact selected CD is available as a standalone BIN in Archive.org item redump-id-91728. A fresh temporary download matches the intake SHA-256. The C++ installer extracts the 1,504 selected game files, validates source and destination contents, and leaves different existing files unchanged. Bash and Windows helpers verify the BIN with SHA-256 and remove it after extraction. Data-directory choices are remembered separately from original assets. Validation continues in work/checks/cpp/installation* and work/checks/cpp/setup-window*.

Installer verification now passes in normal and sanitizer builds: all 1,504 extracted files match independent SHA-256 records (305,373,380 bytes). Both BIN and ISO inputs, repeated installs, missing-file repair, existing-file preservation, corrupt-source rejection, path containment and fetch-helper cleanup pass. Private-window setup checks pass for explicit, remembered and default data locations and source-data protection.

Multiplayer protocol

Implemented bounded APNET packet encoding/decoding. Original-code comparisons pass 2,240 packets across 35 message types, 176,892 defined bytes, 64 compressed-state decodes (14,336 fields), and 1,620 malformed-input cases in normal and sanitizer builds. See network.md and work/checks/cpp/network-packets*. Transport is intercepted during checks; no network sockets are opened. Shared pilot/gunner state and live session integration are next.

Shared cockpit contents and flight exchange now pass original-code checks in normal and sanitizer builds: 1,000 crew sends/receives, 1,000 key-queue sequences, 147 malformed crew records and 900 replication/extrapolation cases. Network transport, lobby controls and remote scene integration remain in progress.

Remote firing and aircraft placement now pass continuous original-code comparisons in both normal and sanitizer builds: 4,519,568 firing-trace fields and 4,538,391 moving-aircraft fields. The original remote Cannon Pod takes the guided-constructor flight flag despite its unguided definition; this behavior is retained. Network target resolution matches 5,567 queries, including scenery coordinate/sector boundaries. All six multiplayer mode rules match 1,536 cases and 18,432 fields. See network.md and work/checks/cpp/{remote-weapons,remote-battle,remote-scene,network-targets,network-rules}*. The next connection is player allocation, followed by lobby/transport and shared-cockpit sessions. CI remains disabled.

Aircraft allocation and restart now pass normal and sanitizer comparisons across all four warzones and the dedicated multiplayer/flag missions: 675 attempts, 108 revivals and 785 scene/contact-registry states, matching 24,857 reported fields. All four CTest targets and both application builds pass. Continue with casualty synchronization, shared-cockpit integration, transport and lobby controls.

Network lifecycle and casualty integration

The event state machine passes 1,800 original-code cases (108,955 fields), and bounded casualty queues pass 400 batches (9,963 records, including 196 overflow rejections). Normal and sanitizer runs agree. Scene integration passes 360 sequences in six missions, including 108 restarts, with 439,192 compared fields. Both full applications and all four CTest targets pass. Scene sanitizer validation also passes with the same trace digest. Continue with shared pilot/gunner runtime integration, transport and lobby controls; CI remains off.

Shared cockpit session integration

Connected seat-specific controls, radio, countermeasures, mission ending, frame exchange and live rendering. Both flight models pass paired 100-frame traces in normal and sanitizer builds: 400 seat frames, 30,000 fields, 41,600 crew bytes and 326 complete matching frames. Manual chaff/flare sessions, signed flight-plan speeds and mission-ending combinations also pass. The four-warzone/resolution matrix is running. Continue with complete APNET event exchange, transport and lobby controls, then final journeys and release verification. CI remains off.

Complete shared-flight event exchange

Both original APNET seats now match the C++ sessions in arcade and realistic flight: 400 seat frames, 30,000 fields, 416 messages and 310 complete rendered frames. Normal and sanitizer builds agree. The receive barrier includes firing, chaff, flares and crash/collision events. Carrier attachment maintenance and post-receive navigation instruments preserve the original timing. Casualty-source generation, real transport and lobby controls remain next; the wider shared-session matrix and single-player carrier regression are running. CI remains off.

LAN transport and lobby receiver

APNET now has a nonblocking UDP transport, with original packet contents inside a small versioned node-identity envelope. The connection table sorts peers while in the lobby, fixes connection slots during flight, and expires absent lobby peers after 20 seconds. Sockets are created only when requested. Loopback tests cover discovery, names, preferences, readiness, menu messages, flight delivery, return to lobby and disconnect, along with malformed datagrams and a full 16-player roster. Both normal and sanitizer CTest runs pass all five targets.

The menu branches of the original receiver match 1,200 cases and 82,414 state/event fields in both builds, including all twelve lobby message types. Trace SHA-256: 142cbd368bcbe9c6cc7bd80cd3951ca692ddfd668823ed038f0a5e44a541cc54. The full shared-seat matrix also passes the sanitizer run with the same 3,200 frames and trace digest as the normal build. Connecting the actual network screens and all multiplayer mission modes remains in progress. CI remains disabled.

Connected multiplayer screens and sessions

The original network and two-player screens now drive discovery, names, roles, preferences, readiness, shared mission selection and takeoff. Live sessions use the original peer or client/server exchange according to the selected mode. The obsolete serial/modem controls are replaced by LAN discovery and a direct host address. UDP carries the original APNET payloads in the reconstruction's transport envelope; it does not connect to the DOS game's IPX or modem drivers.

Five loopback journeys use actual menu clicks, two sockets and 80 seat frames per mode: two-player combat, single missions, pilot/gunner, multiplayer combat and capture the flag. They also cover departure, returning to the lobby and a two-player server handover. Broadcast is disabled in these tests. Normal and sanitizer builds pass all five journeys and all five CTest targets. The dedicated server/client departure comparison matches 800 original cases and 49,668 state/event fields.

The combat MFD now draws the original kill scoreboard. Mission initialization applies connection difficulty before constructing actors, and combat-only modes skip the ordinary AI war simulation. The six-mode original-session matrix is still running. Remaining multiplayer integration includes respawn, landing rewards, flag completion, following a surviving partner and chat input. CI remains disabled.

Multiplayer acceptance and pose editor

The complete mode matrix passes in normal and sanitizer builds: 48 cases, 3,840 frames, 288,000 state/camera fields, 2,949,120 palette bytes, 172,815,553 defined cockpit pixels and 200,524,800 complete-frame pixels. A Mission 141 actor check matches all 154 actors in both flight models. Combat recovery, landing rewards, flag completion, chat and server handover are connected. Real-window journeys pass combat, shared pilot/gunner and network combat, with localhost-only transport. Reports are under work/checks/cpp/network-session-final*, session-actors* and network-window-*.

MANEDIT 1.05's model constructor, limb hierarchy, rotation order and interpolation are recovered. The pose viewer animates the actual editor figure, uses the authored duration and names the channels. See poses/loader-trace.md and poses/native-check.json. The six newer II/IC files remain raw-channel views because this editor does not support them.

Validation housekeeping removed 44 obsolete test executables from /tmp, recovering 4,121,121,168 bytes. Current binaries and build trees remain, as do compact reports, analysis views and tooling. The cleanup inventory is work/checks/cpp/validation-cleanup-2026-11-05.json. Working outputs now belong in ignored work/ or /tmp; the analysis tree retains only selected evidence and viewer assets.

Final release handoff

All six CI builds pass after replacing the transport test's fixed poll count with a bounded wait for actual delivery. Linux, Windows and macOS release packages are published. Each downloaded archive contains the same explicit nine-file runtime set, with platform-specific executable and setup helper names. Their checksums pass, and the released Linux executable matches the original main menu exactly. The local ../apache-cpp/build/apache is also rebuilt and tested.

The earlier Windows comparison now maps 317, 325 and 330 routines in the three 1996 engines. Direct execution confirms identical sampled matrix, approximate-range, actor/waypoint positioning and common crater-update results. The notes distinguish these from the 24-to-36-byte crater layout change and the compiler's shared function tails.

Validation cleanup reclaimed 4,496,124,048 bytes from obsolete executable copies and the completed installer-test download. The manifest is work/checks/cpp/validation-cleanup-2026-11-05.json. Extracted media, analysis viewers, tools, reports and useful captures remain intact.