SKIP TO CONTENT
Fjärrstridsgrupp Alfa
SV UK EDITION 2026-Q2 ACTIVE
UNCLASSIFIED
FSG-A // SOURCE CODE & TOOLS // DOWNLOAD

DOWNLOAD
SOURCE CODE & INTERACTIVE TOOLS

Author: FSG-A — CC BY-SA 4.0
COMPLETE CODE
KEY TAKEAWAY
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
⬇ DOWNLOAD fsga-code-v2.zip
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
Wiki sources
lisa26-threat-fusion.html, lisa26-architecture.html, lisa26-mesh-topology.html, fischer26e.html, fischer26-targeting.html
Requires
React 18+

Brigade Planner (NATO Doctrine Calculator)

LISA26-BRIGADE-PLANNER.JSX

Size
25 KB, ~423 lines
Implements
Lanchester square law (day-by-day attrition sim), Boyd OODA-loop analysis, ATP-3.3.6 CEP→Pk artillery, Koopman search theory
Scenarios
Worst case (3.3:1), Normal (152:1), Best case (652:1) exchange-ratio simulations
Interactive
Drag sliders for F26E/F26/FPV counts; all calculations and SVG graphs update live

RF Triangulation Presentation (10 Steps)

LISA26-TRIANGULATION-V2.JSX

Size
19 KB, ~264 lines
Shows
Step-by-step AoA bearings, RSSI rings, Dempster-Shafer fusion, IFF vs SDR distinction (IFF identifies, SDR locates)
Accuracy
±76m free-space, ±200-400m forest — corrected from earlier wiki estimates
Aggregation
Three-day datapoint aggregation → 14 bearings → 78% confidence model

Drone-vs-Drone Scenario (Standalone HTML)

LISA26-DRON-SCENARIO.HTML

Size
16 KB standalone HTML
Works in
Any browser — Chrome, Firefox, Safari, Edge — no build, no install, no React
Scenario
3-day full-scale wargame: 5×F26E + 10×F26 + 50×FPV vs 5×RU ISR + 49×RU FPV
Sequence
Jammer → fiber breakthrough → interceptor → SDR logging → aggregation → Archer fire

Decision Engine (L1/L2/L3 Kill Chain)

LISA26-DECISION-ENGINE.JSX

Size
10 KB, ~195 lines
Levels
L1 automatic air defense, L2 battle captain approval, L3 interceptor authorization
Wiki sources
lisa26-architecture.html, lisa26-iff-deconfliction.html

Mission Planner (Fresnel + LOS + Solar Azimuth)

LISA26-MISSION-PLANNER.JSX

Size
6 KB, ~134 lines
Calculates
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)
FPV options
5" ELRS 5km €270, 7" ELRS 20km €550, Fiber-optic unjammable 5km €350

Coverage Calculator (GSD + NIIRS + Frame Size)

LISA26-COVERAGE-CALCULATOR.JSX

Size
6 KB, ~114 lines
Calculates
Ground Sample Distance (cm/px), frame width/height, NIIRS detection-classification-identification levels
Shows
34× coverage increase at 700m (Fischer 26E tier-2) vs 120m (tier-1 baseline)

Threat Fusion (Dempster-Shafer Combiner)

LISA26-THREAT-FUSION.JSX

Size
6 KB, ~144 lines
Implements
STANAG 2022 / AJP-2.1 source reliability A-F + information credibility 1-6, Dempster's rule of combination
Math
m_fused = 1 − ∏(1 − m_i) per proof DS_FUSION_THREE_SOURCES in provable_claims.py

FISCHER26-LINK-BUDGET.JSX

Size
6 KB, ~115 lines
Calculates
Silvus StreamCaster link margin using Friis free-space path loss, supports frequency/distance/antenna-type variation
Wiki sources
tool-link-budget.html, antenna-design-milband.html

Quick Start — Code Package

01
DOWNLOAD AND EXTRACT
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.

Related Chapters

Sources

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.

License reference. Creative Commons Attribution-ShareAlike 4.0 International. Full legal text at creativecommons.org/licenses/by-sa/4.0/legalcode.