Intel suite v3: ISR tasking, espionage, counterintel, live feeds + combat on contacts - #2
Open
CarlBarl wants to merge 12 commits into
Open
Intel suite v3: ISR tasking, espionage, counterintel, live feeds + combat on contacts#2CarlBarl wants to merge 12 commits into
CarlBarl wants to merge 12 commits into
Conversation
Units now fight on their intel picture instead of ground truth. Radar realism (visibility): unit detection respects the radar horizon (4/3-earth model, per-category target heights) and the antenna's sector arc — a ship mast sees ~35-45 km against surface targets no matter its nominal range, which makes AWACS/E-2D the long-range eyes they are. Fire control: getFireControlQuality gates every shot — 'own' (shooter's radar holds the target), 'datalink' (live nation track + shooter on a datalink hub's network), or no shot. Fixed installations (airbases, naval bases) are public-knowledge coordinates, always strikable, and both sides start with them identified on the map. Datalink shots carry a 12% miss chance against moving targets; misses surface in the feed. Auto-engagement doctrine (friendly-ai, both nations): weapons_free engages any valid track in weapon range, weapons_tight only inside a 75 km self-defense bubble, 90 s cooldown (was 5 min), salvo sized by target class, nation-level re-engage guard against overkill, and an AUTO_ENGAGEMENT feed event with the firing quality. Iran's strategic AI uses the same fire-control gate, so hiding the carrier now works. Movement: naval MOVE orders route around land per player waypoint leg (drawn waypoints were silently discarded before); land units ordered into water get an ORDER_REJECTED event instead of waypoints silently vanishing mid-route. 434 tests green (8 new), tsc clean. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Design: docs/plans/intel-suite-v3.md (from a 5-agent research sweep of real US ISR architecture, the OSINT ecosystem, Iran counterintelligence, intel game design, and live-verified free data feeds). Engine (complete): src/engine/systems/intel.ts — taskable satellite passes with cloud-cover gating and NIIRS-based decoy reveal, SIGINT intercept cards that leak true AI state (salvo warnings, hidden emitter geolocation, leadership reads), four named HUMINT sources with the exposure/rest/exfiltrate loop, Iranian counterintel (paranoia meter, spy sweeps, encryption blackouts), player leak level with compromised strikes (35% miss + TEL scoot), Iranian decoy TELs, wide-area Triton sweeps and Iran's coarse carrier picture, EMCON (radar-silent units drop out of ELINT and their own radar picture but keep the network). Contracts: IntelState/IntelAsset/AgentSource/IntelProduct types, six new commands, eleven new events with feed formatters, IntelViewState snapshot slice, save/load + backfill for older saves. Data: src/data/feeds.ts — central config of verified keyless+CORS real data sources (Esri imagery, NASA Worldview/GIBS, EUMETSAT live WMS, airplanes.live ADS-B, Open-Meteo, Reuters Hormuz stream) with the attribution roster; ISR asset/agent/OSINT-account rosters. 434 tests green, tsc clean. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ds, time slider UI for the v3 engine (docs/plans/intel-suite-v3.md), built by four parallel agents on the frozen scaffold contracts, integrated and verified. INTEL command center (IntelPanel rewritten): five tabs. ISR — asset cards with next-pass countdowns, TASK PASS with an AOI picker that fetches real cloud cover (Open-Meteo) before queueing; SIGINT — precedence-tagged intercept cards + encryption-blackout banner; HUMINT — source cards with exposure bars and TASK/REST/EXFILTRATE; OSINT — the diegetic feed; OPSEC — leak-level gauge, sweep button, paranoia band, EMCON quick-toggles. UnitInfoPanel gains an EMCON toggle. Products and feeds: ImintViewer renders pass products as classified imagery (real Esri tiles of the actual AOI, banners, NIIRS, Z-times, scanlines) with a new-product toast. LiveFeeds window: EUMETSAT Meteosat-9 IODC live (15-min cadence, IR at night), Reuters Hormuz traffic stream, synthetic drone FMV over any tracked contact (real imagery + Ken-Burns + IR mode), live ADS-B table of real Gulf aircraft, agency-style source credits. OSINT feed generator: 8 fictional accounts with per-archetype delay, error rate and templates, consuming the true event stream; ticker above the feed. Map: AOU rings that grow on stale contacts, radar-horizon sensor rings on selection, queued-pass swaths, revealed-decoy styling, live ADS-B layer, GIBS daily VIIRS recon-mosaic basemap toggle (RCN/ADS-B/OVL in MapToggle). TopBar: log-scale time slider 0 to 1h/s with snap detents and a pause/play toggle (user request), plus the LIVE window button. 515 tests green (81 new: 38 intel engine, panel/feed/TopBar suites), tsc clean, Playwright smoke extended (intel tabs, live feeds, slider-driven war) and passing end to end. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Player call 2026-06-11: the hard radar-horizon cap felt bad (400 km radars seeing 40 km). New model: radar coverage is its nominal radius; height pays instead of physics gating — a high-sited radar (terrain + antenna) reaches up to +50% further, high-sitting targets stand out and are spotted up to +30% further, and elevated emitters shine further for enemy ELINT (easier to intercept). Terrain line-of-sight blocking, sector arcs and low-altitude clutter against sea-skimmers all remain. Sensor rings on the map show effective range, dashed baseline when height-boosted. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
New ARSENAL table in the player block: per weapon type the loaded count across units (colored when running dry), the reserve sitting at bases, and the domestic-industry production rate (+N/h, with an INDUSTRY total in the header). Data was already simulated (base production runs hourly in logistics) — it was just invisible. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ge teleports Player report replicated and pinned by a new regression suite (missile-terrain.test.ts). Four defects in the class: - Ballistic altitude dipped to ~0 at BOTH phase seams (the midcourse parabola did not match the boost/terminal endpoints), so every ballistic shot visibly smashed into the ground at 15% and 70% of its flight and resurrected. Arc is now continuous through apogee. - Terminal dives ended at sea level: targets on high plateaus had the last seconds of the dive underground. Dives now end at the target''s ground elevation. - Cruise terrain-following only sampled the current cell, so steep ridge faces caused multi-km altitude teleports on arrival. The follower now looks 2/5/8 km ahead along the heading and starts the climb before the wall. - Fuel-starved missiles vanished silently (read as terrain crashes). They now emit MISSILE_CRASHED with a feed line and map position, and launches carry a 15% fuel reserve so terrain detours and waypoint legs do not starve max-range shots. 522 tests green (6 new), tsc clean. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The viewshed checked visibility of the bare GROUND, so every 30 m coastal berm shadowed its entire ray and the overlay drew jagged green fans (player screenshot, Patriot/Qatar). It also ignored the new elevation range bonus. Coverage is now raycast against a low-flying air target (100 m AGL) out to the effective radius (nominal x height bonus): clean radius/sector arcs over water, real shadows only behind actual mountain ranges. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Remaining raggedness after the arc fix: 50-150 m desert hills still shadowed rays against a 100 m reference target, and single-ray needles came from elevation-grid aliasing. Coverage is now drawn against a 500 m AGL air target (air-defense chart semantics — only real mountain ranges carve shadows) and ray distances get a 5-wide circular median pass. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… engine smalls Panels: drag by the title bar with per-title position memory, click raises a panel above its siblings (SITREP no longer buries the strike dialog), Escape closes the topmost closable panel. Strike timing moved into the engine: LAUNCH_SALVO gained spacingTicks and a state.scheduledLaunches queue processed per tick — spaced salvos now respect pause, scale with game speed, survive save/load, and carry exactly one strike-leak roll per salvo. Staggered/sequential space rounds within the salvo (2 s / 8 s); the old wall-clock setTimeout chains (which kept firing while paused) are gone. Navigation/copy: MAIN MENU from the ··· menu with a two-step confirm, CONFIRM WAR shows a visible 5-second countdown instead of silently disarming, lane/supply names render properly (Bab el-Mandeb, not BAB EL_MANDEB). Engine smalls: multi-radar units now evaluate every radar sensor with its own range/antenna/sector (max range was paired with the first radar's antenna and arc — wrong since antenna height drives the range bonus); detectThreats gets a per-tick memo (was computed up to 3× per unit per tick); the cursor elevation listener detaches when the ELV overlay is off. 556 tests green (34 new), tsc clean, Playwright smoke passes. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Waves: A feel (hillshade, TOT strikes, unit images, sound, combat legibility), B opt-in TILT 3D, C air war (squadron pools + flights + CAP/strike/AEW), D elevation fidelity (0.01-degree core grid + z11 terrarium LRU), E longevity (replay foundation, daily challenge, scenario sharing, campaign week). All external sources live-verified. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ibility, scale guard Hillshade: real DEM relief (Mapterhorn terrarium tiles, keyless, SRTM 30 m) dark-tuned into both map styles, replacing the static elevation overlay; ELV toggle now drives it, on by default. 2D shading only. TOT strikes: new "TOT — simultaneous impact" timing mode computes launch_i = TOT − flightTime_i per launcher on the engine's scheduled- launch queue (LAUNCH_SALVO delayTicks + scheduleSalvo). The plan shows the derived launch schedule, an estimated-leakers comparison (all-at- TOT vs spread, from fire-channel capacity) and a "first launch at T−X may be detected" warning when slow weapons telegraph the package. Iran's ATTRITION AI now builds TOT-compressed ballistic packages against the densest player air defense. Unit recognition photos: 22 classes fetched from Wikimedia Commons (PD/CC only, licenses recorded, script in scripts/fetch-unit-images.mjs), shown in the hover tooltip (300 ms delay) and unit panel with author · license credit — enemy photos only at identified (intel reward). Sound: fully procedural WebAudio kit (klaxon, sonar ping, radio squelch, launch whoosh, impacts, UI blips, looping CIC room tone) — zero assets, zero licenses; event-mapped with per-sound debounce, master/sfx/ambient buses, persisted mute in the TopBar. Legibility: DEFCON-style kill markers (expanding blot → persistent X, cap 60), fading track-history trails on enemy contacts, 250 ms fade-in transitions on sensor/AOU rings. Scale guard: 500-unit/100-tick stress test with measured numbers — shipped scenarios are comfortably real-time; missile count (not units, not terrain) dominates at saturation. Findings in BACKLOG. 641 tests green (85 new), tsc clean, smoke passes. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Design docs/plans/air-war-v5.md. Types (SquadronState, AirMission, flight metadata, surge ops), three commands, five feed events, airframe performance table (CVW-9 + IRIAF per the research), air wings attached at scenario init with a 30% maintenance stand-down, mission validation/ cancel/surge handlers, snapshot slice (own-side pools only — enemy strength stays BDA-territory), save/load + backfill. processAirOps is a frozen-contract stub for the build wave. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Why
The intel layer was a placebo (budget sliders gating nothing) and engagement ignored sensors entirely. This makes collection the game: find, confirm, strike, and protect your sources while Iran hunts them.
Verification