Two download categories: (1) the complete FSG-A codebase — over 7,400 lines of Python implementing Lisa 26 autonomous decision engine, Fischer 26 EW system, Dempster-Shafer multi-sensor fusion, ArduPlane parameter files, and the libfischer26e SDK; and (2) nine standalone interactive tools — React components and HTML apps that run in any browser and let operators planners and analysts explore link budgets, coverage, triangulation, brigade-level wargaming, and full kill-chain decision engines without installation. Every module has mathematical self-tests that verify its numerical claims. Everything is CC BY-SA 4.0 licensed.
Complete Code Package
FSGA-CODE-V2.ZIP
Size
~116 KB compressed
Contents
25 Python files, 7,476 lines of code
Requires
Python 3.8+ standard library; pyyaml for EW subsystem
License
CC BY-SA 4.0 — free to use, modify, distribute
Modules
Lisa 26 server (terminal + web COP), Fischer 26 EW subsystem (whitelist IFF, jammer, servo, threat tracker, signal boost), Dempster-Shafer fusion, libfischer26e SDK, provable_claims.py, fischer26.param
25 files · 7,476 lines Python · 116 KB · SHA-256 computed at build time
Interactive Tools (Standalone)
Each tool below is a single downloadable file — a React component (.jsx) that runs in any React 18+ environment, or a standalone HTML app that works in any browser without a build step. All tools are derived from the wiki's technical chapters and match the mathematical proofs in provable_claims.py. Operators and planners can drop any file into a staff terminal or laptop and use it immediately.
Lisa 26 Staff Console (Unified 6-Tab Interface)
LISA26-STAFF-CONSOLE.JSX
Size
27 KB, ~440 lines
Tabs
Threat Fusion (Dempster-Shafer), Decision Engine (L1/L2/L3), Link Budget (Friis FSPL), Coverage (GSD+NIIRS), Mission Planner (Fresnel+LOS+solar), Fleet Status
Fresnel F1 mid-path, line-of-sight horizon from Earth curvature, FPV range check, solar azimuth (Jean Meeus algorithm for sun-at-operator's-back approach)
Click the fsga-code-v2.zip button above. Extract the zip to any folder. Open a terminal in that folder.
02
INSTALL DEPENDENCIES
Run pip install pyyaml --break-system-packages (or use virtualenv). Lisa 26 itself requires no external libraries beyond Python stdlib.
03
START LISA 26 TERMINAL
Run cd lisa26-server && python3 lisa26.py. Follow prompts to select unit scale (platoon/company/battalion/brigade) and rules of engagement. The system starts the sensor loop and presents decisions in real time.
04
START LISA 26 WEB COP
Run python3 lisa26_web.py, then open http://localhost:8080. Staff officers can approve L2 decisions via the web interface while field operators use the terminal. Both share the same SQLite database.
05
RUN MATHEMATICAL SELF-TESTS
Run cd src/code && python3 provable_claims.py — verifies all 63 numerical claims against their formulas. Or cd fischer26-ew && python3 whitelist.py (HMAC-SHA256 IFF), python3 servo_pantilt.py (PWM), python3 jammer_control.py (protected bands), python3 ew_integration.py (full integration).
Quick Start — Interactive Tools
The .jsx components expect React 18+ and are designed to be dropped into any React project, including Create React App, Vite, Next.js, or Claude artifacts. Each component exports a default function; import it and render:
# pip install requests
# Verify the download archive's SHA-256 before integrating any component
import hashlib
import requests
def verify_archive(url, expected_sha256):
"""Download an archive and verify its hash before use."""
response = requests.get(url, stream=True)
response.raise_for_status()
sha = hashlib.sha256()
for chunk in response.iter_content(8192):
sha.update(chunk)
actual = sha.hexdigest()
if actual != expected_sha256:
raise ValueError(f"Hash mismatch: {actual} != {expected_sha256}")
return True
# Example: the fsga-code-v2.zip hash is published alongside the download link
# on this page. An integrator verifies it before extracting any React component.
print("Archive integrity verified — safe to extract .jsx components")
Once verified, drop the React components into your project. Each .jsx file exports a default function. A minimal App.jsx looks like: import MissionPlanner from './lisa26-mission-planner.jsx'; export default () => <MissionPlanner />; — no build configuration beyond a standard React 18+ setup is required.
The standalone HTML (lisa26-dron-scenario.html) requires no build step — open it directly in any browser or upload to any static web host.
Mathematical Verification
Every module in fsga-code-v2.zip has self-tests that print the underlying mathematics. The top-level provable_claims.py verifies all 63 numerical claims across the wiki against their formulas and expected values; running it produces a verification report that an engineer can audit before accepting any design claim.
M1
HMAC-SHA256 IFF SECURITY (whitelist.py)
7-byte truncated HMAC = 56 bits of security. Collision probability per attempt: 1/2⁵⁶ = 1.39×10⁻¹⁷. At 1000 heartbeats/sec, expected time to collision is 2.28 million years. Sufficient for tactical IFF where mission duration is measured in hours.
M2
DEMPSTER-SHAFER FUSION (dempster_shafer.py)
Two independent sensors with confidence m1=0.70 and m2=0.65 combine to m12 = 1 − (1−0.70)×(1−0.65) = 0.895 (89.5%). Three sensors (0.70, 0.65, 0.60) give 0.958 (95.8%). Diminishing returns demonstrated — four sensors would add only 2.4% more confidence.
M3
JAMMER RANGE (jammer_control.py)
Friis free-space equation d = 10^((P_tx + G_tx + G_rx − P_rx − 20·log₁₀(f) + 147.55)/20). At 2W (33 dBm), 2.4 GHz, +6 dBi directional antenna vs −80 dBm target: d = 11,150 m. Practical range reduced to ~8 km by terrain and vegetation.
M4
BOOST RELAY RANGE EXTENSION (boost_relay.py)
Without Fischer 26: FPV at 100 mW (20 dBm) with 15 dB terrain loss = 17.8 km range. With Fischer 26 at 300 m AGL acting as boost relay (27 dBm, +6 dBi): ground-to-air LOS reaches 447 km — a 25× range multiplier limited only by geometry.
M5
PROVABLE CLAIMS TOP-LEVEL (provable_claims.py)
All 63 numerical claims across the wiki validated in one script. Each claim carries a formula, source citation, and expected tolerance. A reviewer at FMV or FOI can change any input parameter and immediately see how the results change — no trust required.
Deployment by Unit Scale
Lisa 26 scales from a single platoon tablet to a full brigade command post. The hardware and operator requirements at each level:
D1
PLATOON (4 km² area of operations)
One Android tablet (Samsung Galaxy Tab Active 4 Pro, ~€800). One operator. Drone fleet: 5 FPV plus 2 interceptors. Execution inside Termux; database on internal storage. 8 hours of battery life.
D2
COMPANY (25 km² area of operations)
A ruggedized laptop such as Getac B360 (~€3,500). Two operators — one on the terminal, one on the web COP. Fleet of 15 FPV, 2 Fischer 26, and 4 interceptors. Ubuntu 22.04 LTS recommended.
D3
BATTALION (100 km² area of operations)
Rack server in Pelican case (Dell PowerEdge R250, ~€5,000). Three operators. Fleet of 25 FPV, 3 Fischer 26, and 8 interceptors. Docker container deployment, external PostgreSQL for historical analysis, 4G/5G backhaul as MANET fallback.
D4
BRIGADE (600 km² area of operations)
Redundant rack servers with HA failover (~€12,000 total). Five operators. Fleet of 50 FPV, 5 Fischer 26, and 16 interceptors. Kubernetes cluster with replicated PostgreSQL. TAK Server gateway for NATO interoperability via STANAG 5525. Starlink, MANET, and 4G backhaul.
License and Usage
All code and tools are published under Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0). Users may freely use, modify, and distribute the materials provided three conditions are met: credit the original source (FSG-A Fjärrstridsgrupp Alfa), publish modified versions under the same license, and do not claim to have developed the original. Swedish Armed Forces, allied agencies, and allied organizations may fork, modify, and deploy without permission or license fees. There is no vendor lock-in and no proprietary dependency chain.
The code is intended for defensive purposes — protection of Swedish and allied territory. Commercial military use by third parties not sharing these defensive values conflicts with the license spirit and is not authorized.
Package contents.fsga-code-v2.zip contains 25 Python files totaling 7,476 lines; complete module list is in the package README. All modules individually self-verify against the formulas published in the corresponding wiki chapters.
Interactive tools. The 9 standalone tools derive their numerical logic from the wiki chapters they reference (named in each specbox above). Each tool's behaviour can be audited against provable_claims.py — the tools and the proofs share the same constants.