MoreRSS

site iconThe Practical DeveloperModify

A constructive and inclusive social network for software developers.
Please copy the RSS to your reader, or quickly subscribe to:

Inoreader Feedly Follow Feedbin Local Reader

Rss preview of Blog of The Practical Developer

Nuclear Fusion from First Principles — Vol.10: Valkyrie

2026-02-27 08:44:37

Series: Nuclear Fusion from First Principles (10 of 10)
Previous: Vol.9: Fusion Propulsion — Flying on Starfire
License: MIT

この記事を見て。一緒にVF-1Jを飛ばそうぜ( ´∀` )

Read this article. Let's fly the VF-1J together.

Executive Summary

This is the final volume. It is also the most honest one.

For nine volumes, we have derived the physics of nuclear fusion from first principles: plasma confinement (Vol.1), ignition conditions (Vol.2), tritium breeding (Vol.3), materials damage (Vol.4), the role of AI and digital twins (Vol.5), geopolitics (Vol.6), the tokamak reactor system (Vol.7), alternative confinement concepts (Vol.8), and fusion propulsion (Vol.9). Every volume ended with an uncertainties section. Every decision matrix was calibrated against demonstrated reality.

This volume does something different. It asks a single question:

What would it take to build the FF-2001 thermonuclear reaction turbine engine — the power plant of the VF-1 Valkyrie from Super Dimension Fortress Macross (1982)?

The answer is not "it's impossible." The answer is a precise engineering gap, quantifiable in watts per kilogram, teslas per cubic metre, and dollars per megawatt-hour. Every gap maps directly to a chapter of this series. The VF-1J Valkyrie is not a fantasy — it is a specification sheet with a delivery date we cannot yet determine.

Parameter F-14A Tomcat (1974) VF-1J Valkyrie (2009, fictional) Gap Factor
Engine 2× TF30-P-414A turbofan 2× FF-2001 thermonuclear turbine
Power per engine ~25 MW (thermal) 650 MW ×26
Thrust per engine 93 kN (afterburner) 113 kN (normal), 226 kN (overboost) ×1.2–2.4
Empty mass 18,191 kg 13,250 kg ×0.73
Max takeoff mass 33,724 kg 37,000 kg ×1.10
Max speed Mach 2.34 Mach 2.71 (10,000 m) ×1.16
Fuel JP-5 (kerosene) Thermonuclear (hydrogen isotopes)
Endurance ~2.5 hours Effectively unlimited (atmosphere)
Operating medium Atmosphere only Atmosphere + space

The VF-1J is 26 times more powerful than the F-14A. It is not 26 times faster. It uses that power for something the F-14 cannot do: operate in space, power energy conversion armour, and sustain flight without chemical fuel. The thrust numbers are remarkably similar — because both aircraft are limited by the same atmosphere.

This is the story of a 30,000× power density gap, told through ten volumes of physics.

Table of Contents

  • §1. Shōji Kawamori's Specification Sheet
  • §2. The F-14 Baseline — What the Valkyrie Was Born From
  • §3. The 650 MW Problem — Power Density as the Master Constraint
  • §4. How the FF-2001 Should Work — A Thermonuclear Air-Breathing Turbine
  • §5. The Confinement Problem at Fighter Scale — From ITER to a Nacelle
  • §6. D-³He in a Nacelle — The Fuel That Makes It Possible
  • §7. Energy Conversion Armour and the 1,300 MW Power Budget
  • §8. The OverTechnology Gap — What Real Physics Must Bridge
  • §9. Where VF-1J Sits on the Propulsion Ladder
  • §10. What Kawamori Got Right — Prescient Design Decisions
  • §11. The Real Valkyrie Roadmap — Mapping Fiction to This Series
  • §12. Conclusion — The Bridge Between Stars and Stories
  • Honest Section
  • References

§1. Shōji Kawamori's Specification Sheet

In 1982, a 22-year-old mechanical design student named Shōji Kawamori created the VF-1 Valkyrie for the anime series Super Dimension Fortress Macross. He was not a physicist. He was an industrial designer who loved the F-14 Tomcat and the XB-70 Valkyrie. The name "Valkyrie" was a tribute to the latter — a real supersonic bomber that flew in the 1960s at Mach 3.

Kawamori's design philosophy was rooted in mechanical plausibility. Every joint had to work. Every panel had to fold somewhere. The three-mode transformation (Fighter → GERWALK → Battroid) was not hand-waved — it was engineered on paper, down to the panel lines. When Takatoku Toys sent a prototype whose legs accidentally swung down in fighter mode, Kawamori recognised the intermediate pose and formalised it as GERWALK mode. The design evolved from accidents and constraints, not from fantasy.

The VF-1 was designed for the fictional U.N. Spacy by Stonewell/Bellcom/Shinnakasu Heavy Industry, using alien OverTechnology (OTM) obtained from the crashed ASS-1 (later renamed SDF-1 Macross). The key OTM was the thermonuclear reaction turbine engine — a compact fusion reactor integrated into a jet engine nacelle.

Here is the VF-1J specification, drawn from official Macross sources:

VF-1J Valkyrie — Technical Specifications

  • Manufacturer: Shinnakasu Heavy Industry / Stonewell Bellcom
  • First deployment: November 2008 (Macross timeline)
  • Crew: 1 (Marty & Beck Mk-7 zero/zero ejection seat)
  • Dimensions (Fighter mode): Length 14.23 m, Wingspan 8.25–14.78 m (variable sweep), Height 3.84 m
  • Dimensions (Battroid mode): Height 12.68 m, Width 7.3 m
  • Empty mass: 13,250 kg
  • Standard takeoff mass: 18,500 kg
  • Maximum takeoff mass: 37,000 kg
  • Power plant: 2× Shinnakasu Heavy Industry/P&W/Roice FF-2001 thermonuclear reaction turbine engines
  • Power output: 650 MW per engine (1,300 MW total)
  • Thrust: 11,500 kgf (113 kN) per engine normal; 23,000 kgf (226 kN) per engine in overboost
  • Speed (Fighter, 10,000 m): Mach 2.71
  • Vernier thrusters: 4× NBS-1 (high-thrust) + 18× LHP04 (low-thrust)
  • Armour: SWAG energy conversion armour
  • Armament: 2× Mauler RÖV-20 laser cannons (head turret), 1× Howard GU-11 55 mm tri-barrel gun pod (200 rounds)

The VF-1J was the team leader's variant — two head lasers instead of the VF-1A's one or the VF-1S's four. Hikaru Ichijō, the protagonist of the original series, flew a VF-1J as Vermillion 1.

None of the above numbers are random. Every specification has a physics consequence that this volume will trace.

§2. The F-14 Baseline — What the Valkyrie Was Born From

Kawamori based the VF-1's fighter mode on the Grumman F-14 Tomcat. The design lineage is visible: variable-sweep wings, twin engines in widely spaced nacelles, twin vertical stabilisers, tandem-seat cockpit (in the VF-1D trainer variant). Understanding the F-14 is necessary to understand what the VF-1 changed — and what it kept.

Grumman F-14A Tomcat — Key Specifications

  • Engine: 2× Pratt & Whitney TF30-P-414A augmented turbofan
  • Thrust: 20,900 lbf (93 kN) per engine with afterburner
  • Power: ~25 MW thermal per engine (estimated from fuel flow rate)
  • Empty mass: 18,191 kg
  • Normal takeoff mass: ~27,000 kg
  • Maximum takeoff mass: 33,724 kg
  • Max speed: Mach 2.34 at altitude
  • Thrust-to-weight ratio: 0.56 at max takeoff (TF30), 0.88 at normal takeoff (F110 upgrade)
  • Combat radius: ~600 km on internal fuel
  • Endurance: ~2.5 hours
  • Fuel capacity: 9,100 litres (JP-5 kerosene)

The F-14 was the heaviest fighter ever to operate from a U.S. carrier. Its TF30 engines were famously problematic — Secretary of the Navy John Lehman called the TF30/F-14 combination "probably the worst engine/airframe mismatch we have had in years." The engine was prone to compressor stalls at high angle of attack, causing unrecoverable flat spins. 28% of all F-14 accidents were attributed to the engine.

The VF-1J's FF-2001 solves this problem by eliminating chemical combustion entirely. A thermonuclear reaction turbine does not stall because it does not depend on airflow for energy — only for reaction mass. In atmosphere, it heats incoming air with fusion energy. In space, it operates in closed-cycle mode using onboard propellant.

The comparison reveals something surprising:

Thrust is similar. Power is not.

The F-14's TF30 produces 93 kN. The VF-1J's FF-2001 produces 113 kN in normal mode — only 22% more. In atmosphere, the upper bound of thrust is determined by aerodynamics, structural limits, and the speed of sound, not by engine power. A fighter at Mach 2.7 faces the same drag physics whether its engine burns kerosene or deuterium.

But the FF-2001 generates 650 MW — 26 times more thermal power than the TF30 — while producing only 22% more thrust. Where does the remaining power go?

Answer: energy conversion armour, laser weapons, vernier thrusters, transformation actuators, and space operations. The VF-1J is not a faster F-14. It is an F-14 that carries its own power station.

§3. The 650 MW Problem — Power Density as the Master Constraint

This is where the series converges.

The FF-2001 produces 650 MW of thermal power. It fits inside a nacelle roughly 4 metres long and 1 metre in diameter. Assuming the engine weighs approximately 1,000–1,500 kg (reasonable for a fighter engine nacelle), the specific power is:

$$\alpha_{\mathrm{FF\text{-}2001}} = \frac{650 \text{ MW}}{1{,}000 \text{ kg}} \approx 650 \text{ kW/kg}$$

Now compare with real fusion devices:

Device Power (MW) Mass (tonnes) Specific Power (kW/kg) Volume
ITER 500 (thermal) 23,000 0.022 30 m tall, 28 m diameter
JET 16 (peak) ~3,000 0.005 12 m tall
PFRC-2 (Princeton) 0 (no fusion) ~0.5 ~1 m length
DFD (projected) 1–10 5.5 0.18–1.8 ~5 m length
FF-2001 (fiction) 650 ~1 650 ~4 m × 1 m

The gap between ITER and the FF-2001 is a factor of ~30,000 in specific power.

This is the number that defines the OverTechnology gap. Not "infinity." Not "magic." Thirty thousand. Every order of magnitude in that gap corresponds to a specific engineering breakthrough that we can name:

  1. ITER → compact tokamak (~10×): Replace copper magnets with high-temperature superconductors (HTS), reduce machine size by a factor of ~2 in linear dimension (~8× in volume). Companies like Commonwealth Fusion Systems (SPARC) are attempting this now. This gets us from 0.022 to ~0.2 kW/kg.

  2. Compact tokamak → FRC (~10×): Replace the tokamak geometry with a field-reversed configuration (Vol.8). FRC has no central solenoid, no toroidal field coils, and a naturally linear geometry that fits in a nacelle. The Princeton PFRC concept targets this regime. This gets us from ~0.2 to ~2 kW/kg.

  3. FRC → advanced FRC with D-³He (~10×): Achieve D-³He burning in a compact FRC, eliminating neutron shielding and tritium handling. This simultaneously reduces mass (no lithium blanket, no remote handling for activated components) and increases power (higher plasma temperature → more direct energy conversion). This gets us from ~2 to ~20 kW/kg.

  4. Advanced FRC → OTM (~30×): The final gap requires physics we do not yet possess. In Macross lore, this is provided by "gravity control" and "super dimension spatial theory" — technologies that manipulate the plasma confinement problem by altering the local metric of spacetime. In real physics terms, this corresponds to a confinement method that achieves fusion-grade plasmas (>100 keV for D-³He) in a volume of ~0.1 m³ with near-zero external infrastructure.

Four steps. Each roughly one order of magnitude. Three of them correspond to active research programmes. One requires new physics.

That is the distance between 2026 and the VF-1J.

§4. How the FF-2001 Should Work — A Thermonuclear Air-Breathing Turbine

The Macross setting describes the FF-2001 as a "thermonuclear reaction turbine engine." The official description states: instead of burning fossil fuels to heat intake air and provide thrust, the reaction turbine engines use the immense heat generated by the thermonuclear reaction power plant in the body of the engine.

This is not vague science fiction. This is a specific engineering concept. Let us design it.

In-Atmosphere Mode (Air-Breathing)

The FF-2001 in atmosphere operates as a nuclear air-breathing turbine — conceptually identical to the nuclear thermal rocket (NTP) discussed in Vol.9 §3, except the heat source is fusion rather than fission, and the working fluid is atmospheric air rather than stored hydrogen.

Operating cycle:

  1. Intake: Air enters through rectangular intake ramps (Macross specs note retractable covers for space mode). At Mach 2.7, ram compression raises inlet air temperature to ~350°C and pressure to ~10 atm.

  2. Compression: Conventional axial compressor stages further compress the air. Unlike a standard turbofan, the compressor does not need to be powered by a downstream turbine burning fuel — it can be driven electrically by the fusion reactor's power conversion system.

  3. Heating: Compressed air passes through a heat exchanger surrounding the fusion core. The D-³He plasma burns at ~500 million K, but the heat exchanger wall temperature need only reach ~2,000–3,000 K — comparable to the combustor exit temperature of a conventional afterburning turbofan. At 650 MW thermal, this is equivalent to the heat output of a small power station, delivered into an airflow of ~100 kg/s.

  4. Expansion: Heated air expands through a convergent-divergent nozzle, producing thrust. Two-dimensional nozzles (confirmed in Macross specs) provide enhanced V/STOL performance and thrust vectoring.

  5. No fuel consumption: The working fluid is ambient air. The fusion fuel (deuterium and helium-3) is consumed at nanograms per second at 650 MW. For practical purposes, the fuel supply is unlimited.

In-Space Mode (Closed-Cycle)

In space, the engine intake covers are closed (confirmed in Macross animation). The engine switches to closed-cycle mode:

  1. Onboard propellant (likely hydrogen or helium) is heated by the fusion core.
  2. Heated propellant is expelled through the nozzle, producing thrust.
  3. This is functionally identical to a Direct Fusion Drive (Vol.9 §4), except with a much higher power density.

The variable-sweep wings, which are aerodynamically critical in atmosphere, serve a different purpose in space: vernier thrusters are mounted on the wingtips, providing attitude control in vacuum.

The Key Insight

The FF-2001 is not a "rocket engine" or a "jet engine." It is a fusion reactor with configurable exhaust modes. In atmosphere, it uses free ambient air as propellant. In space, it uses stored propellant. The fusion reaction itself is continuous in both modes. This dual-mode architecture is exactly what the Princeton DFD concept (Vol.9) proposes — at 1/650th the power.

§5. The Confinement Problem at Fighter Scale — From ITER to a Nacelle

Vol.1 of this series derived the conditions for magnetic confinement. The central result was the Lawson criterion:

$$n \tau_E T > 3 \times 10^{21} \text{ keV·s/m}^3$$

For D-T fusion at 15 keV, this requires $n \tau_E > 2 \times 10^{20}$ s/m³. For D-³He at 60 keV (Vol.2 §4), the requirement is approximately 5× more stringent: $n \tau_E > 10^{21}$ s/m³.

ITER achieves this in a plasma volume of 830 m³, confined by superconducting magnets totalling 10,000 tonnes, within a vacuum vessel of 5,200 tonnes.

The FF-2001 must achieve this in ~0.1 m³, confined by... what?

This is the core physics problem. Let us examine the options:

Magnetic confinement (tokamak/stellarator): Impossible at this scale. The minimum tokamak size is set by the ratio of plasma pressure to magnetic pressure ($\beta = p_{\mathrm{plasma}} / p_{\mathrm{magnetic}}$). For conventional tokamaks, $\beta < 5\%$, requiring enormous magnets to confine modest plasma pressures. Even with HTS magnets (Vol.7), the minimum viable tokamak is ~2 metres in major radius. It does not fit in a nacelle.

Field-reversed configuration (FRC): Better. FRC achieves $\beta \approx 50\text{–}90\%$ — the highest of any magnetic confinement concept (Vol.8 §2). This means less magnet mass per unit of confined plasma pressure. The Princeton PFRC is ~1 metre long and has demonstrated electron heating to >500 eV. An FRC is elongated and cylindrical — it fits naturally in a nacelle geometry. This is the most plausible candidate for the FF-2001's confinement topology.

Inertial confinement (ICF): Incompatible with continuous operation. ICF is inherently pulsed (Vol.8 §3), and the VF-1's thrust profile requires continuous power output. Moreover, ICF drivers (lasers or particle beams) are far too massive.

Gravity confinement: This is what Macross explicitly invokes. "Gravity control systems are most commonly used in thermonuclear reaction power systems, to help moderate and sustain the reaction itself." In physics terms, artificial gravity confinement would replace magnetic fields with gravitational fields — confining plasma by curving spacetime rather than bending particle trajectories. This eliminates the need for massive magnets entirely. It is, of course, beyond any physics we currently understand. But it is not logically incoherent — general relativity permits gravitational confinement in principle. The energy cost of generating artificial gravity fields strong enough for plasma confinement is the open question.

The honest assessment: An FRC-like confinement geometry at extreme $\beta$, augmented by some form of confinement enhancement (whether gravity control or another mechanism we have not yet discovered), is the most physically plausible interpretation of the FF-2001. The cylindrical, high-$\beta$ FRC topology fits the nacelle. The D-³He fuel choice (§6) eliminates neutron damage problems. The missing piece is the specific power density — and that is the OTM gap.

§6. D-³He in a Nacelle — The Fuel That Makes It Possible

Vol.2 established the fuel hierarchy for fusion:

Reaction Energy (MeV) Charged fraction Neutron fraction Temp required (keV)
D-T 17.6 20% (α) 80% (n) 15
D-D 3.65 (avg) 60% 40% 50
D-³He 18.3 98.7% 1.3% (side reactions) 60–80
p-¹¹B 8.7 100% 0% >300 (impossible, Vol.2 §6)

The FF-2001 must use D-³He. Here is why:

D-T is disqualified for a fighter aircraft.

D-T fusion produces 14.1 MeV neutrons. These neutrons:

  • Activate the aircraft structure, making it radioactive (Vol.4)
  • Require ~1 metre of lithium/steel shielding (Vol.3), adding thousands of kilograms
  • Damage structural materials at ~10 dpa/year at the first wall (Vol.4 §3)
  • Require tritium handling systems (Vol.3), including breeding blankets

A D-T VF-1J would weigh at least 5× more than Kawamori's specification allows. It would irradiate its own pilot. It would require depot-level decontamination after every sortie. The U.N. Spacy would not deploy it.

D-³He solves all three problems simultaneously.

  1. <1.3% neutron fraction: The primary D-³He reaction produces a 14.7 MeV proton and a 3.6 MeV alpha particle — both charged, both confined by magnetic fields, both available for direct energy conversion. The residual neutrons come from D-D side reactions (Vol.2 §4), which can be minimised by running at higher temperatures and ³He-rich fuel mixtures.

  2. No shielding required: With <1.3% neutron flux, the structural activation is negligible over the VF-1's ~5-year service life. No breeding blanket. No lithium. No remote handling.

  3. Direct energy conversion: Charged fusion products can be decelerated directly into electricity through magnetic deceleration (direct energy conversion, Vol.8 §2). Efficiency: 60–80%, versus ~33% for thermal conversion with D-T. This is how the VF-1 powers its energy conversion armour — it converts fusion-born protons directly into electrical energy.

The ³He supply problem.

Vol.9 §8 noted that ³He is vanishingly rare on Earth (~0.000137% of natural helium). The only known abundant source is the lunar regolith, which contains ~10–30 ppb of ³He implanted by the solar wind over billions of years. Mining ~100 tonnes of regolith yields ~1 gram of ³He.

In the Macross timeline, the VF-1 enters service in 2008–2009. The ³He supply chain is never explicitly addressed, but the Macross setting includes lunar bases, the SDF-1's fold drive technology, and the processing of alien materials. A military logistics system capable of recovering and processing ³He from lunar or asteroidal sources is implied.

At 650 MW per engine and 18.3 MeV per reaction, the D-³He fuel consumption rate is approximately:

$$\dot{m} \approx \frac{P}{E_{\mathrm{fusion}} / m_{\mathrm{fuel}}} = \frac{650 \times 10^6}{3.52 \times 10^{14}} \approx 1.8 \times 10^{-6} \text{ kg/s} \approx 1.8 \text{ mg/s}$$

That is 1.8 milligrams per second. At full power, both engines consume ~13 grams per hour. A 1 kg fuel load provides ~77 hours of continuous full-power operation. The "effectively unlimited endurance" claim is physically justified.

§7. Energy Conversion Armour and the 1,300 MW Power Budget

The VF-1's SWAG energy conversion armour is one of Macross's most distinctive technologies. Official sources describe it as: "an OverTechnology which redirects excess power generated by a vehicle engine into the specially designed armored hull of the vehicle, resulting in a significant increase in armor strength."

This is the answer to the question from §2: where does the excess power go?

With 1,300 MW total engine output and ~100 MW needed for thrust at cruise, the VF-1J has ~1,200 MW available for other systems. Let us build a power budget:

System Estimated Power Source
Atmospheric thrust (cruise, Mach 0.9) 50–80 MW Aerodynamic drag at cruise
Atmospheric thrust (combat, Mach 2.7) 200–400 MW Supersonic drag
Energy conversion armour 200–600 MW Hull energisation
Laser weapons (2× RÖV-20) 10–20 MW 6,000 pulses/min per gun
Transformation actuators 50–100 MW Fluid pulse actuators (peak)
Vernier thrusters (space) 20–50 MW 4× NBS-1 + 18× LHP04
Avionics / sensors / life support 1–5 MW Conventional systems
Waste heat rejection 100–300 MW Radiative + convective cooling

Total peak demand: ~1,200 MW — almost exactly the available output of two FF-2001 engines.

The energy conversion armour is the key consumer. In physical terms, what is it?

The most plausible interpretation: a magnetohydrodynamic (MHD) field generator embedded in the hull plating. By driving large currents through conductive armour panels, the system generates localised magnetic fields that resist deformation — essentially a magnetic stiffening effect. At 200–600 MW, the magnetic pressure achievable is:

$$p_B = \frac{B^2}{2\mu_0}$$

At 200 MW over a hull area of ~100 m², the energy density corresponds to magnetic fields of ~10–50 T at the armour surface. For comparison, the strongest pulsed magnets on Earth achieve ~100 T. This is extreme but not physically impossible — it is an engineering problem, not a physics violation.

The energy conversion armour explains why the VF-1J needs 1,300 MW to fly at Mach 2.71 — a speed that an F-14 achieves with 50 MW. The VF-1 does not need the extra power for speed. It needs it for survivability in combat against 15-metre-tall alien giants wielding particle beam weapons.

§8. The OverTechnology Gap — What Real Physics Must Bridge

Let us now be precise about what "OverTechnology" means in physics terms. The Macross setting identifies three key OTM systems relevant to the FF-2001:

1. Gravity Control

Used for plasma confinement enhancement and inertial damping. In physics terms, this corresponds to the ability to generate controllable gravitational fields — a capability that requires either:

  • Manipulation of spacetime curvature (general relativity: requires exotic matter or energy densities we cannot produce)
  • An undiscovered force with gravitational-like properties
  • Engineering manipulation of the Casimir effect or vacuum energy at macroscopic scales

Current status: no theoretical framework, no experimental evidence. This is the single largest OTM gap. If gravity control existed, plasma confinement would become trivial — you would simply gravitationally confine the plasma as stars do, but at tabletop scale. The size of every fusion reactor in this series would shrink by orders of magnitude.

2. Super Dimension Spatial Theory

Used to enhance fusion reaction rates beyond conventional cross-sections. In physics terms, this might correspond to:

  • Manipulation of the Coulomb barrier via localised spacetime distortion (reducing the distance over which the strong force must act)
  • Catalysed fusion through an unknown mediating particle or field
  • Quantum tunnelling enhancement via engineered vacuum fluctuations

Current status: speculative theoretical physics. Some quantum gravity frameworks predict vacuum engineering possibilities, but none are experimentally accessible.

3. Thermonuclear Reaction Battery

A compact energy storage device using fusion energy. In some VF-1 variants (the N-type upgrade), thermonuclear reaction batteries provide short-duration energy conversion armour operation in fighter mode. This suggests a rechargeable fusion energy system distinct from the main reactor — possibly a compact inertial confinement pulse device or a charged-particle trap.

Current status: partially addressable. High-energy-density batteries using fusion-charged particle storage are physically conceivable, though many orders of magnitude beyond current supercapacitor technology.

The honest gap assessment:

OTM Component Physics Status Corresponding Series Volume Years to Demo (estimate)
Compact FRC reactor Active research Vol.8 (PFRC) 10–20
D-³He burning plasma Not demonstrated Vol.2, Vol.8 20–30
Direct energy conversion Lab-scale demos Vol.8, Vol.9 15–25
Magnetic nozzle (space mode) Unresolved theory Vol.9 §5 20–30
HTS magnets for compact confinement Demonstrated (SPARC) Vol.7, Vol.8 5–10
Energy conversion armour (MHD) Pulsed demos exist Vol.7 30–50
Gravity control No physics framework None Unknown
Super dimension spatial theory No physics framework None Unknown

Six of eight components are on active research trajectories. Two require new physics. The VF-1J is six breakthroughs and two miracles away from reality.

§9. Where VF-1J Sits on the Propulsion Ladder

Vol.9 defined the propulsion ladder by exhaust velocity:

System Exhaust velocity (km/s) $I_{\mathrm{sp}}$ (s) Status
Chemical (LOX/LH₂) 4.4 450 Demonstrated (TRL 9)
NTP (NERVA) 8.5 850 Ground-tested (TRL 5)
NEP (ion drive) 30 3,000 In-flight (TRL 7)
DFD (D-³He) 100 10,000 Conceptual (TRL 2)
FF-2001 (space mode) ? ? Fiction

What is the FF-2001's $I_{\mathrm{sp}}$ in space mode?

Using the thrust (113 kN normal) and a propellant flow rate estimated from the power budget:

If the FF-2001 heats hydrogen propellant to ~20,000 K (a temperature achievable with 650 MW into a modest mass flow):

$$v_e = \sqrt{\frac{2 c_p T}{M}} \approx \sqrt{\frac{2 \times 14{,}300 \times 20{,}000}{0.002}} \approx 17{,}000 \text{ m/s}$$

$$I_{\mathrm{sp}} \approx 1{,}700 \text{ s}$$

This places the FF-2001 in space mode between NTP and NEP — firmly in the fission-class regime for exhaust velocity. But with 650 MW per engine, the specific power $\alpha$ is in a completely different class:

$$\alpha_{\mathrm{FF\text{-}2001}} \approx 650 \text{ kW/kg}$$

This is above the "interstellar precursor" threshold (Vol.9 §2, $\alpha > 10$ kW/kg) by a factor of 65.

For the VF-1J's combat role, however, $I_{\mathrm{sp}}$ is less important than thrust-to-weight ratio. In space combat at close range, what matters is acceleration:

$$a = \frac{F}{m} = \frac{226{,}000 \text{ N}}{18{,}500 \text{ kg}} = 12.2 \text{ m/s}^2 \approx 1.24g$$

In overboost, the VF-1J can sustain 1.24g continuous acceleration in space — indefinitely, because the fusion fuel lasts for days. This is enough to execute orbital manoeuvres, intercept enemy spacecraft, and sustain combat engagements in the SDF-1 Macross's theatre of operations.

By comparison, the ISS crew experiences microgravity. Chemical rockets produce high thrust for minutes. The VF-1J produces moderate thrust for hours. For a combat vehicle, continuous moderate acceleration is more useful than brief high acceleration.

Figure 1 Generation Code (Python)

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches

np.random.seed(42)
fig, axes = plt.subplots(2, 2, figsize=(16, 12))
fig.suptitle("Figure 1: VF-1J Valkyrie — Physics Analysis", fontsize=16, fontweight='bold', y=0.98)

# === Panel A: Power Density Comparison ===
ax = axes[0, 0]
devices = ['ITER\n(2035)', 'JET\n(1997)', 'SPARC\n(target)', 'DFD\n(target)', 'FF-2001\n(fiction)']
power_density = [0.022, 0.005, 0.5, 1.8, 650]
colors = ['#4A90D9', '#4A90D9', '#F5A623', '#F5A623', '#D0021B']
bars = ax.barh(devices, power_density, color=colors, edgecolor='black', linewidth=0.8)
ax.set_xscale('log')
ax.set_xlabel('Specific Power (kW/kg)', fontsize=11)
ax.set_title('(A) Specific Power: Real vs Fiction', fontsize=13, fontweight='bold')
ax.axvline(x=0.1, color='green', linestyle='--', alpha=0.5, linewidth=1)
ax.axvline(x=1.0, color='orange', linestyle='--', alpha=0.5, linewidth=1)
ax.axvline(x=10, color='red', linestyle='--', alpha=0.5, linewidth=1)
ax.text(0.12, 4.6, 'Outer planets\n(years)', fontsize=8, color='green', alpha=0.7)
ax.text(1.2, 4.6, 'Mars\n(weeks)', fontsize=8, color='orange', alpha=0.7)
ax.text(12, 4.6, 'Interstellar\nprecursor', fontsize=8, color='red', alpha=0.7)
for bar, val in zip(bars, power_density):
    ax.text(val * 1.3, bar.get_y() + bar.get_height()/2, f'{val} kW/kg',
            va='center', fontsize=9, fontweight='bold')
ax.annotate('×30,000 gap', xy=(650, 4), xytext=(20, 3),
            fontsize=12, fontweight='bold', color='red',
            arrowprops=dict(arrowstyle='-&gt;', color='red', lw=2))
ax.set_xlim(0.003, 3000)

# === Panel B: F-14 vs VF-1J Comparison ===
ax = axes[0, 1]
categories = ['Thrust\n(kN)', 'Power\n(MW)', 'Empty Mass\n(tonnes)', 'Max Speed\n(Mach)', 'T/W Ratio']
f14_vals = [93, 25, 18.2, 2.34, 0.56]
vf1_vals = [113, 650, 13.25, 2.71, 1.24]
x = np.arange(len(categories))
width = 0.35
bars1 = ax.bar(x - width/2, f14_vals, width, label='F-14A Tomcat', color='#6B8E9B', edgecolor='black')
bars2 = ax.bar(x + width/2, vf1_vals, width, label='VF-1J Valkyrie', color='#D0021B', edgecolor='black')
ax.set_yscale('log')
ax.set_ylabel('Value (log scale)', fontsize=11)
ax.set_xticks(x)
ax.set_xticklabels(categories, fontsize=9)
ax.set_title('(B) F-14A Tomcat vs VF-1J Valkyrie', fontsize=13, fontweight='bold')
ax.legend(loc='upper left', fontsize=10)
ax.set_ylim(0.3, 2000)
# Annotate the power gap
ax.annotate('×26', xy=(1 + width/2, 650), xytext=(1.6, 650),
            fontsize=14, fontweight='bold', color='red',
            arrowprops=dict(arrowstyle='-&gt;', color='red', lw=2))

# === Panel C: The OTM Gap Roadmap ===
ax = axes[1, 0]
steps = ['ITER\n(0.022)', 'Compact\nTokamak\n(~0.2)', 'FRC\n(~2)', 'D-³He\nFRC\n(~20)', 'OTM\n(~650)']
y_vals = [0.022, 0.2, 2, 20, 650]
x_pos = [0, 1, 2, 3, 4]
colors_step = ['#4A90D9', '#4A90D9', '#F5A623', '#F5A623', '#D0021B']
markers = ['o', 's', '^', 'D', '*']
for i in range(len(steps)):
    ax.scatter(x_pos[i], y_vals[i], c=colors_step[i], s=200, zorder=5,
              marker=markers[i], edgecolors='black', linewidth=1.5)
    if i &lt; len(steps) - 1:
        ax.annotate('', xy=(x_pos[i+1], y_vals[i+1]), xytext=(x_pos[i], y_vals[i]),
                    arrowprops=dict(arrowstyle='-&gt;', color='gray', lw=2, linestyle='--'))
        mid_x = (x_pos[i] + x_pos[i+1]) / 2
        mid_y = np.sqrt(y_vals[i] * y_vals[i+1])
        gap = y_vals[i+1] / y_vals[i]
        ax.text(mid_x, mid_y * 1.5, f'×{gap:.0f}', fontsize=10, fontweight='bold',
                ha='center', color='gray')

ax.set_yscale('log')
ax.set_xticks(x_pos)
ax.set_xticklabels(steps, fontsize=9)
ax.set_ylabel('Specific Power α (kW/kg)', fontsize=11)
ax.set_title('(C) The OverTechnology Gap — Step by Step', fontsize=13, fontweight='bold')
ax.set_ylim(0.01, 2000)

# Add regions
ax.axhspan(0.01, 0.5, alpha=0.1, color='blue', label='Current tech')
ax.axhspan(0.5, 50, alpha=0.1, color='orange', label='Active R&amp;D')
ax.axhspan(50, 2000, alpha=0.1, color='red', label='New physics required')
ax.legend(loc='lower right', fontsize=9)

# === Panel D: VF-1J Power Budget ===
ax = axes[1, 1]
systems = ['Cruise thrust', 'Combat thrust', 'Energy armour', 'Weapons', 'Transformation', 'Verniers', 'Avionics', 'Waste heat']
power_mw = [65, 300, 400, 15, 75, 35, 3, 200]
colors_pie = ['#4A90D9', '#2E5D8C', '#D0021B', '#F5A623', '#7B68EE', '#50C878', '#808080', '#A0522D']
explode = (0, 0, 0.1, 0, 0, 0, 0, 0)
wedges, texts, autotexts = ax.pie(power_mw, labels=systems, autopct='%1.0f%%',
                                   colors=colors_pie, explode=explode,
                                   textprops={'fontsize': 9},
                                   pctdistance=0.8, labeldistance=1.12)
for autotext in autotexts:
    autotext.set_fontsize(8)
ax.set_title('(D) VF-1J Power Budget (1,300 MW total)', fontsize=13, fontweight='bold')

plt.tight_layout(rect=[0, 0, 1, 0.95])
plt.savefig('vol10_fig1_valkyrie.png', dpi=200, bbox_inches='tight',
            facecolor='white', edgecolor='none')
plt.close()
print("Figure 1 saved: vol10_fig1_valkyrie.png")

IMAGE_URL_PLACEHOLDER

§10. What Kawamori Got Right — Prescient Design Decisions

Kawamori made his design decisions in 1982 — five years before the JET tokamak's first D-T experiments, decades before FRC research matured, and long before anyone seriously discussed D-³He propulsion. Yet several of his choices align remarkably well with current fusion engineering thinking.

1. The nacelle geometry matches FRC topology.

The FF-2001 sits in a cylindrical nacelle. The only fusion confinement concept that naturally fits a cylindrical nacelle is the field-reversed configuration. Kawamori could not have known this — FRC research was in its infancy in 1982 — but the geometric match is precise. The Princeton PFRC, developed three decades later, looks like it was designed to fit inside a VF-1 nacelle.

2. The power level (650 MW) is in the right regime.

ITER targets 500 MW. A commercial fusion power plant targets 1,000–2,000 MW. The FF-2001 at 650 MW sits squarely in the regime that fusion engineers consider "useful" — enough power to do meaningful work, but not so much that containment becomes impossible. Kawamori did not arbitrarily choose "one million megawatts" or some other anime-scale number. He (or the Studio Nue technical staff) chose a number consistent with the scale of fusion power we actually expect to produce.

3. The thrust-to-power ratio reflects thermal limits.

The VF-1J produces 113 kN from 650 MW — a thrust-to-power ratio of 0.17 kN/MW. For comparison, the NERVA nuclear thermal rocket produces ~334 kN from ~4,000 MW (0.08 kN/MW). The FF-2001's ratio is roughly 2× NERVA's, consistent with a more advanced heat exchanger operating at higher temperatures. This is not the ratio of a chemical rocket (10+ kN/MW). Kawamori's numbers implicitly respect the thermodynamic limits on converting heat to thrust.

4. The dual-mode (air-breathing / space) architecture anticipates DFD.

The FF-2001's ability to switch between air-breathing and closed-cycle modes is exactly the architecture that the Princeton DFD concept proposes for interplanetary spacecraft. The DFD concept paper was published in 2014 — 32 years after Kawamori's design.

5. The variable-sweep wing design is aerodynamically correct.

The F-14's variable-sweep wings exist because no single wing geometry is optimal across the full speed range. Wings swept back for high speed; wings extended for low-speed manoeuvrability. The VF-1 inherits this design for exactly the right reasons. In GERWALK mode, the extended wings provide additional lift at low speeds during transition between flight modes.

6. Energy conversion armour implies direct energy conversion.

If the VF-1's hull can absorb engine power to increase strength, the engine must output electricity — not just heat. This implies direct energy conversion from charged fusion products, which is a key advantage of D-³He fuel. Kawamori's technology suite is internally self-consistent in a way that demands the right fuel choice.

What Kawamori got wrong, or at least assumed, is the scale of miniaturisation. The gap between ITER and the FF-2001 is real, and no amount of clever engineering closes it without new physics. But the direction of his engineering intuition — FRC-like geometry, D-³He fuel, dual-mode propulsion, direct energy conversion — tracks the current trajectory of fusion research with startling accuracy.

§11. The Real Valkyrie Roadmap — Mapping Fiction to This Series

Here is the complete mapping between the VF-1J Valkyrie and the ten volumes of this series:

VF-1J Technology Series Volume Real Status (2026) Gap
Plasma confinement in nacelle Vol.1 (Confinement) ITER: 23,000 tonnes for 500 MW. PFRC: 1 m, no fusion. ~1,000× in size
D-³He ignition Vol.2 (Ignition) Never demonstrated. 5× harder than D-T. Not achieved
No tritium handling Vol.3 (Tritium) Tritium breeding ratio <1.0. D-³He eliminates the problem. Solved by fuel choice
Radiation-resistant structure Vol.4 (Materials) 20 dpa max tested. D-³He reduces to negligible levels. Solved by fuel choice
AI flight control for 3-mode transformation Vol.5 (AI) Digital twins emerging. Real-time plasma control demonstrated. ~10 years
³He supply chain (lunar mining) Vol.6 (Geopolitics) No lunar mining infrastructure. Artemis program in early stages. ~30 years
Compact fusion reactor Vol.7 (Tokamak System) HTS tokamaks under construction (SPARC). Too large for nacelle. ~100× in size
FRC at fusion-relevant parameters Vol.8 (Alt. Confinement) PFRC-2 at 500 eV electrons. No ion heating to fusion temps. ~100× in temperature
Dual-mode propulsion (atmo + space) Vol.9 (Propulsion) DFD concept at TRL 2. No hardware. ~30 years
Gravity control / OTM This volume No physics framework Unknown

The VF-1J is the integral of this entire series. Every unsolved problem in fusion physics appears somewhere in its specification sheet. Every breakthrough that brings us closer to commercial fusion also brings us closer to the Valkyrie.

Figure 2 Generation Code (Python)

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches

np.random.seed(42)
fig, axes = plt.subplots(2, 2, figsize=(16, 12))
fig.suptitle("Figure 2: VF-1J Valkyrie — The Roadmap", fontsize=16, fontweight='bold', y=0.98)

# === Panel A: Series Volume Mapping ===
ax = axes[0, 0]
volumes = ['Vol.1\nConfinement', 'Vol.2\nIgnition', 'Vol.3\nTritium', 'Vol.4\nMaterials',
           'Vol.5\nAI', 'Vol.6\nGeopolitics', 'Vol.7\nTokamak', 'Vol.8\nAlt. Confine.',
           'Vol.9\nPropulsion', 'Vol.10\nValkyrie']
# How much each volume's problem has been solved (0-100%)
progress = [15, 5, 0, 0, 40, 5, 20, 10, 3, 0]
# Color by category
vol_colors = ['#4A90D9', '#D0021B', '#50C878', '#F5A623', '#7B68EE',
              '#808080', '#4A90D9', '#F5A623', '#D0021B', '#D0021B']
bars = ax.barh(volumes, progress, color=vol_colors, edgecolor='black', linewidth=0.8)
ax.set_xlabel('Progress Toward VF-1J Requirement (%)', fontsize=11)
ax.set_title('(A) How Close Is Each Volume\'s Problem to VF-1J?', fontsize=13, fontweight='bold')
ax.set_xlim(0, 105)
# Labels
for bar, val in zip(bars, progress):
    if val &gt; 0:
        ax.text(val + 2, bar.get_y() + bar.get_height()/2, f'{val}%',
                va='center', fontsize=9, fontweight='bold')
    else:
        ax.text(2, bar.get_y() + bar.get_height()/2, 'Not started',
                va='center', fontsize=9, color='red', style='italic')
# Note: Vol.3 and Vol.4 show 0% because D-3He eliminates those problems
ax.text(50, 7.5, '← D-³He eliminates\n     these problems', fontsize=9, color='green',
        style='italic', ha='center')

# === Panel B: Timeline to VF-1J ===
ax = axes[0, 1]
milestones = [
    ('HTS magnets\n(SPARC)', 2028, '#4A90D9'),
    ('D-T ignition\n(sustained)', 2032, '#4A90D9'),
    ('Compact FRC\n(fusion-grade)', 2040, '#F5A623'),
    ('D-³He burning\nplasma', 2050, '#F5A623'),
    ('Lunar ³He\nmining', 2055, '#808080'),
    ('Direct energy\nconversion', 2045, '#F5A623'),
    ('Fusion propulsion\n(DFD flight)', 2055, '#F5A623'),
    ('Energy conversion\narmour', 2065, '#D0021B'),
    ('Gravity control\n/ OTM', 2100, '#D0021B'),
    ('VF-1 Valkyrie\nflight', 2100, '#D0021B'),
]
for i, (label, year, color) in enumerate(milestones):
    ax.scatter(year, i, c=color, s=150, zorder=5, edgecolors='black', linewidth=1)
    ax.text(year + 1.5, i, f'{label} ({year})', fontsize=8, va='center')

ax.set_xlabel('Year', fontsize=11)
ax.set_title('(B) Speculative Timeline to VF-1J', fontsize=13, fontweight='bold')
ax.set_xlim(2025, 2115)
ax.set_yticks([])
ax.axvline(x=2026, color='green', linestyle='-', linewidth=2, alpha=0.7)
ax.text(2027, 9.5, '← You are here', fontsize=10, color='green', fontweight='bold')
ax.axvspan(2025, 2040, alpha=0.05, color='blue')
ax.axvspan(2040, 2060, alpha=0.05, color='orange')
ax.axvspan(2060, 2115, alpha=0.05, color='red')
ax.text(2032, -0.8, 'Current R&amp;D', fontsize=9, ha='center', color='blue', alpha=0.7)
ax.text(2050, -0.8, 'Projected', fontsize=9, ha='center', color='orange', alpha=0.7)
ax.text(2085, -0.8, 'New physics\nrequired', fontsize=9, ha='center', color='red', alpha=0.7)

# === Panel C: Propulsion Ladder with VF-1J ===
ax = axes[1, 0]
systems = ['Chemical\n(LOX/LH₂)', 'NTP\n(NERVA)', 'NEP\n(Ion)', 'DFD\n(D-³He)', 'FF-2001\n(VF-1J)']
exhaust_v = [4.4, 8.5, 30, 100, 17]  # km/s
spec_power = [1000, 1, 0.01, 1.8, 650]  # kW/kg
sizes = [100, 120, 80, 150, 300]
colors_prop = ['gray', 'orange', '#4A90D9', '#F5A623', '#D0021B']
for i in range(len(systems)):
    ax.scatter(exhaust_v[i], spec_power[i], s=sizes[i], c=colors_prop[i],
              edgecolors='black', linewidth=1.5, zorder=5)
    offset_x = 1.15 if i != 2 else 0.7
    offset_y = 1.3
    ax.text(exhaust_v[i] * offset_x, spec_power[i] * offset_y, systems[i],
            fontsize=9, ha='left', va='bottom')

ax.set_xscale('log')
ax.set_yscale('log')
ax.set_xlabel('Exhaust Velocity (km/s)', fontsize=11)
ax.set_ylabel('Specific Power α (kW/kg)', fontsize=11)
ax.set_title('(C) VF-1J on the Propulsion Ladder', fontsize=13, fontweight='bold')
ax.set_xlim(2, 300)
ax.set_ylim(0.005, 3000)
# Note: Chemical has high alpha but low Isp; VF-1J uniquely has BOTH
ax.annotate('VF-1J: moderate Isp\nbut extreme α',
            xy=(17, 650), xytext=(50, 200),
            fontsize=10, fontweight='bold', color='red',
            arrowprops=dict(arrowstyle='-&gt;', color='red', lw=2))
# Threshold lines
ax.axhline(y=0.1, color='green', linestyle='--', alpha=0.3)
ax.axhline(y=1, color='orange', linestyle='--', alpha=0.3)
ax.axhline(y=10, color='red', linestyle='--', alpha=0.3)

# === Panel D: The 30,000× Gap Decomposition ===
ax = axes[1, 1]
components = ['ITER → Compact\nTokamak', 'Compact →\nFRC', 'FRC →\nD-³He FRC', 'D-³He FRC →\nOTM/FF-2001']
gap_factors = [10, 10, 10, 30]
cum_factor = [10, 100, 1000, 30000]
bars = ax.bar(components, gap_factors, color=['#4A90D9', '#F5A623', '#F5A623', '#D0021B'],
              edgecolor='black', linewidth=0.8)
ax.set_ylabel('Gap Factor (×)', fontsize=11)
ax.set_title('(D) Decomposing the ×30,000 Gap', fontsize=13, fontweight='bold')
# Annotate cumulative
for i, (bar, cf) in enumerate(zip(bars, cum_factor)):
    ax.text(bar.get_x() + bar.get_width()/2, bar.get_height() + 1,
            f'Cumulative:\n×{cf:,}', ha='center', fontsize=9, fontweight='bold')
# Color legend
legend_elements = [
    mpatches.Patch(facecolor='#4A90D9', edgecolor='black', label='Demonstrated path'),
    mpatches.Patch(facecolor='#F5A623', edgecolor='black', label='Active R&amp;D'),
    mpatches.Patch(facecolor='#D0021B', edgecolor='black', label='New physics required'),
]
ax.legend(handles=legend_elements, loc='upper left', fontsize=9)
ax.set_ylim(0, 40)

plt.tight_layout(rect=[0, 0, 1, 0.95])
plt.savefig('vol10_fig2_roadmap.png', dpi=200, bbox_inches='tight',
            facecolor='white', edgecolor='none')
plt.close()
print("Figure 2 saved: vol10_fig2_roadmap.png")

IMAGE_URL_PLACEHOLDER

§12. Conclusion — The Bridge Between Stars and Stories

Shōji Kawamori drew the VF-1 Valkyrie in 1982 because he loved aeroplanes and wanted to make the coolest robot on television. He succeeded. Forty-four years later, the VF-1 remains the most mechanically detailed variable fighter in anime history — a design that works on paper, transforms in three dimensions, and obeys more physics than it violates.

This series began with the Lawson criterion and ends with a specification sheet from a 1982 anime. The distance between them is measured in a factor of 30,000 in specific power. That sounds like an insurmountable number — until you decompose it into four steps of roughly ×10 each, and realise that two of those steps are already underway.

What the VF-1J teaches us about real fusion:

  1. Fuel choice matters more than confinement method. The moment you choose D-³He, you eliminate tritium breeding (Vol.3), neutron damage (Vol.4), and most shielding mass. The VF-1J's lightness is a direct consequence of its fuel.

  2. Power density is the master constraint. Not temperature, not confinement time, not triple product — power per kilogram. Every tonne you remove from the reactor is a tonne of payload, armour, or mission capability. The entire history of fusion engineering can be read as a struggle to increase $\alpha$.

  3. Dual-mode operation is the right architecture. A fusion engine that can breathe atmosphere when available and carry propellant when necessary is more versatile than either a pure jet or a pure rocket. The DFD concept and the FF-2001 share this insight.

  4. Direct energy conversion is non-negotiable. If your fusion products are charged particles (as with D-³He), converting them to electricity at 60–80% efficiency transforms the entire power budget. Thermal conversion at 33% is not enough for a fighter aircraft. It is barely enough for a power station.

  5. We are closer than you think — and further than you hope. HTS magnets exist. FRC plasmas exist. D-³He cross-sections are measured. The components are real. Their integration at the required scale is not. The gap is engineering, not magic — except for that last factor of 30, which might be magic, might be gravity control, or might be something we have not yet imagined.

Roy Focker once told Hikaru Ichijō: "The sky doesn't have a ceiling, kid."

He was talking about the Valkyrie. He could have been talking about fusion.

The rocket equation does not negotiate. Neither does the Lawson criterion. Neither does the Coulomb barrier. The physics of this universe sets hard limits — and within those limits, permits exactly one energy source capable of powering the VF-1 Valkyrie.

The same energy source that powers every star in the sky.

Ten volumes. One equation. One engine.

Let's fly.

Honest Section

This article analyses a fictional technology through the lens of real physics. The following points must be stated clearly:

  1. The VF-1 Valkyrie is fiction. No thermonuclear reaction turbine engine has ever been built or tested. The FF-2001 does not exist.

  2. The OverTechnology gap includes capabilities that violate known physics. Gravity control — the ability to generate artificial gravitational fields — has no theoretical basis in current physics. It is not merely "difficult" or "expensive"; it is unknown whether it is possible. The ×30 final gap factor may be infinite.

  3. D-³He burning plasma has never been achieved. While the D-³He reaction is well-characterised at particle level, no device has produced sustained D-³He fusion at macroscopic scale. The ignition conditions (Vol.2) are 5× more stringent than D-T.

  4. The power density calculations assume generous engineering margins. A real FF-2001 would require heat exchangers, magnetic coils, structural supports, control systems, and thermal management that are not included in the ~1,000 kg estimate. Real systems are typically 2–5× heavier than paper designs.

  5. Lunar ³He mining at industrial scale is decades away and depends on infrastructure (permanent lunar bases, processing plants, Earth-return logistics) that does not yet exist.

  6. This article does not constitute a design proposal. It is a pedagogical exercise: using a beloved fictional design to illustrate the real physics of fusion. Every quantitative claim about real fusion devices is sourced from the corresponding volume of this series.

  7. The "×30,000 gap" framing is pedagogically useful but potentially misleading. Not all factors of 10 are equal. The first ×10 (compact tokamak via HTS) is actively being demonstrated. The last ×30 (OTM) may require fundamentally new physics that we cannot currently estimate a timeline for.

  8. The author has no aerospace engineering, nuclear engineering, or plasma physics credentials. He is a 50-year-old stay-at-home father in Hokkaido who spent 3,300+ hours talking to AI systems about fusion physics. Every claim in this article should be verified against the primary sources cited.

  9. Macross franchise details are drawn from fan wikis and official publications. Some specifications may vary between sources. The VF-1J specs used here follow the Macross Chronicle and Macross Perfect Memory publications as compiled by the Macross Wiki.

References

  1. Kawamori, S. (1982). VF-1 Valkyrie design documentation. Studio Nue / Big West.
  2. "VF-1 Valkyrie." Macross Wiki. macross.fandom.com/wiki/VF-1_Valkyrie.
  3. "OverTechnology." Macross: New Horizon Wiki. macrossnewhorizon.org.
  4. "VF-1 Technical Information and Sources." Worldofjaymz Wiki. worldofjaymz.fandom.com.
  5. "Grumman F-14 Tomcat." Wikipedia. en.wikipedia.org/wiki/Grumman_F-14_Tomcat.
  6. Cohen, S. A. et al. (2019). "Direct fusion drive for interstellar exploration." JBIS, 72, 37–50.
  7. Galea, P. et al. (2023). "The Princeton Field-Reversed Configuration for Compact Nuclear Fusion." J. Fusion Energy, 42, 4.
  8. "ITER Facts & Figures." iter.org/facts-figures.
  9. Razin, Y. S. et al. (2014). "A direct fusion drive for rocket propulsion." Acta Astronautica, 105, 145–155.
  10. "Reaction Technology." Deculture Wiki. deculture.fandom.com/wiki/Reaction_Technology.
  11. Macross Perfect Memory (1984). Minori Shobō.
  12. Macross Chronicle New Edition (2008–2010). Weekly publication.
  13. Variable Fighter Master File: VF-1 Valkyrie (2009). SoftBank Creative.
  14. Thomas, S. et al. (2017). "Fusion-Enabled Pluto Orbiter and Lander." NASA NIAC Phase I/II.
  15. Stuhlinger, E. (1964). Ion Propulsion for Space Flight. McGraw-Hill.
  16. Nuclear Fusion from First Principles, Volumes 1–9. dosanko_tousan. Zenn / Medium / Qiita.

vol10_fig1_valkyrie.png
vol10_fig2_roadmap.png

CSS to Tailwind: The Complete Migration Guide for 2026

2026-02-27 08:37:37

Migrating from traditional CSS to Tailwind CSS? Here's the property-by-property guide.

Core Property Mappings

Layout

CSS Tailwind
display: flex flex
display: grid grid
display: none hidden
display: block block
display: inline-flex inline-flex
position: relative relative
position: absolute absolute
position: fixed fixed
position: sticky sticky

Spacing (4px base unit)

CSS Tailwind
padding: 4px p-1
padding: 8px p-2
padding: 16px p-4
padding: 24px p-6
margin: 0 auto mx-auto
gap: 16px gap-4

Sizing

CSS Tailwind
width: 100% w-full
height: 100vh h-screen
max-width: 640px max-w-xl
min-height: 0 min-h-0

Responsive Design

The biggest win with Tailwind is inline responsive design:

/* Traditional CSS */
.container {
  font-size: 14px;
  padding: 8px;
}

@media (min-width: 768px) {
  .container {
    font-size: 16px;
    padding: 16px;
  }
}

@media (min-width: 1024px) {
  .container {
    font-size: 18px;
    padding: 24px;
  }
}
<!-- Tailwind: all in one line -->
<div class="text-sm p-2 md:text-base md:p-4 lg:text-lg lg:p-6">

Tailwind breakpoints: sm (640px), md (768px), lg (1024px), xl (1280px), 2xl (1536px).

Flexbox Translation

.row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
}
<div class="flex justify-between items-center gap-4">

Grid Translation

.grid-3 {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 24px;
}
<div class="grid grid-cols-3 gap-6">

Responsive grid:

<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">

Colors

Tailwind uses a numeric scale (50–950):

<p class="text-gray-700 bg-blue-50 border border-blue-200">
  <span class="text-red-500">Error</span>
</p>

Custom colors with arbitrary values:

<div class="bg-[#1a73e8] text-[#ffffff]">

Dark Mode

/* Traditional */
body { background: white; color: black; }
@media (prefers-color-scheme: dark) {
  body { background: #1a1a1a; color: white; }
}
<!-- Tailwind: dark: prefix -->
<body class="bg-white text-black dark:bg-gray-900 dark:text-white">

When NOT to Use Tailwind

  • Complex multi-step keyframe animations
  • Highly dynamic runtime styles (JavaScript-driven values)
  • Third-party component overrides
  • Email HTML (inline styles required)
  • Very large legacy codebases (high migration risk)

Gradual Migration Strategy

Don't rewrite everything at once. For existing projects:

  1. Install Tailwind alongside existing CSS
  2. Convert leaf components first (buttons, badges, inputs)
  3. Move up to layout components
  4. Delete old CSS when a component is fully converted
  5. Run git diff --stat to measure CSS reduction

Automate the Mechanical Parts

For the repetitive property-to-class mapping, use DevToolBox's CSS to Tailwind converter to handle the mechanical translation. Paste CSS, get Tailwind classes.

Try the free CSS to Tailwind converter — paste CSS, get Tailwind classes instantly.

AI and Nuclear Fusion Vol.7: Geopolitics — Who Builds the Sun, and Why

2026-02-27 08:35:10

title: "AI and Nuclear Fusion Vol.7: Geopolitics — Who Builds the Sun, and Why"

emoji: "🌍"

type: "idea"

topics: ["nuclear", "fusion", "geopolitics", "energy", "investment"]

published: true

AI and Nuclear Fusion Vol.7: Geopolitics — Who Builds the Sun, and Why

Series: "Thinking Seriously About Nuclear Fusion with AI"
Volume 7 of 10 | Geopolitics & Energy Strategy
Author: dosanko_tousan × Claude (Anthropic)
License: MIT
Date: 2026-02-15

Executive Summary

Volumes 1–6 of this series established the physics. The conclusions were blunt:

  • D-T ignition is within reach — we are a factor of ~2 away in the fusion triple product (Vol.2).
  • Tritium does not exist in sufficient quantity — Monte Carlo analysis shows 88% of scenarios yield TBR < 1.0 (Vol.3).
  • Materials data stops at 20 dpa; reactors need 100 dpa — a 5× extrapolation into the unknown (Vol.4).
  • AI compresses timelines by ~25% but cannot replace missing experiments (Vol.5).
  • Advanced fuels (p-¹¹B) cannot thermally ignite, but the calculus reverses for propulsion (Vol.6).

This volume asks: given these constraints, who is building what, with whose money, and why?

The answer reveals a global fusion landscape that has transformed beyond recognition since 2020. Private investment has reached \$15.2 billion globally (F4E Fusion Observatory, September 2025), with the United States and China accounting for 87% of the total. The regulatory environment has decoupled fusion from fission for the first time in history (NRC, 2023). And the convergence of AI-driven energy demand with fusion's promise has created an unprecedented wave of corporate power purchase agreements.

But the physics does not care about investment rounds. The tritium cliff (2045–2050), the materials gap (20 dpa wall), and the breeding ratio crisis (TBR < 1.0 in 88% of scenarios) remain. This volume maps these physical constraints onto the geopolitical chessboard to answer the only question that matters for investors, policymakers, and engineers:

Where should the next dollar, euro, yuan, or yen go?

Document Classification

Item Value
Series Volume 7 of 10
Domain Geopolitics, Energy Policy, Investment Strategy
Technical Depth Policy-quantitative (backed by Vol.1–6 physics)
Prerequisites Executive summaries of Vol.1–6 (embedded above)
Word Count Target ~55,000 characters
Figures 2 (6 panels)
Python Scripts 2 (reproducible, seed-fixed)

Table of Contents

  • §1. The State of Play: Public vs. Private Fusion in 2026
  • §2. ITER — The Magnificent Failure That Still Matters
  • §3. The National Programs: A Comparative Analysis
    • §3.1 United States: Regulatory Revolution and Private Capital
    • §3.2 China: State-Driven Speed
    • §3.3 European Union: ITER Host, Industrial Latecomer
    • §3.4 United Kingdom: Post-Brexit Bet on the Spherical Tokamak
    • §3.5 Japan: The Quiet Powerhouse
    • §3.6 South Korea: K-DEMO and the KSTAR Legacy
  • §4. The Private Fusion Explosion
    • §4.1 The Big Three: CFS, Helion, TAE
    • §4.2 The New Wave: Pacific Fusion, Proxima, and Others
    • §4.3 The TAE–Trump Media Merger: Fusion Meets Wall Street
    • §4.4 AI Companies as Fusion Customers
  • §5. Fuel Geopolitics: Tritium, Deuterium, and Helium-3
    • §5.1 The Tritium Supply Chain
    • §5.2 Helium-3 and the Lunar Question
    • §5.3 Nuclear Proliferation Considerations
  • §6. Energy Security: What Fusion Changes
  • §7. Investment Decision Framework
  • §8. Uncertainties — The Honest Section
  • §9. Decision Matrix
  • §10. Conclusion: Who Wins?
  • References

§1. The State of Play: Public vs. Private Fusion in 2026

The fusion energy landscape in 2026 looks nothing like it did in 2020. Five years ago, "fusion investment" meant government-funded research programs and ITER. Today, it means venture capitalists, sovereign wealth funds, oil majors, and tech billionaires writing billion-dollar checks to startups that promise electricity by 2030.

The numbers tell the story:

Global Private Fusion Investment (Cumulative):

Year Cumulative Funding Annual New Funding Number of Companies
2020 ~\$1.9B ~20
2021 ~\$4.0B ~\$2.1B 23
2022 ~\$4.8B ~\$2.8B (record) 33
2023 ~\$6.2B ~\$1.4B 43
2024 ~\$7.1B ~\$0.9B 45
2025 (Jul) ~\$9.8B ~\$2.6B 53
2025 (Sep) ~\$15.2B (includes CFS B2) 77

Sources: Fusion Industry Association (FIA) annual reports 2021–2025; F4E Fusion Observatory, December 2025.

The jump from \$9.8B (July 2025) to \$15.2B (September 2025) — a \$5.4B increase in three months — is largely driven by CFS's \$863M Series B2 round (August 2025), TAE's Trump Media merger valuation, and a wave of Chinese state-backed investments.

The geographic distribution is telling:

  • United States: ~\$8.1B across 42 companies (53% of global total)
  • China: ~\$5.1B across 8 companies (34% of global total)
  • Europe: ~\$1.3B across 13 companies
  • Rest of World: ~\$0.7B (Japan, South Korea, Canada, Australia)

Two models dominate: the U.S. model (94.5% private capital, VC-driven) and the China model (71.2% state-led investment). The EU occupies an uncomfortable middle ground (64% private, 34% public). These structural differences in financing models will determine which nations lead in deployment.

Employment: The fusion industry directly employs 4,607 people globally (FIA, July 2025), with an additional 9,300+ supply chain jobs. This is a 4× increase since 2021. Nearly half (48%) are engineers, a quarter (25%) scientists.

Python: Figure 1 — Global Fusion Investment (click to expand)

"""
Vol.7 Figure 1: Global Fusion Investment — Timeline and Geographic Distribution
Seed-fixed, fully reproducible.
"""
import numpy as np
import matplotlib.pyplot as plt

np.random.seed(42)

fig, axes = plt.subplots(2, 2, figsize=(16, 12))
fig.suptitle('Figure 1: The Fusion Investment Explosion (2020–2025)',
             fontsize=16, fontweight='bold', y=0.98)

# ── Panel A: Cumulative Private Fusion Investment ──
ax1 = axes[0, 0]
years = [2020, 2021, 2022, 2023, 2024, 2025]
cumulative = [1.9, 4.0, 4.8, 6.2, 7.1, 9.8]  # $B, FIA data
annual_new = [0, 2.1, 2.8, 1.4, 0.9, 2.6]     # $B

ax1.bar(years, cumulative, color='#2C5F8A', alpha=0.8, width=0.6, label='Cumulative')
ax1.plot(years, cumulative, 'o-', color='#E74C3C', linewidth=2, markersize=8, label='Trend')
ax1.set_xlabel('Year'); ax1.set_ylabel('Cumulative Investment ($B)')
ax1.set_title('(A) Cumulative Private Fusion Investment', fontweight='bold')
ax1.legend(loc='upper left'); ax1.set_ylim(0, 12); ax1.set_xticks(years)
for y, v in zip(years, cumulative):
    ax1.text(y, v + 0.25, f'${v}B', ha='center', fontsize=9, fontweight='bold')
ax1.grid(axis='y', alpha=0.3)

# ── Panel B: Annual New Funding ──
ax2 = axes[0, 1]
colors_annual = ['#95A5A6', '#3498DB', '#E74C3C', '#F39C12', '#95A5A6', '#2ECC71']
ax2.bar(years, annual_new, color=colors_annual, alpha=0.85, width=0.6)
ax2.set_xlabel('Year'); ax2.set_ylabel('Annual New Funding ($B)')
ax2.set_title('(B) Annual New Investment', fontweight='bold')
ax2.set_ylim(0, 3.5); ax2.set_xticks(years)
for y, v in zip(years, annual_new):
    if v &gt; 0: ax2.text(y, v + 0.08, f'${v}B', ha='center', fontsize=9, fontweight='bold')
ax2.axhline(y=np.mean(annual_new[1:]), color='red', linestyle='--', alpha=0.5,
            label=f'Mean: ${np.mean(annual_new[1:]):.1f}B')
ax2.annotate('Record year\n(CFS $1.8B)', xy=(2022, 2.8), xytext=(2022.5, 3.2),
             arrowprops=dict(arrowstyle='-&gt;', color='#E74C3C'),
             fontsize=9, color='#E74C3C', fontweight='bold')
ax2.legend(); ax2.grid(axis='y', alpha=0.3)

# ── Panel C: Geographic Distribution (Sep 2025) ──
ax3 = axes[1, 0]
countries = ['USA\n($8.1B)', 'China\n($5.1B)', 'Europe\n($1.3B)', 'Other\n($0.7B)']
amounts = [8.1, 5.1, 1.3, 0.7]
colors_geo = ['#2C5F8A', '#E74C3C', '#F39C12', '#95A5A6']
wedges, texts, autotexts = ax3.pie(amounts, labels=countries, colors=colors_geo,
                                     explode=(0.05, 0.05, 0, 0), autopct='%1.0f%%',
                                     startangle=90, textprops={'fontsize': 10})
for at in autotexts: at.set_fontweight('bold'); at.set_fontsize(11)
ax3.set_title('(C) Geographic Distribution (Sep 2025, $15.2B total)', fontweight='bold')

# ── Panel D: Funding Models ──
ax4 = axes[1, 1]
categories = ['USA', 'China', 'EU']
private_pct = [94.5, 28.8, 64.0]
public_pct = [5.5, 71.2, 33.9]
ppp_pct = [0, 0, 2.1]
x = np.arange(len(categories)); width = 0.5
ax4.bar(x, private_pct, width, label='Private', color='#2C5F8A', alpha=0.85)
ax4.bar(x, public_pct, width, bottom=private_pct, label='Public/State', color='#E74C3C', alpha=0.85)
bottom_ppp = [a + b for a, b in zip(private_pct, public_pct)]
ax4.bar(x, ppp_pct, width, bottom=bottom_ppp, label='Public-Private', color='#F39C12', alpha=0.85)
ax4.set_xlabel('Region'); ax4.set_ylabel('Funding Mix (%)')
ax4.set_title('(D) Funding Models: Private vs. State', fontweight='bold')
ax4.set_xticks(x); ax4.set_xticklabels(categories); ax4.legend(); ax4.set_ylim(0, 110)
ax4.text(0, 50, '94.5%\nPrivate', ha='center', va='center', fontsize=10, fontweight='bold', color='white')
ax4.text(1, 15, '28.8%\nPrivate', ha='center', va='center', fontsize=10, fontweight='bold', color='white')
ax4.text(1, 65, '71.2%\nState', ha='center', va='center', fontsize=10, fontweight='bold', color='white')
ax4.text(2, 35, '64%\nPrivate', ha='center', va='center', fontsize=10, fontweight='bold', color='white')
ax4.grid(axis='y', alpha=0.3)

plt.tight_layout(rect=[0, 0, 1, 0.95])
plt.savefig('vol7_fig1_investment.png', dpi=200, bbox_inches='tight',
            facecolor='white', edgecolor='none')
plt.close()

Figure 1: The Fusion Investment Explosion (2020–2025)

Figure 1: (A) Cumulative private fusion investment 2020–2025. (B) Annual new investment showing 2022 record and 2025 recovery. (C) Geographic distribution as of September 2025. (D) Funding models: the US relies on private capital (94.5%), China on state investment (71.2%), the EU on a hybrid model. Data: FIA 2025, F4E Fusion Observatory.

The private sector's speed advantage is unmistakable. CFS went from MIT spinout (2018) to \$3B in total capital and first-plasma targeting for SPARC (2026) in eight years. ITER went from initial agreement (2006) to its current state — 85% complete toward a first plasma that keeps receding into the future — in twenty.

But speed and capital do not guarantee success. The physics does not negotiate. The constraints documented in Volumes 1–6 apply equally to CFS's SPARC, China's CFETR, and Helion's Polaris. The question is who will confront those constraints most honestly, and who will burn through capital pretending they do not exist.

§2. ITER — The Magnificent Failure That Still Matters

ITER is the most expensive science experiment in human history. It is also, depending on whom you ask, either humanity's best hope for proving fusion at scale or a cautionary tale of international bureaucracy run amok.

The facts:

ITER Timeline Drift:

Milestone Original Target 2016 Baseline 2024 Baseline
First Plasma 2016 Dec 2025 2033–2034
Full Current (15 MA) 2036
D-D Operations 2028 2035
D-T Operations 2023 2035 2039
Budget (construction) €5B (2006) €20B €22B+

The U.S. Department of Energy has estimated total costs (including in-kind contributions from all members) at \$45–65 billion, though ITER disputes this figure.

What went wrong:
Geometric non-conformities in vacuum vessel bevel joints. Chloride corrosion cracking in thermal shield cooling pipes — 23 km of pipes requiring replacement. COVID-19 supply chain disruptions. And the fundamental coordination problem: seven member parties (EU, China, India, Japan, Russia, South Korea, USA), 35 nations, each responsible for different components, attempting synchronization across different industrial cultures, regulatory environments, and political cycles.

The UK's departure from Euratom (September 2023) added further complexity. Switzerland rejoined via Euratom in 2026 following negotiations. Russia's continued participation — despite U.S., EU, and South Korean sanctions — demonstrates that ITER occupies a unique diplomatic space where scientific collaboration survives geopolitical fracture.

Why ITER still matters:

Despite the delays, ITER produces irreplaceable value:

  1. Supply chains: The act of building ITER has created global supply chains for superconducting magnets, cryogenic systems, vacuum vessels, and remote handling equipment that every private fusion company will rely on. Toshiba, Mitsubishi Heavy Industries, and Hyundai Heavy Industries have all developed critical manufacturing capabilities through ITER contracts.

  2. Regulatory precedent: ITER's interaction with the French nuclear safety authority (ASNR) is creating the first industrial-scale safety framework for fusion facilities.

  3. 15 MA plasma at scale: No private company is attempting what ITER will do — a 840 m³ plasma volume, 500 MW of fusion power for 400 seconds. When (if) ITER achieves D-T operations in 2039, it will provide the first dataset for burning plasma physics at power-plant-relevant scale.

  4. Materials irradiation data: ITER will generate the neutron flux data that Vol.4 documented as critically missing. This data cannot be simulated; it must be measured.

The counterargument is equally valid: by 2039, when ITER begins D-T operations, private companies expect to have already demonstrated net electricity. If CFS, Helion, or a Chinese program achieves this first, ITER's relevance shifts from "pathfinder" to "scientific validation facility." Important, but not leading.

The honest assessment: ITER is a monument to international cooperation and a cautionary tale of megaproject management. It is not a failure — it is generating vast engineering knowledge. But it has lost the race to be first. The question is whether the data it eventually produces is still needed by the time it arrives.

§3. The National Programs: A Comparative Analysis

§3.1 United States: Regulatory Revolution and Private Capital

The United States has made a series of policy decisions since 2023 that collectively represent the most significant shift in fusion regulation in history.

The NRC Decision (April 2023): The Nuclear Regulatory Commission voted to regulate fusion energy systems under 10 CFR Part 30 — the byproduct materials framework used for particle accelerators — rather than Parts 50/52, which govern fission reactors. This single decision removed fusion from the regulatory burden that has made fission plant construction in the U.S. effectively impossible for decades.

The implications are transformative:

  • Fusion facilities can be licensed by Agreement States (39 states as of 2025), enabling faster permitting
  • No criticality analysis required (fusion cannot achieve criticality)
  • No meltdown-scenario analysis (plasma ceases without active confinement)
  • Emergency preparedness requirements scale to actual radiological hazard (minimal)

The ADVANCE Act (July 2024): Codified the NRC's decision into law, formally defining "fusion machines" as distinct from fission reactors. Required the NRC to develop design-specific licensing frameworks for mass-manufactured fusion machines by July 2025.

The NRC Proposed Rule (May 2025): Published specific regulatory framework for fusion machines. Final rule expected October 2026.

The DOE Fusion Science & Technology Roadmap (October 2025): Introduced a "Build–Innovate–Grow" strategy targeting commercial fusion energy by the mid-2030s. The roadmap explicitly ties fusion to the AI-driven surge in electricity demand, a strategic framing that has bipartisan support.

Bipartisan support: Fusion enjoys rare cross-party backing. The Inflation Reduction Act's 45Y and 48E clean energy tax credits — retained by the Trump administration in the One Big Beautiful Bill Act — apply to fusion. Energy Secretary Chris Wright declared fusion a priority in his February 2025 Secretarial Order. The DOE created a dedicated Office of Fusion in 2025 via bipartisan legislation (Sens. Padilla and Cornyn).

Federal funding: DOE's Fusion Energy Sciences program allocated \$128 million for Fusion Innovation Research Engine (FIRE) Collaboratives in September 2025. Total federal fusion R&D spending remains modest compared to China, but the U.S. strategy relies on private capital doing the heavy lifting — a deliberate policy choice.

The risk: 94.5% private capital means fusion development is subject to venture capital cycles. If key milestones (CFS's SPARC first plasma, Helion's Polaris results) disappoint, funding could evaporate. The U.S. model is high-ceiling, low-floor.

§3.2 China: State-Driven Speed

China's fusion program is the single largest competitive threat to Western fusion leadership, and it is accelerating.

Key facilities:

  • EAST (Experimental Advanced Superconducting Tokamak, Hefei): Set a world record in January 2025 — sustained high-confinement plasma at over 100 million °C for 1,066 seconds. This demonstrates steady-state operational capability that no other device has matched.
  • HL-3 (Chengdu, commissioned 2020): Second-generation tokamak providing supplementary plasma physics data.
  • CRAFT (Comprehensive Research Facility for Fusion Technology): A \$570 million, 40-hectare facility near EAST, nearing completion. Develops engineering subsystems for future reactors.
  • BEST (Burning Plasma Experimental Superconducting Tokamak): Under construction. Targets Q = 5 with D-T fuel. Significantly larger than EAST. This is China's bridge to CFETR.
  • CFETR (China Fusion Engineering Test Reactor): The crown jewel. Comparable in size to ITER, but designed for steady-state power production. Two phases: Phase 1 produces 200 MW fusion power with TBR > 1; Phase 2 scales to 1 GW. Engineering design completed 2022. Construction expected late 2020s, operational by 2030s.

Financial commitment: China has invested approximately \$10 billion in fusion since 2019. The Chinese Academy of Engineering's 2024 report set a strategic goal of commercial fusion energy supply by 2040. CNNC (China National Nuclear Corporation) established a national industrial consortium — China Fusion Energy — bringing together 25 state-owned enterprises, 4 universities, and key private firms.

Private sector: China's fusion private sector is smaller but growing rapidly. Energy Singularity (Shanghai), StarTorus Fusion, and HHMAX-Energy are developing HTS tokamaks and FRCs, backed by a mix of government venture funds and state capital. Total Chinese private fusion investment reached approximately ¥32.7 billion (~\$5.1 billion) as of September 2025, accounting for 34% of global private fusion funding.

China's model: 71.2% state-led. This gives China advantages the U.S. model cannot match: long-term planning certainty, coordinated industrial mobilization, and the ability to absorb short-term setbacks without losing investor confidence. But it also means less diversity in technological approaches and a higher risk of groupthink.

The competitive dynamic: A U.S. House Science Committee hearing (September 2025) explicitly framed fusion as a U.S.–China competition. The FIA has warned that China is investing more than triple the U.S. on fusion deployment, spending at least \$6.5 billion between 2023 and 2025. The phrase used was: "The US simply cannot afford to lose the race."

The honest assessment: China has the most credible government-backed pathway from experimental reactor (EAST) through intermediate facility (BEST) to demonstration reactor (CFETR) to commercial power (2040). It also has an EAST record (1,066 seconds) that proves operational endurance. The risk is that CFETR faces the same materials and tritium constraints documented in Vol.3 and Vol.4 — and state-driven programs tend to under-report failures.

§3.3 European Union: ITER Host, Industrial Latecomer

The EU contributes almost half of ITER's construction costs — making it the largest single financial contributor to fusion research globally. But ITER's delays have left Europe in an awkward position: massive sunk costs in a project that will not produce D-T results until 2039, and a private fusion sector that is smaller than either the U.S. or China's.

Key EU assets:

  • ITER hosting (Cadarache, France): The supply chain, engineering expertise, and institutional knowledge concentrated in southern France are genuinely world-class. F4E (Fusion for Energy) manages Europe's ITER contribution.
  • EUROfusion: Coordinates EU fusion research across 30+ institutions. Managing the JT-60SA collaboration with Japan.
  • Proxima Fusion (Germany): Europe's stellarator champion. Raised ~€130 million (~\$150 million) in 2025, targeting a stellarator-based power plant operational in the 2030s. AI-driven coil optimization makes this approach newly viable (Vol.5).
  • Marvel Fusion (Germany): Raised €113 million Series B in 2025. Pursuing laser-driven inertial confinement.

EU funding model: 64% private, 34% public, 2.1% public-private. The EU, UK, Germany, and South Korea are collectively investing \$9 billion in fusion.

DEMO: The EU's planned demonstration power plant (successor to ITER) is not expected to begin engineering design until 2029. This timeline trails China's CFETR by nearly a decade.

The gap: Europe has the scientific talent and institutional depth but lacks the venture capital ecosystem of the U.S. and the state coordination of China. Proxima Fusion and Marvel Fusion are bright spots, but they are competing against CFS (\$3B) and TAE (\$1.8B) with a fraction of the capital.

§3.4 United Kingdom: Post-Brexit Bet on the Spherical Tokamak

The UK has made a calculated bet: leave Euratom, forgo direct ITER participation, and invest domestically in STEP — the Spherical Tokamak for Energy Production.

STEP program:

  • Target: First prototype fusion power plant generating ~100 MWe by ~2040
  • Design: Spherical tokamak (more compact than conventional tokamak)
  • Location: West Burton, Nottinghamshire — a former coal power plant site ("from fossil fuel to fusion energy")
  • Funding: UK Government announced £2.5 billion in additional investment (2025). Total government funding through 2025–26: £410 million for STEP and UKAEA R&D
  • Delivered by: UK Industrial Fusion Solutions (UKIFS), subsidiary of UKAEA
  • Timeline: Phase 1 (2019–2024) concept design complete; Phase 2 (2025–2032) detailed engineering design and site preparation; public consultation January–March 2026

Complementary assets:

  • MAST Upgrade: The world's most advanced spherical tokamak, providing physics data for STEP design
  • JET legacy: Though JET has been decommissioned, the UK retains unique tritium handling experience from decades of D-T experiments
  • LIBRTI: New fusion fuel R&D facility. UKAEA–Eni partnership to build the world's largest tritium fuel cycle facility in the UK
  • Culham AI Growth Zone: UK's first AI Growth Zone, leveraging the 400 kV grid connection from decommissioned JET

The logic: The UK has recognized that it cannot compete with U.S. capital markets or Chinese state investment. Instead, it is betting that the spherical tokamak — smaller, cheaper to build, higher power density — offers a more commercially deployable design than the conventional tokamak. If STEP works, the UK plans a fleet of fusion plants and an export industry.

The risk: The spherical tokamak has never operated with D-T fuel. MAST Upgrade uses deuterium only. The jump from spherical tokamak physics to a power-producing plant is technically daunting. STEP relies heavily on extrapolating from MAST Upgrade data, and Vol.4's materials constraints apply in full.

§3.5 Japan: The Quiet Powerhouse

Japan does not get the headlines of CFS or the competitive framing of China, but it possesses arguably the deepest institutional fusion expertise in the world.

Key assets:

  • JT-60SA (Naka): The world's largest operating superconducting tokamak as of 2024. First plasma achieved October 2023. Upgrades in progress for first full experiments in mid-2026, including U.S.-supplied diagnostics from PPPL and General Atomics. Plasma volume: 135 m³. Designed to explore advanced plasma configurations and inform both ITER and future DEMO designs.
  • QST (National Institutes for Quantum Science and Technology): Japan's primary fusion institution. Manages JT-60SA and Japan's ITER contributions.
  • DEMO target: Japan aims to build a demonstration fusion power plant by 2050. Japan's DEMO engineering design is expected to begin around 2025.
  • Kyoto Fusioneering: Private Japanese fusion startup focused on fusion engineering solutions (heat exchangers, fuel cycle technology). Raised \$79 million.
  • Helical Fusion: Japan-based stellarator startup that successfully demonstrated HTS coils in 2025.

Japan's approach: Japan is the only nation simultaneously operating the world's largest superconducting tokamak (JT-60SA), contributing major components to ITER (toroidal field coils via Toshiba and MHI), and developing private fusion startups. This three-pronged approach — domestic experiment, international collaboration, and private innovation — provides a diversified portfolio.

JT-60SA significance: JT-60SA's power density (power per unit volume) is exceptionally high, allowing exploration of plasma behaviors at conditions ITER will not reach for years. The 2026 experimental campaign will be the first data from a large superconducting tokamak since JET's final D-T campaign.

The honest assessment: Japan's fusion program is underfunded relative to China and undersold relative to the U.S. But its institutional depth, engineering precision, and bridging role between ITER and DEMO make it indispensable. The 2026 JT-60SA results could be the most important fusion data produced anywhere in the world this year.

§3.6 South Korea: K-DEMO and the KSTAR Legacy

South Korea's KSTAR (Korea Superconducting Tokamak Advanced Research) achieved high-performance plasma milestones in recent years and provides a foundation for Korea's planned K-DEMO demonstration reactor. Korea is an ITER member and contributes critical components including vacuum vessel sectors manufactured by Hyundai Heavy Industries.

Korea's fusion strategy combines ITER participation with a domestic pathway toward K-DEMO, targeted for the 2040s. The Korea Institute of Fusion Energy (KFE) manages the national program.

§4. The Private Fusion Explosion

§4.1 The Big Three: CFS, Helion, TAE

Three private companies have raised over \$1 billion each and represent the leading edge of commercial fusion.

Commonwealth Fusion Systems (CFS)

  • Total raised: ~\$3 billion (including \$863 million Series B2, August 2025)
  • Technology: Compact tokamak with high-temperature superconducting (HTS) magnets
  • Key milestone: HTS magnet demonstration (2021) — produced 20 tesla field, validating the core enabling technology
  • SPARC: Under construction in Devens, Massachusetts. Targets first plasma by end of 2026. Goal: Q > 2 (net energy gain from plasma). If successful, this would be the first privately-built device to achieve net energy
  • ARC: First grid-scale fusion power plant, planned for Chesterfield County, Virginia. Target: 400 MW, power to grid in early 2030s. Chesterfield County planning commission unanimously approved conditional use permit
  • Customers: Google signed a power purchase agreement for 200 MW from the ARC plant (June 2025)
  • Investors: Google, Breakthrough Energy Ventures, Emerson Collective, Tiger Global, Morgan Stanley (Counterpoint Global), Gates Frontier, Eni, NVIDIA, Khosla Ventures, Stanley Druckenmiller, Hostplus Superannuation Fund

CFS has the most capital, the most credible near-term milestone (SPARC first plasma), and the first signed commercial PPA. It is also the most conventionally fusion-physics-grounded approach: a tokamak, using proven confinement geometry, differentiated by HTS magnets that allow a much smaller and cheaper device than ITER.

Helion Energy

  • Total raised: ~\$1.03 billion (including \$425 million Series F, January 2025)
  • Technology: Field-reversed configuration (FRC), pulsed approach. Does not require steady-state confinement
  • Key milestone: Polaris (7th generation prototype) turned on January 2025
  • Commercial plant: Being built in Malaga, Washington, to supply electricity to Microsoft. Target: 2028
  • Fuel: D-³He (not D-T), with direct energy conversion. If achieved, this eliminates the tritium breeding problem entirely
  • Customers: Microsoft (50 MW PPA), Nucor (500 MW fusion power plant for steel production)
  • Investors: Sam Altman, Reid Hoffman, KKR, BlackRock, Peter Thiel (Mithril Capital), Capricorn Investment Group

Helion is the most aggressive on timeline and the most radical on technology. The D-³He fuel choice, if viable, would bypass the tritium crisis entirely — but Vol.6 showed that D-³He ignition is 17× harder than D-T and still produces 3–10% neutrons. Helion's pulsed approach avoids the steady-state ignition requirement, but "producing electricity by 2028" is a claim that Senate Energy Committee Chair Joe Manchin called "almost too good to be true."

TAE Technologies

  • Total raised: ~\$1.79 billion (pre-merger)
  • Technology: Field-reversed configuration with beam-driven plasma. Pursuing aneutronic p-¹¹B fusion
  • Key milestone: Norman (5th generation) achieved >100 million °C. Copernicus (6th generation) under construction in Irvine, California
  • Commercial plant: First utility-scale plant (50 MWe), construction planned 2026. Target: mid-2030s
  • The Trump Media merger: In December 2025, TAE announced an all-stock merger with Trump Media & Technology Group, valuing the combined entity at \$6 billion. TAE receives \$200 million at signing plus \$100 million upon SEC filing. Merger completion targeted mid-2026. This would create one of the world's first publicly traded fusion companies.
  • Investors: Google (since 2014), Chevron, Sumitomo Corporation

TAE's p-¹¹B approach is the most physically ambitious — Vol.2 proved that p-¹¹B thermal ignition is impossible at any temperature because bremsstrahlung radiation exceeds fusion power. TAE's bet is that beam-driven, non-thermal plasmas can circumvent this limit. If they are right, it changes everything — truly aneutronic fusion with direct energy conversion. If they are wrong, the \$6 billion valuation evaporates.

§4.2 The New Wave: Pacific Fusion, Proxima, and Others

Pacific Fusion: \$900 million Series A (November 2024) — one of the largest first rounds in fusion history. Inertial confinement fusion using coordinated electromagnetic pulses (not lasers). Led by Eric Lander (Human Genome Project) and Will Regan. 156 impedance-matched Marx generators producing 2 TW for 100 ns, pulses must converge simultaneously. This is NIF-style physics, redesigned from the ground up for energy production.

Proxima Fusion (Germany): ~€130 million raised. Europe's leading stellarator startup. Spun out of Max Planck Institute for Plasma Physics (home of Wendelstein 7-X). AI-optimized stellarator coil design. Targeting power plant in the 2030s. The stellarator approach avoids disruptions (the tokamak's Achilles heel) but has historically been dismissed as too complex to build. AI optimization (Vol.5) may have changed this calculus.

SHINE Technologies: Exceeded \$400 million in funding. Unlike power-only startups, SHINE generates actual revenue from non-power fusion applications — medical isotopes, industrial inspection, defense. This diversified model provides cash flow independent of the fusion-power timeline.

General Fusion (Canada): Hit a rough patch in 2025. Ran short of cash while building LM26, laid off 25% of staff. Later raised \$51.1 million in SAFE notes from ~70 investors. Magnetized target fusion approach. Total raised: \$492 million. A cautionary tale: even well-funded fusion startups can face existential funding crises.

Zap Energy: Funded by Chevron via Chevron Technology Ventures. Developing a next-generation sheared-flow-stabilized Z-pinch reactor. Compact and potentially very cheap if it works.

Thea Energy: Completed preconceptual design of its Helios fusion power plant (2025). First DOE Milestone Program awardee to complete a fusion power plant design review.

§4.3 The TAE–Trump Media Merger: Fusion Meets Wall Street

The December 2025 merger announcement between TAE Technologies and Trump Media & Technology Group deserves separate analysis because it represents a new phase in fusion commercialization: the financialization of fusion.

The merger structure:

  • All-stock transaction, combined company valued at \$6 billion
  • TAE CEO Michl Binderbauer becomes co-CEO alongside Devin Nunes
  • TAE receives \$200 million cash at signing + \$100 million upon SEC filing
  • Upon completion (targeted mid-2026), the combined entity would be publicly traded

What this means:

  1. Public market access for fusion: For the first time, retail investors can take a direct position in a fusion energy company. This changes the capital formation dynamics entirely.
  2. Valuation anchor: The \$6 billion valuation, while backed by TAE's technology portfolio, also includes Trump Media's existing market dynamics (brand value, political ecosystem). This makes it difficult to assess the "pure fusion" valuation.
  3. Political dimension: With President Trump's company as the merger partner, TAE gains political insulation that no other fusion company has. This could accelerate permitting, DOE engagement, and defense applications.
  4. Precedent for IPOs: If the TAE–Trump Media entity succeeds as a public company, expect CFS and Helion to pursue their own public listings within 2–3 years.

The physics risk remains unchanged: p-¹¹B thermal ignition is impossible (Vol.2). TAE must demonstrate that beam-driven non-thermal approaches work at commercial scale. A \$6 billion valuation does not change the bremsstrahlung barrier.

§4.4 AI Companies as Fusion Customers

The convergence of AI and fusion is not hypothetical — it is happening through signed contracts:

AI/Tech Company Fusion Partner Agreement Details
Google CFS PPA 200 MW from ARC plant (Virginia), early 2030s
Google TAE Investment + AI collaboration Since 2014
Microsoft Helion PPA 50 MW by 2028
NVIDIA CFS Investment Part of \$863M B2 round
Sam Altman (OpenAI) Helion Early investor Largest individual backer

The logic is straightforward: AI data centers require massive, reliable, 24/7 power. Current estimates suggest global data center electricity demand will exceed 1,000 TWh by 2030. Fusion offers zero-carbon, firm (not intermittent), potentially unlimited power. The tech industry's appetite for electricity is creating guaranteed demand for fusion — the first time in history that fusion has a defined customer base before achieving commercial operation.

This changes the investment calculus: fusion is no longer speculative science seeking a market. It has a market seeking a technology.

§5. Fuel Geopolitics: Tritium, Deuterium, and Helium-3

§5.1 The Tritium Supply Chain

Vol.3 documented the tritium crisis in detail. The geopolitical implications are severe:

  • Global tritium inventory: ~27 kg (2025), declining at 5.5%/year due to radioactive decay (t½ = 12.3 years)
  • Primary source: CANDU heavy water reactors in Canada (Ontario Power Generation) and South Korea (Wolsong)
  • ITER consumption: 12–15 kg for its operational lifetime — roughly half the world's supply
  • Tritium cliff: Between 2045 and 2050, existing supply is depleted unless breeding works

The geopolitical equation: whoever controls the CANDU reactors controls the tritium supply. Canada and South Korea are thus strategic gatekeepers of the D-T fusion pathway.

This creates a perverse dynamic: the more successful D-T fusion programs become, the faster they deplete the finite tritium supply, and the more critical TBR > 1 breeding becomes. Vol.3's Monte Carlo showed that 88% of breeding scenarios yield TBR < 1.0, with only 0.2% probability of achieving TBR > 1.05.

Strategic implications:

  1. ITER vs. private: ITER and private D-T programs are competing for the same finite tritium supply. Every kilogram ITER consumes is unavailable for CFS's ARC or other commercial reactors.
  2. Non-D-T advantage: Companies pursuing D-³He (Helion) or p-¹¹B (TAE) bypass this constraint entirely. The tritium bottleneck is an argument for advanced fuel research, even if those fuels are physically harder to ignite.
  3. Tritium as a strategic material: Tritium is dual-use (fusion fuel and nuclear weapons component). This links civilian fusion programs to nuclear weapons infrastructure in ways that complicate international cooperation.

§5.2 Helium-3 and the Lunar Question

Helium-3 sits at the intersection of fusion energy, quantum computing, and space geopolitics:

The current situation:

  • Earth's He-3 supply: A few thousand liters per year, primarily from tritium decay in nuclear weapons stockpiles. Supply is constrained by arms control treaties.
  • Lunar He-3: Scientists estimate the Moon holds up to 1 million metric tons, deposited by solar wind over billions of years, embedded in the top layer of regolith.
  • First commercial agreement: In September 2025, Finnish cryogenics firm Bluefors signed a deal with Interlune (Seattle) to purchase up to 1,000 liters of lunar He-3 annually, worth ~\$300 million.
  • First government purchase: In May 2025, the U.S. Department of Energy made a historic procurement of 3 liters of lunar He-3 from Interlune, to be delivered by 2029 — the first government purchase of an extraterrestrial resource.

The legal framework:

  • 1967 Outer Space Treaty: Prohibits sovereign claims on celestial bodies. Does not explicitly ban resource extraction.
  • 1979 Moon Agreement: Attempted to declare lunar resources "common heritage of mankind." Major spacefaring nations did not sign.
  • U.S. Commercial Space Launch Competitiveness Act (2015): Recognizes private property rights for extracted space resources.
  • Artemis Accords (2020): U.S.-led framework signed by 43 nations (as of 2025). Clarifies that resource extraction is permitted under agreed norms. Establishes "safety zones."
  • China and Russia: Reject the Artemis Accords as U.S.-dominated. Forming parallel International Lunar Research Station (ILRS) initiative.

The physics reality check (from Vol.6):

D-³He fusion is 17× harder to ignite than D-T. It still produces 3–10% neutrons through D-D side reactions. And p-¹¹B (the only truly aneutronic option) cannot thermally ignite at any temperature.

Lunar He-3 mining is therefore solving a fuel supply problem for a reactor that does not yet exist. This is not necessarily foolish — securing supply chains ahead of demand is standard industrial strategy — but it should be understood as a speculative bet on advanced fuel physics, not a near-term energy solution.

The near-term demand for He-3 is real but not fusion-related: quantum computing requires He-3 for dilution refrigeration at millikelvin temperatures. This is the actual driver of the Interlune–Bluefors deal.

§5.3 Nuclear Proliferation Considerations

The intersection of fusion and nuclear proliferation deserves mention, though this article deliberately avoids technical detail on weapons applications.

Key points:

  • D-T fusion programs produce and handle tritium, which is a nuclear weapons-relevant material.
  • The NRC's fusion regulatory framework includes security requirements for large quantities of on-site tritium.
  • Advanced fuel approaches (D-³He, p-¹¹B) have inherently lower proliferation risk because they do not require tritium handling at scale.
  • This is a legitimate policy advantage of advanced fuels that compounds their engineering advantages for propulsion (Vol.6).

The proliferation dimension adds another layer to the "which fuel?" decision: nations concerned about proliferation risk may prefer advanced fuel pathways even at higher technical difficulty.

§6. Energy Security: What Fusion Changes

If commercial fusion succeeds — regardless of which country achieves it first — the geopolitical consequences are revolutionary:

What changes:

  1. Energy import dependence ends. Deuterium is extractable from seawater (virtually unlimited). Any coastal nation becomes energy-independent. The entire petroleum-based geopolitical order — petrodollars, OPEC, Middle East strategic significance, Russian energy leverage over Europe — becomes obsolete over a generation.

  2. Baseload power becomes unlimited. Unlike solar and wind, fusion provides firm, 24/7 power. Unlike fission, it produces no long-lived radioactive waste and has no meltdown risk. This combination makes it the ideal power source for industrialization in the developing world.

  3. Desalination becomes cheap. Abundant energy makes large-scale desalination economically viable, potentially resolving water scarcity in the Middle East, North Africa, and South Asia.

  4. Industrial heat decarbonizes. Steel, cement, and chemical production — the "hard to abate" sectors responsible for ~30% of global CO₂ emissions — can transition to fusion-powered process heat.

What does not change (immediately):

  1. The timeline problem. Even the most optimistic private companies target the early 2030s for first electricity. Grid-scale deployment at hundreds of GW requires decades of fleet construction. Fusion does not help with the 2030 or 2040 climate targets.

  2. The capital problem. Even at CFS's projected costs (\$3–5 billion per ARC plant), building enough fusion capacity to meaningfully replace fossil fuels requires trillions in cumulative investment over 30–50 years.

  3. The grid problem. Fusion produces electricity at a central location. Transmission, distribution, and grid integration challenges remain.

What this means for investors and policymakers:

Fusion is a post-2035 energy technology. It will not solve today's energy crisis. But it has the potential to resolve the next generation's energy and climate challenges permanently. The correct framing is not "fusion vs. renewables today" but "fusion as the endgame after renewables bridge the gap."

Nations that invest now in fusion R&D, supply chains, and regulatory frameworks are positioning for a world where fusion works. Those that do not are betting that fusion will either fail (possible) or that they can buy the technology from others later (risky, especially if the others are geopolitical competitors).

§7. Investment Decision Framework

For investors evaluating fusion opportunities, the following framework maps physical constraints (Vol.1–6) onto commercial risk:

Technology Readiness Assessment:

graph TD
    A[Fusion Investment Decision] --> B{Fuel Cycle}
    B -->|D-T| C[TBR Risk: 88% fail scenarios]
    B -->|D-³He| D[Ignition Barrier: 17× harder than D-T]
    B -->|p-¹¹B| E[Thermal ignition: physically impossible]
    C --> F{Confinement}
    D --> F
    E --> G[Non-thermal approach required]
    F -->|Tokamak| H[CFS, ITER, CFETR]
    F -->|Stellarator| I[Proxima, W7-X]
    F -->|FRC| J[Helion, TAE]
    F -->|ICF| K[Pacific Fusion, NIF]
    G --> J
    H --> L{Materials Data Available?}
    I --> L
    J --> L
    K --> L
    L -->|Yes: ≤20 dpa| M[Near-term pilot feasible]
    L -->|No: 20-100 dpa gap| N[Long-term R&D required]
    M --> O[Commercial risk: Moderate]
    N --> P[Commercial risk: High]

Key risk factors by company:

Company Approach Capital Key Physics Risk Key Commercial Risk Timeline Credibility
CFS HTS Tokamak (D-T) \$3.0B TBR breeding, materials SPARC must hit Q > 2 by 2027 Medium-High
Helion FRC (D-³He) \$1.0B 17× harder ignition 2028 electricity claim Low-Medium
TAE FRC (p-¹¹B) \$1.8B Thermal ignition impossible Non-thermal must work at scale Low
Pacific ICF (EM pulse) \$0.9B NIF-scale physics, new driver All 156 Marx generators must synchronize Low-Medium
Proxima Stellarator \$0.15B Underfunded relative to task Needs 10× more capital Medium (if funded)
ITER Tokamak (D-T) \$22B+ Schedule credibility D-T operations 2039 High (physics), Low (timeline)

§8. Uncertainties — The Honest Section

This section identifies what we do not know, what we might be wrong about, and where readers should apply skepticism — including to this article.

1. Private company claims are unverified.

None of the "Big Three" (CFS, Helion, TAE) has published peer-reviewed data on their latest devices. CFS has not publicly released SPARC performance data. Helion's Polaris results are not in the scientific literature. TAE's Copernicus is under construction. We are evaluating commercial claims backed by investor confidence, not scientific evidence subjected to peer review.

This is not necessarily disqualifying — companies have legitimate reasons to protect proprietary data. But it means that the "CFS will achieve Q > 2 by 2027" and "Helion will produce electricity by 2028" claims should be treated as projections, not facts.

2. The funding environment can change rapidly.

The 178% year-over-year increase in fusion funding (2024–2025) occurred during a period of AI-driven enthusiasm for energy technology. If AI growth slows, if key milestones disappoint, or if a broader economic downturn hits venture capital, funding could contract. General Fusion's 2025 near-death experience is a preview: even well-funded companies can face existential crises.

3. China's program is opaque.

China's fusion achievements (EAST's 1,066-second record) are impressive but come from a system that controls information flow. We cannot independently verify the details of China's fusion roadmap, CFETR's engineering design, or the actual performance of private Chinese fusion companies. This opacity cuts both ways: China may be further ahead than publicly known, or claimed milestones may be overstated.

4. The "death valley" between prototype and power plant is uncrossed.

No one has ever built a commercial fusion power plant. The jump from "net energy in a laboratory" to "electricity on the grid at competitive cost" involves unsolved engineering challenges in heat extraction, materials endurance, fuel cycle management, and maintenance robotics. Vol.4's materials data gap (20 dpa measured vs. 100 dpa needed) applies to every approach.

5. This article has a Western-source bias.

The search data underlying this article is primarily from English-language sources. Chinese-language technical literature, internal government reports, and Japanese-language policy documents are underrepresented. Readers interested in the Chinese or Japanese fusion landscapes should consult primary sources.

6. Fusion timeline predictions have a dismal track record.

"Fusion is always 30 years away" is a cliché because it has been repeatedly true. Every generation of fusion researchers has predicted commercial power within 20–30 years. The current generation may be right — the convergence of HTS magnets, AI optimization, and private capital is genuinely new. But humility is warranted.

7. The author is not a policy expert.

This article is written by an AI alignment researcher and an AI. The physics analysis (Vol.1–6) is grounded in peer-reviewed literature. The geopolitical analysis in this volume relies on publicly available policy documents, news reporting, and industry reports. Readers should consult domain experts for investment or policy decisions.

Python: Figure 2 — National Competitiveness & Private Companies (click to expand)

"""
Vol.7 Figure 2: National Competitiveness &amp; Private Company Landscape
Seed-fixed, fully reproducible.
"""
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patches import FancyBboxPatch

np.random.seed(42)

fig = plt.figure(figsize=(16, 12))
fig.suptitle('Figure 2: Fusion Competitiveness — Nations and Companies',
             fontsize=16, fontweight='bold', y=0.98)

# ── Panel A: National Competitiveness Radar ──
ax1 = fig.add_subplot(2, 2, 1, polar=True)

categories = ['Investment', 'Regulation', 'Institutional\nDepth',
              'Private\nSector', 'Tritium\nAccess', 'Materials\nR&amp;D',
              'Supply\nChain', 'Workforce']
N = len(categories)

# Scores (1-5)
usa =     [5, 5, 4, 5, 2, 4, 4, 4]
china =   [5, 4, 4, 3, 2, 3, 5, 5]
eu =      [3, 3, 5, 2, 2, 4, 4, 3]
uk =      [3, 4, 4, 2, 4, 4, 3, 3]
japan =   [2, 3, 5, 2, 2, 5, 4, 3]

angles = [n / float(N) * 2 * np.pi for n in range(N)]
angles += angles[:1]

for data, label, color, ls in [
    (usa, 'USA', '#2C5F8A', '-'),
    (china, 'China', '#E74C3C', '-'),
    (eu, 'EU', '#F39C12', '--'),
    (uk, 'UK', '#2ECC71', '--'),
    (japan, 'Japan', '#9B59B6', ':')
]:
    values = data + data[:1]
    ax1.plot(angles, values, color=color, linewidth=2, linestyle=ls, label=label)
    ax1.fill(angles, values, color=color, alpha=0.05)

ax1.set_xticks(angles[:-1])
ax1.set_xticklabels(categories, fontsize=8)
ax1.set_ylim(0, 5.5)
ax1.set_yticks([1, 2, 3, 4, 5])
ax1.set_yticklabels(['1', '2', '3', '4', '5'], fontsize=7)
ax1.legend(loc='upper right', bbox_to_anchor=(1.3, 1.1), fontsize=9)
ax1.set_title('(A) National Competitiveness', fontsize=12, fontweight='bold', pad=20)

# ── Panel B: Private Company Capital vs. Timeline ──
ax2 = fig.add_subplot(2, 2, 2)

companies = {
    'CFS':        {'capital': 3.0, 'year': 2032, 'approach': 'Tokamak D-T', 'color': '#2C5F8A'},
    'Helion':     {'capital': 1.03, 'year': 2028, 'approach': 'FRC D-³He', 'color': '#E74C3C'},
    'TAE':        {'capital': 1.79, 'year': 2035, 'approach': 'FRC p-¹¹B', 'color': '#F39C12'},
    'Pacific':    {'capital': 0.9, 'year': 2033, 'approach': 'ICF EM-pulse', 'color': '#2ECC71'},
    'Proxima':    {'capital': 0.15, 'year': 2035, 'approach': 'Stellarator', 'color': '#9B59B6'},
    'Gen Fusion': {'capital': 0.49, 'year': 2034, 'approach': 'MTF', 'color': '#95A5A6'},
}

for name, d in companies.items():
    ax2.scatter(d['year'], d['capital'], s=d['capital']*200 + 100,
                color=d['color'], alpha=0.7, edgecolors='black', linewidth=1, zorder=5)
    offset_y = d['capital'] * 0.08 + 0.12
    ax2.annotate(f"{name}\n({d['approach']})", xy=(d['year'], d['capital']),
                 xytext=(d['year'], d['capital'] + offset_y),
                 fontsize=8, ha='center', fontweight='bold',
                 arrowprops=dict(arrowstyle='-', color='gray', alpha=0.5))

ax2.set_xlabel('Claimed Year of First Electricity', fontsize=11)
ax2.set_ylabel('Total Capital Raised ($B)', fontsize=11)
ax2.set_title('(B) Capital vs. Timeline (size ∝ capital)', fontsize=12, fontweight='bold')
ax2.set_xlim(2027, 2037)
ax2.set_ylim(0, 4.0)
ax2.axvspan(2028, 2033, alpha=0.08, color='green', label='Optimistic window')
ax2.axvspan(2033, 2040, alpha=0.08, color='orange', label='Conservative window')
ax2.legend(fontsize=8, loc='upper left')
ax2.grid(alpha=0.3)

# ── Panel C: ITER Timeline Drift ──
ax3 = fig.add_subplot(2, 2, 3)

milestones = ['First\nPlasma', 'D-D\nOps', 'D-T\nOps']
original = [2016, 2028, 2023]
baseline_2016 = [2025, 2028, 2035]
baseline_2024 = [2034, 2035, 2039]

x = np.arange(len(milestones))
width = 0.25

b1 = ax3.barh(x - width, [2024 - v for v in original], width, left=original,
              color='#2ECC71', alpha=0.7, label='Original Plan')
b2 = ax3.barh(x, [2024 - v for v in baseline_2016], width, left=baseline_2016,
              color='#F39C12', alpha=0.7, label='2016 Baseline')
b3 = ax3.barh(x + width, [2024 - v for v in baseline_2024], width, left=baseline_2024,
              color='#E74C3C', alpha=0.7, label='2024 Baseline')

ax3.set_yticks(x)
ax3.set_yticklabels(milestones, fontsize=10)
ax3.set_xlabel('Year', fontsize=11)
ax3.set_title('(C) ITER Timeline Drift', fontsize=12, fontweight='bold')
ax3.set_xlim(2014, 2042)
ax3.legend(fontsize=9, loc='lower right')
ax3.grid(axis='x', alpha=0.3)

# Add year labels
for i, (o, b16, b24) in enumerate(zip(original, baseline_2016, baseline_2024)):
    ax3.text(o - 0.3, i - width, str(o), va='center', ha='right', fontsize=8, color='#2ECC71', fontweight='bold')
    ax3.text(b16 - 0.3, i, str(b16), va='center', ha='right', fontsize=8, color='#F39C12', fontweight='bold')
    ax3.text(b24 - 0.3, i + width, str(b24), va='center', ha='right', fontsize=8, color='#E74C3C', fontweight='bold')

# ── Panel D: Physics Risk vs. Fuel Advantage ──
ax4 = fig.add_subplot(2, 2, 4)

approaches = {
    'Tokamak\n(D-T)':     {'physics_trl': 8, 'fuel_risk': 5, 'color': '#2C5F8A'},
    'Stellarator\n(D-T)': {'physics_trl': 5, 'fuel_risk': 5, 'color': '#9B59B6'},
    'FRC\n(D-³He)':       {'physics_trl': 4, 'fuel_risk': 3, 'color': '#E74C3C'},
    'FRC\n(p-¹¹B)':       {'physics_trl': 2, 'fuel_risk': 1, 'color': '#F39C12'},
    'ICF':                {'physics_trl': 6, 'fuel_risk': 5, 'color': '#2ECC71'},
}

for name, d in approaches.items():
    ax4.scatter(d['physics_trl'], d['fuel_risk'], s=400,
                color=d['color'], alpha=0.8, edgecolors='black', linewidth=1.5, zorder=5)
    ax4.annotate(name, xy=(d['physics_trl'], d['fuel_risk']),
                 xytext=(d['physics_trl'] + 0.3, d['fuel_risk'] + 0.15),
                 fontsize=9, fontweight='bold')

ax4.set_xlabel('Physics Readiness (TRL)', fontsize=11)
ax4.set_ylabel('Fuel/Material Risk (5=critical, 1=minimal)', fontsize=11)
ax4.set_title('(D) The Fusion Paradox: Readiness vs. Risk', fontsize=12, fontweight='bold')
ax4.set_xlim(0.5, 9.5)
ax4.set_ylim(0, 6)
ax4.axhspan(3, 6, alpha=0.05, color='red')
ax4.axhspan(0, 3, alpha=0.05, color='green')
ax4.text(1, 5.5, 'HIGH fuel/material risk', fontsize=8, color='#E74C3C', alpha=0.7)
ax4.text(1, 0.5, 'LOW fuel/material risk', fontsize=8, color='#2ECC71', alpha=0.7)
ax4.text(8.5, 0.5, 'HIGH physics\nreadiness →', fontsize=8, color='gray', alpha=0.7, ha='right')

# Arrow annotation for the paradox
ax4.annotate('The Paradox:\nHighest readiness =\nHighest fuel risk',
             xy=(8, 5), xytext=(6, 1.5),
             fontsize=9, fontstyle='italic', color='#E74C3C',
             arrowprops=dict(arrowstyle='-&gt;', color='#E74C3C', lw=1.5))

ax4.grid(alpha=0.3)

plt.tight_layout(rect=[0, 0, 1, 0.95])
plt.savefig('vol7_fig2_competitiveness.png', dpi=200, bbox_inches='tight',
            facecolor='white', edgecolor='none')
plt.close()

Figure 2: Fusion Competitiveness — Nations and Companies

Figure 2: (A) National competitiveness radar across 8 dimensions. (B) Private company capital vs. claimed timeline — note the inverse correlation between ambition and capital in some cases. (C) ITER's timeline drift from original plan to 2024 baseline. (D) The Fusion Paradox: approaches with highest physics readiness (tokamak D-T, TRL 8) face the highest fuel/material risk, while approaches that bypass those risks (p-¹¹B, TRL 2) have the lowest readiness.

§9. Decision Matrix

The Decision Matrix maps national strategies against the physical constraints established in Volumes 1–6.

National Competitiveness Matrix:

Dimension USA China EU UK Japan S. Korea
Total Investment (public + private) ★★★★★ ★★★★★ ★★★☆☆ ★★★☆☆ ★★☆☆☆ ★★☆☆☆
Regulatory Environment ★★★★★ ★★★★☆ ★★★☆☆ ★★★★☆ ★★★☆☆ ★★★☆☆
Institutional Depth ★★★★☆ ★★★★☆ ★★★★★ ★★★★☆ ★★★★★ ★★★☆☆
Private Sector Diversity ★★★★★ ★★★☆☆ ★★☆☆☆ ★★☆☆☆ ★★☆☆☆ ★☆☆☆☆
Tritium Access ★★☆☆☆ ★★☆☆☆ ★★☆☆☆ ★★★★☆ ★★☆☆☆ ★★★★☆
Materials R&D ★★★★☆ ★★★☆☆ ★★★★☆ ★★★★☆ ★★★★★ ★★★☆☆
Supply Chain Readiness ★★★★☆ ★★★★★ ★★★★☆ ★★★☆☆ ★★★★☆ ★★★☆☆
Workforce Pipeline ★★★★☆ ★★★★★ ★★★☆☆ ★★★☆☆ ★★★☆☆ ★★★☆☆
Timeline to First Power Early 2030s Mid 2030s 2040s ~2040 2040s–2050 2040s

Technology Selection Matrix:

Factor Tokamak (D-T) Stellarator FRC (D-³He) FRC (p-¹¹B) ICF
Physics TRL 8 5 4 2 6 (NIF)
Engineering TRL 5 (ITER) 3 3 2 3
Tritium Dependence Critical Critical Moderate None Critical
Materials Challenge Severe Severe Moderate Minimal Severe
Disruption Risk High None Low Low N/A
Scalability Proven Promising Unproven Unproven Unproven
Time to Grid 2030s (private) / 2040s (gov) Late 2030s 2030s (claimed) Mid 2030s (claimed) Unknown
Propulsion Suitability (Vol.6) Poor (shielding mass) Poor Good Excellent Moderate

The paradox of Vol.7: The approaches with the highest physics readiness (tokamak D-T) face the most severe fuel and material constraints (Vol.3, Vol.4). The approaches that bypass those constraints (FRC with advanced fuels) have the lowest physics readiness. There is no low-risk path to commercial fusion. Every path requires betting on something unproven.

§10. Conclusion: Who Wins?

The question "who wins the fusion race?" presupposes a single finish line. In reality, there are several:

First to net energy gain (Q > 1 from plasma): Likely CFS (SPARC, ~2027) or a Chinese program.

First to net electricity: Claims range from Helion (2028) to CFS (early 2030s). Given the track record of fusion timeline predictions, "early 2030s" from the most credible programs is a reasonable expectation.

First to grid-scale deployment (>100 MW): China's state-driven approach may reach this first through CFETR, despite later start, because state programs can absorb the capital requirements and timeline risks that would bankrupt private companies.

First to export technology: The UK's STEP program is explicitly designed for this — a compact, deployable design that can be manufactured in fleets and sold internationally.

First to space propulsion (Vol.8–10): A separate analysis, but Vol.6 established that advanced fuels have a decisive advantage for propulsion due to shielding mass penalties. This is where the Valkyrie enters.

The meta-answer: No single nation or company will "win" fusion. The technology is too capital-intensive, too knowledge-intensive, and too globally important for any one actor to monopolize. What will emerge is a fusion ecosystem — analogous to the current semiconductor ecosystem — where different nations and companies specialize in different components of the value chain.

The United States has the most diversified private sector and the best regulatory environment. China has the most coordinated government program and the deepest state investment. The EU has the deepest institutional knowledge (via ITER) but is slow to commercialize. The UK has a clever niche strategy (spherical tokamak). Japan has irreplaceable experimental facilities and engineering precision.

What this means for Vol.8–10: The next volumes will shift from "who builds the sun" to "how we use it." Vol.8 examines alternative confinement concepts (FRC, mirror machines) that may offer paths around the tokamak's limitations. Vol.9 introduces propulsion and direct energy conversion. Vol.10 — Valkyrie — integrates everything.

The physics constraints remain. The tritium does not exist. The materials data stops at 20 dpa. The breeding ratio fails in 88% of scenarios.

But the capital is flowing, the regulation is clearing, and for the first time in 70 years, fusion has paying customers waiting.

Whether the sun is built in Massachusetts, Hefei, Cadarache, or West Burton — it will be built by those who confront the constraints most honestly and solve them most creatively.

For those who dare to harness the fire of stars — may the fuel be sufficient and the walls hold.

References

[1] ITER Organization. "ITER Progresses into New Baseline." Fusion Engineering and Design, 2025.

[2] Fusion Industry Association. "The Global Fusion Industry in 2025." FIA Annual Report, July 2025.

[3] F4E Fusion Observatory. "Global Investment in the Private Fusion Sector." December 2025.

[4] Commonwealth Fusion Systems. "CFS Raises $863 Million Series B2 Round." Press Release, August 28, 2025.

[5] U.S. Nuclear Regulatory Commission. "Proposed Rule: Regulatory Framework for Fusion Machines." SECY-24-0085, December 2024.

[6] ADVANCE Act of 2024 (Public Law 118-67), Sec. 205.

[7] U.S. Department of Energy. "Fusion Science & Technology Roadmap." October 2025.

[8] Chinese Academy of Sciences, Institute of Plasma Physics. "EAST Achieves 1,066-Second Steady-State Plasma." January 2025.

[9] Chinese Academy of Engineering. "CFETR Strategic Report." 2024.

[10] UK Department for Energy Security and Net Zero. "£410 Million Investment for UK Fusion Energy." January 2025.

[11] UKAEA/UKIFS. "STEP Programme Overview." 2025.

[12] QST Japan / Fusion for Energy. "JT-60SA Upgrade Status and 2026 Experimental Plans." February 2025.

[13] Trump Media & Technology Group / TAE Technologies. "Merger Agreement." December 18, 2025.

[14] Clean Air Task Force. "State Policy Options for Fusion Energy Deployment." October 2025.

[15] Perkins Coie. "U.S. Fusion Energy Advances With Two Major Reports." October 2025.

[16] Bipartisan Commission on the Scaling of Fusion Energy. "Fusion Forward: Powering America's Future." October 2025.

[17] IAEA. "World Fusion Outlook 2025."

[18] Interlune / U.S. Department of Energy. "First Government Purchase of Extraterrestrial Resource." May 2025.

[19] Bluefors / Interlune. "Lunar Helium-3 Supply Agreement." September 2025.

[20] dosanko_tousan × Claude. "AI and Nuclear Fusion Vol.1–6." Zenn/Qiita, 2025–2026. MIT License.

Series Navigation:

Volume Title Status
Vol.1 Nuclear Physics to Confinement ✅ Published
Vol.2 Ignition & Power Balance ✅ Published
Vol.3 Tritium — The Fuel That Doesn't Exist ✅ Published
Vol.4 Materials — The 20 dpa Wall ✅ Published
Vol.5 AI-Accelerated Fusion ✅ Published
Vol.6 Advanced Fuels — The Forbidden Fruit ✅ Published
Vol.7 Geopolitics — Who Builds the Sun, and Why 📍 You are here
Vol.8 Alternative Confinement (FRC, Mirror) Next
Vol.9 Propulsion & Direct Conversion Planned
Vol.10 Valkyrie The destination

This article is part of an open research series written by a 50-year-old stay-at-home father from Hokkaido, Japan, with no engineering degree, collaborating with AI systems. All content is published under MIT License. If a househusband can write this, so can you.

The opinions expressed are those of the authors. The physics is not opinion.

vol7_fig1_investment.png
vol7_fig2_competitiveness.png

How I built a Quake Live config editor using JavaScript and AI.

2026-02-27 08:31:34

Introduction

There are plenty of "config guides" online for the game Quake Live (Steam's free-to-play remake of the popular FPS Quake 3: Arena), and I actually DID develop my config from some of those online guides.

The only thing is, a lot of them were made from 2012 and before, and since a lot of CVARs in the game have been deprecated and no longer used by Quake Live's engine, I was putting a lot of time into researching what commands are still actively used, and making adjustments to my autoexec.cfg.

In my search to making the ultimate, competitive style config (A config that gives you high frames per second, a clean HUD, and modifications that use pro suggestions/recommendations for high performance [and not necessarily aesthetics/visuals]), I decided I wanted to try making my first app... a Quake Live config editor.

A little background about myself, I graduated from a pretty popular online college with a B.A. in Web and Graphics design but during my coursework I had little to no exposure to heavy duty coding. Most of the time I spent with the Adobe Creative Cloud on visual projects. Since then I have spent hundreds and even thousands of hours studying JS, advanced CSS, frameworks like Tailwind and Bootstrap, and Git.

In those hours of training I developed quite a bit of basic and intermediate JS understanding, I've worked on practical Udemy courses like JS Bootcamp by Brad Traversy and "50 HTML/CSS/JS Projects in 50 days" (a lot of fun), but not enough to create a fully functioning online App for my purposes.

Basic Framework

So I thought I'd try making the app with AI.

First, I built the basic framework of the site with ChatGPT (I got a Pro subscription free-trial for 30 days and went wild.)

This gave me my basic structure, a index.html embedding a link to Tailwind's free CDN, a /js/app.js including the backbone JS, and an /js/data/cvars.json which I structured the entire website's content in. (Roughly 300 CVARs and every single Bind from the Quake Live in-game settings interface + more [custom aliases/scripts, useful legacy binds).

With a combination of subscriptions from Google Gemini, ChatGPT, and Grok.ai, I started plowing away.

Research / Time Schedule

I'd say:

  • 50% of the time I was researching CVARs from Quake Live's current list of active commands, including sensitivity and acceleration cvars, team and enemy model/skin cvars, crosshair and crosshair dynamics, graphics and lighting, sound settings, network and connection settings, and many many more...
  • 50% of the time I was modifying the JS (the site is so simple in structure! Only four files: (1 .html, 1 .css, 1 .js, and 1 .json)

I had to find out a few things for my app:

1) What were each setting's "default" setting. To do this I created "tier"s in the JSON. I set a "tier": "default" to every value that each CVAR in question's defaults were, and loading the page for a user would initially parse the defaults in the input boxes for each selection.

2) What were the "recommended" settings? What do the pros suggest using? What settings SHOULD be changed from default for better gameplay, easier fragging, more control, better framerates, quality of life? Some of you old-school Quake 3 players know the default r_picmip values are NOT competitive. So how do I make the user know that changing picmip to 5 would be recommended? In the JSON I created "tier's" for "recommended" (And also, a tier for "recommended_default", when a setting was recommended but also the default value.)

3) What should I explain about each CVAR? To be honest, I could have made a half-attempted app, but I spent dozens of hours making sure I fully described each setting and it's uses, and especially included suggestions for competitive standards. For example, for the "sensitivity" CVAR, I didn't just write "Controls how fast or slow your mouse moves the crosshair ingame.", but rather, I went elaborately, in a way that people could understand the mechanics of the setting, helping people align their game more like professional Quake players...

Sensitivity: "The master multiplier for your mouse speed. Effective Sensitivity (eDPI) = Mouse DPI × Sensitivity. Lower values (e.g., 20-40cm/360) generally offer better tracking consistency (LG), while higher values favor fast reflex flicks (Rail). In 2026 QPL, most pros use 1.5-3.0 with 400-800 DPI for consistent aim."

4) I had to create certain "ui"s for each CVAR. If a setting only takes in a 1/0 value, I created checkboxes. If a setting allows for a string, I provided pre-recommended values (like enemy models Keel/bright), and then programmed the app in the JS to provide a custom input field below the drop-down with prerecommendations, allowing for text to be inserted.

More Advanced Additions to the App

I created a CFG Preview div, so when the user clicks on a category (Categories from the JSON entries divide the structure of the navigation on the page. Main categories get a certain #hex color and subcategories rest below it in plain white text), the text in the CFG Preview panel automatically scrolls to the exact location of the CVARs in question, allowing the user to see in real-time their edits.

I color coded my app. Default values are colored yellow, Recommended values are colored green. That way, the app is interactive and users can distinguish between what the game provides you with at stock settings and what changes are recommended to implement.

There were certain implementations that took a long time to figure out, like how to make a binding system where I could allow players to set their binds to keys like they were exactly in the game settings menu, even with the features of noticing when a key has already been bound, you get a big error saying "Duplicate..."

And adding custom scripts, I had to create popup module that opened a text-based field with my pre-populated scripts I provided in my app, and the feature of having the user add their own scripts to the config.

I included color boxes that allow players to set their railgun beams and outer spirals visually, just by clicking. I included a HEX grabber, so the user could change their forced enemy model skins to certain HEXAlpha values, giving a "right in your face" color module that lets you see what you're going to get. I have sliders for certain settings like "sensitivity" and "cl_mouseAccel", allowing the user to change the values with pleasure.

CVAR Dependencies in the JSON and Info Panels

I even added "warning" messages that appear when a master toggle is set off. For example, in Quake Live, there's more graphic settings than Quake 3 provided back in the day... one of them is called Post Processing, which allows for more advanced graphical enhancements like bloom and vignette. When a user sets "r_enableBloom" to 0, it's dependent values hide (DIV's are set to display: none), and an information message with a font-awesome icon and blue colorized text appear: "ℹ️ Enable Bloom to unlock the advanced Threshold, Intensity, Saturation, and Filter Pass sliders below."

Note: these dependencies weren't too difficult to implement, just javascript recognizing the JSON file entries with


"warnings": [
    {
        "type": "info",
        "message": "Enabling m_cpi completely changes the engine's sensitivity math. Your current Sensitivity value above will feel drastically different and need readjustment.",
                "when": { "cvar": "m_cpi", "op": ">", "value": 0 }
    }
],

"dependsOn": [{ "cvar": "cg_drawCrosshairNames", "op": ">", "value": 0 }],

All of these changes were implemented one by one, asking Gemini to "add a feature" to my app, with direct instructions. A lot of times, things wouldn't work, and I'd have to try different prompts. My knowledge of HTML/JS/CSS helped quite a bit, but the amount of time saved by using AI changed the time frame that I created the app from start to finish tenfold, possibly more.

My passion for gaming drove me. I used to play Rocket Arena 3 on Q3 back in middle and high school. I used to watch pro players (czm, Fatal1ty, Zero4, Cooller, Fox, Toxicity, and more) all the time, in .dm_68 demos. If it wasn't for my passion for configuring Quake, and the amount of knowledge I already had in the modifying of the game (from tons and tons of changing my configs in my early years), I wouldn't be driven to put the time in to my app.

But what I have to say is, if you have enough of a reason to do something that you want to do, you will find enough of a way.

Passion + Interest + Knowledge + Effort = Results.

In this case. + AI too, :)

At least that's what I just made up from the top of my head.

One of things that frustrated me the most, however, was that I can't say that I know how all the JS works. That's because I didn't build it entirely myself. During this project, my goal was to create an app that others would use and love. I didn't make the requirement for myself that I had to have programmed it with my own head-knowledge, line by line. I didn't. If I had told myself that, I wouldn't be proud of my result right now, because in fact I didn't do that.

What I did tell myself during the development of this project, is I'd go back to training, and the next time I make something, I will make it by my own hand.

Back to JavaScript lessons I go!

By the way, if you made it this far, here's the live project.

https://quakeliveconfigeditor.com

Web Scraping vs Web Crawling: What's the Difference and When to Use Each

2026-02-27 08:27:16

Web scraping vs web crawling comes down to one thing: crawling discovers pages; scraping extracts data from them. One manages a URL frontier. The other manages a data pipeline. Pick wrong and you build the wrong system.

This matters more now than two years ago. Automated bot traffic hit 51% of all web traffic in 2024 (Imperva 2025 Bad Bot Report). GIVT rates nearly doubled—86% YoY increase in H2 2024—driven by AI crawlers and scrapers (DoubleVerify). Your architecture choice must account for a structurally different web.This guide delivers a system-design mental model (Frontier vs Pipeline), side-by-side Python examples, and a decision framework covering crawling, scraping, and semantic crawling for AI/RAG.

At a glance: Crawl → URLs (discovery) | Scrape → structured records (extraction) | Semantic crawl → chunks/vectors (retrieval-ready)

Quick Answer: What's the Difference Between Web Crawling and Web Scraping?

Web crawling discovers pages by following links and managing a URL frontier: scheduling, deduplicating, prioritizing visits. Web scraping extracts structured data through a parsing pipeline: selecting fields, validating, storing records. A crawler outputs URLs; a scraper outputs structured data. Most production projects combine both: crawling to discover pages, then scraping to extract records.

What is web crawling? Automated discovery and traversal of web pages. A crawler starts from seed URLs, follows links, deduplicates, schedules visits, and respects rate limits. Output: URL set, link graph, or index candidates.

What is web scraping? Automated extraction of specific data from web pages. A scraper targets known URLs, fetches HTML or rendered DOM, parses fields, validates, and stores records. Output: JSON, CSV, or database rows.

The "vs" framing is misleading—crawling and scraping are stages in the same workflow, not competing choices.

The System-Design Model: Crawler = Frontier, Scraper = Pipeline

Defining crawling as "finding URLs" and scraping as "extracting data" is accurate but not actionable. The real question: what primary state does your system manage?

How Web Crawling Works: Frontier Management

A crawler decides what to visit, in what order, without wasting resources.

Core components: URL normalization → deduplication (seen set) → queue/frontier → prioritization → retries and error handling.

Inputs: Seed URLs, domain rules, depth limits, rate budgets.

Outputs: URL list, link graph, index candidates, crawl logs.

Most teams aren't building Google—they're crawling bounded domains to find pages worth scraping.

How Web Scraping Works: Extraction Pipeline

A scraper turns HTML into clean, validated records.

Core components: Fetch/render → parse/select (CSS selectors, XPath) → schema mapping → validation → storage.

Inputs: Known URLs (from crawl, sitemap, API, or manual list).

Outputs: Structured records plus extraction metadata (timestamps, source URLs, parse errors).

Crawler vs Scraper Failure Modes

Understanding failures reveals why these are different engineering problems:

Crawler failures Scraper failures
Common URL explosions, redirect loops, spider traps, rate-limit bans, frontier bloat Selector drift, JS rendering gaps, schema mismatches, silently missing fields
Key metric Pages attempted vs succeeded, dedupe rate, ban rate Parse success rate, validation failures, field completeness

Key Takeaway: Deduplication prevents wasted crawl budget. Validation prevents dirty datasets. Design for both from day one.

Web crawling discovers URLs while web scraping extracts structured data into records.

Web Crawler vs Web Scraper in Python: Side-by-Side Examples

Code clarifies what definitions can't.

Minimal Crawler (Frontier + Dedupe + Politeness)

import requests

def crawl_with_olostep(start_url, max_pages=50):
    """
    Crawl a website using Olostep's /v1/crawls endpoint.

    Olostep handles:
    - Frontier management (deduplication, scheduling)
    - Politeness (rate limiting, delays)
    - JavaScript rendering
    - Domain scoping
    """
    endpoint = "https://api.olostep.com/v1/crawls"
    headers = {
        "Authorization": "Bearer <YOUR_API_KEY>",
        "Content-Type": "application/json"
    }

    payload = {
        "start_url": start_url,
        "include_urls": ["/**"],  # Crawl all URLs on same domain
        "max_pages": max_pages
    }

    # Start the crawl
    response = requests.post(endpoint, json=payload, headers=headers)
    response.raise_for_status()
    crawl_data = response.json()
    crawl_id = crawl_data["id"]

    print(f"Crawl started: {crawl_id}")
    print(f"Start URL: {crawl_data['start_url']}")

    # Check status and retrieve results
    status_url = f"{endpoint}/{crawl_id}"
    while True:
        status_response = requests.get(status_url, headers=headers)
        status = status_response.json()["status"]

        if status == "completed":
            break
        print(f"Status: {status}... checking again in 10s")
        time.sleep(10)

    # Get discovered URLs
    pages_url = f"{endpoint}/{crawl_id}/pages"
    pages_response = requests.get(pages_url, headers=headers)
    pages = pages_response.json()

    discovered = [page["url"] for page in pages["data"]]
    print(f"Discovered {len(discovered)} pages")

    return discovered

The deque is the frontier; seen prevents revisits; time.sleep enforces politeness; domain scoping keeps the crawler on-target.

Minimal Scraper (Extract + Validate)

import requests
import json
import time

def vertical_crawl_and_scrape_with_olostep(start_url, url_pattern="/product/", max_pages=200):
    """
    Complete vertical crawling workflow using Olostep:
    1. Crawl to discover URLs
    2. Filter for target pages
    3. Batch scrape for structured data

    This handles the most common production pattern end-to-end.
    """
    headers = {
        "Authorization": "Bearer <YOUR_API_KEY>",
        "Content-Type": "application/json"
    }

    # Step 1: Crawl to discover URLs
    crawl_endpoint = "https://api.olostep.com/v1/crawls"
    crawl_payload = {
        "start_url": start_url,
        "include_urls": ["/**"],
        "max_pages": max_pages
    }

    crawl_response = requests.post(crawl_endpoint, json=crawl_payload, headers=headers)
    crawl_response.raise_for_status()
    crawl_id = crawl_response.json()["id"]

    # Wait for crawl completion
    while True:
        status_response = requests.get(
            f"{crawl_endpoint}/{crawl_id}", 
            headers=headers
        )
        status = status_response.json()["status"]
        if status == "completed":
            break
        print(f"Crawling... {status}")
        time.sleep(10)

    # Get discovered URLs
    pages_response = requests.get(
        f"{crawl_endpoint}/{crawl_id}/pages",
        headers=headers
    )
    all_urls = [page["url"] for page in pages_response.json()["data"]]

    # Step 2: Filter for detail pages
    detail_urls = [u for u in all_urls if url_pattern in u]
    print(f"Found {len(detail_urls)} detail pages to scrape")

    # Step 3: Batch scrape with structured extraction
    batch_endpoint = "https://api.olostep.com/v1/batches"
    batch_items = [
        {"custom_id": str(i), "url": url} 
        for i, url in enumerate(detail_urls)
    ]

    batch_payload = {
        "items": batch_items,
        "formats": ["json"],
        "llm_extract": {
            "schema": {
                "product": {
                    "type": "object",
                    "properties": {
                        "title": {"type": "string"},
                        "price": {"type": "number"},
                        "sku": {"type": "string"}
                    }
                }
            }
        }
    }

    batch_response = requests.post(batch_endpoint, json=batch_payload, headers=headers)
    batch_response.raise_for_status()
    batch_id = batch_response.json()["id"]

    # Wait for batch completion
    while True:
        status_response = requests.get(
            f"{batch_endpoint}/{batch_id}",
            headers=headers
        )
        status_data = status_response.json()
        if status_data["status"] == "completed":
            break
        print(f"Scraping... {status_data['processed']}/{status_data['total']} pages")
        time.sleep(30)

    # Retrieve results
    results_response = requests.get(
        f"{batch_endpoint}/{batch_id}/results",
        headers=headers
    )

    records = []
    for item in results_response.json()["data"]:
        try:
            json_content = json.loads(item["result"]["json_content"])
            product = json_content.get("product", {})
            product["source_url"] = item["url"]
            records.append(product)
        except (json.JSONDecodeError, KeyError) as e:
            print(f"Extraction failed for {item.get('url')}: {e}")

    return records

This three-stage workflow (crawl → filter → batch scrape) handles 10,000+ URLs efficiently. Olostep's Batch API parallelizes up to 100K requests, completing in minutes what would take hours with sequential requests. The batching also includes automatic retries, progress tracking, and result persistence for 7 days.

Rendering Strategy: The Cost Ladder

When pages render content client-side, escalate only as needed:

  1. Static HTMLrequests.get(). Fastest, cheapest (~$0.00001/page compute). Always start here.
  2. JSON endpoints — Many SPAs load from internal APIs. Check the Network tab in DevTools before reaching for a browser.
  3. Headless browser — Playwright/Puppeteer. Last resort. Roughly 10–50x more expensive per page (~$0.001–0.01) and a larger fingerprint surface. (Crawlee, ScrapeOps)

Spend 30 minutes checking for static HTML or JSON endpoints before spinning up browser infrastructure.

Start with static HTML, check for JSON endpoints, then escalate to headless only if needed.

If you'd rather skip managing frontier logic and rendering, Olostep's APIs handle URL discovery, JavaScript rendering, and rate limiting as a service.

Using Olostep API for Production Workflows

While the Python examples above demonstrate core concepts, production teams typically use managed APIs to eliminate infrastructure complexity.

The Olostep Approach

Olostep provides dedicated endpoints that match the crawl/scrape mental model:

Scrape endpoint (/v1/scrapes) — Extract data from a single URL

  • Returns markdown, HTML, JSON, or text
  • Handles JavaScript rendering automatically
  • Supports LLM extraction or self-healing Parsers for structured data
  • Cost: 1 credit per page (20 credits with LLM extraction)

Crawl endpoint (/v1/crawls) — Discover URLs across a domain

  • Manages frontier, deduplication, and rate limiting
  • Returns discovered URLs and page metadata
  • Respects robots.txt and domain boundaries
  • Cost: 1 credit per page crawled

Batch endpoint (/v1/batches) — Process thousands of URLs

  • Parallelizes up to 100K requests
  • Completes in 5-7 minutes for 10K URLs
  • Includes retries and progress tracking
  • Results stored for 7 days

Map endpoint (/v1/maps) — Generate complete sitemaps

  • Returns all URLs on a domain
  • Useful for site audits and index verification

Quick Start: Scraping with Olostep

Python example using the SDK:

from olostep import OlostepClient

client = OlostepClient(api_key="YOUR_API_KEY")

# Scrape a single page
result = await client.scrape("https://example.com/product")
print(result.markdown_content)

# Batch scrape with structured extraction
batch = await client.batch(
    urls=["https://site1.com", "https://site2.com"],
    formats=["json"],
    llm_extract={
        "schema": {
            "title": {"type": "string"},
            "price": {"type": "number"}
        }
    }
)

# Wait for completion and get results
await batch.wait_till_done()
async for result in batch.results():
    print(result.json_content)

When to Use Olostep vs DIY

Factor DIY Python Olostep API
Setup time Hours (for prototype) Minutes
Maintenance Ongoing selector updates, proxy management Zero — Parsers self-heal
JavaScript rendering Requires headless browser setup ($0.001–0.01/page) Automatic (included in 1 credit)
Rate limiting You implement Handled automatically
Batch processing Sequential or manual parallelization Up to 100K concurrent
Low-volume cost Lower (~$0.00001/page) Higher (1 credit = ~$0.001)
High-volume cost Often higher (proxies, infrastructure) Predictable per-credit pricing
Best for Single-site, static content, learning Multi-site, production, scale

The crossover: Most teams switch to managed APIs when they need JavaScript rendering, maintain 3+ target sites, or exceed 10K pages/month. Get 500 free credits to test the API on your use case.

When to Use Crawling vs Scraping: Decision Framework

Anchor your decision to output, not tools.

Goal Output needed Approach Example use cases
Site audit, link mapping URL graph, broken links Crawl SEO audits, sitemap verification, change detection
Known pages → structured data Rows/records (JSON, CSV) Scrape Price monitoring, job aggregation, lead enrichment
Large/unknown site → entities Records from many pages Vertical crawl + scrape E-commerce catalogs, real estate listings
RAG, agent browsing Chunks, markdown, vectors Semantic crawl Knowledge base ingestion, AI agent tool-use
Website indexing Index candidates + metadata Crawl Search engine crawlers, internal search

Choose crawl vs scrape based on output: URLs, records, or retrieval-ready chunks.

Decision flow:

  1. Already know which URLs to extract? → Scrape.
  2. Need structured fields (price, name, date)? → Scraping pipeline.
  3. Need vector-ready chunks for retrieval? → Semantic crawl.
  4. Site large or unknown? → Vertical crawl + scrape.

Semantic Crawling: The Third Category for AI Workflows

Semantic crawling traverses pages like a crawler but outputs clean markdown, text chunks, or embeddings instead of structured records. It serves RAG pipelines, AI agents, and knowledge base ingestion—workflows where a language model consumes the output rather than a database table.

Tools like Firecrawl and Jina Reader target this workflow, signaling a distinct category beyond the traditional crawl-vs-scrape binary.

Blocks, Robots.txt, and the Closing Web

Plan for these constraints from your first architecture sketch.

Why Basic Requests Fail at Scale

Bot detection systems (Cloudflare, Akamai, DataDome) fingerprint TLS signatures, header patterns, and behavioral signals. Rate limiting is aggressive. JS-dependent rendering means fetched HTML may contain zero content.

What works: Reduce volume (cache, dedupe, incremental recrawls). Respect declared limits and 429 responses. Use official APIs when available. Consider managed solutions for proxy rotation and rendering.

Robots.txt: Signal, Not Shield

TollBit's data shows AI bots bypassing robots.txt increased over 40% in late 2024, with millions of scrapes violating restrictions. Publishers respond with more frequent robots.txt updates blocking AI crawlers by user-agent.

Still respect robots.txt—violation creates legal exposure. But don't assume others do. That asymmetry drives publishers toward aggressive technical countermeasures.

The Pay-Per-Crawl Shift

Cloudflare launched an "easy button" to block all AI bots, available to all customers including free tier. Over one million customers opted in. Cloudflare now blocks AI crawlers accessing content without permission by default.

For pipeline teams: access reliability will decrease for unmanaged setups. Pay-per-crawl and licensed data access are becoming standard.

Key Takeaway: Treat access as a constraint, not an afterthought. Budget for blocks, retries, and rendering costs from day one.

Data Quality for AI: Preventing Contaminated Datasets

Scraping at scale without quality controls produces actively harmful data for AI applications.

Shumailov et al. (Nature, 2024) showed that training on scraped AI-generated content can collapse model output diversity. If your pipeline ingests synthetic content and feeds it into training or RAG, you amplify noise downstream.

Store with every record: source URL, fetch timestamp, raw snapshot reference, extractor version, parsing errors.

Sanitize before ML or RAG:

  • Strip boilerplate (nav, footers, ads, cookie banners)
  • Deduplicate at document and near-duplicate level
  • Filter unexpected languages
  • Validate schema (reject records outside expected types/ranges)
  • Apply AI-content heuristics (signal, not verdict)

RAG-specific: Chunk at semantic boundaries. Convert to markdown before chunking. Attach source URL and timestamp as retrieval metadata.

Quality controls (boilerplate removal, validation, deduplication) prevent contaminated AI datasets.

Dynamic Sites and SPAs

SPAs change crawling more than scraping. Once you have the rendered DOM, extraction works identically. Discovery is what breaks.

What breaks: Infinite scroll replaces pagination links. Client-side routing hides URLs from raw HTML. Some SPAs serve everything from a single URL. Navigation may require interaction sequences.

Cheaper discovery methods (before headless):

  • XML sitemaps — many SPAs generate them for SEO; check /sitemap.xml
  • Internal search APIs — backends often return URLs directly
  • Pagination parameters?page=N or offset=N patterns
  • Canonical tags<link rel="canonical"> in server-rendered HTML
  • RSS/Atom feeds — still available on many content sites

When none work, scope headless rendering tightly: render listing pages for link extraction, fetch detail pages statically when possible.

Compliance Essentials

Practical guidance, not legal advice.

  • Review Terms of Service for automated access prohibitions
  • Respect robots.txt, <meta name="robots">, X-Robots-Tag
  • Implement rate limiting below site-degradation thresholds
  • Handle PII with appropriate protection measures
  • Assess copyright (research vs. redistribution vs. model training differ significantly)
  • Maintain data lineage: what, when, where, how processed
  • Define retention/deletion policies; provide opt-out for recurring crawls

For organizations: document purpose classification, maintain audit logs, include third-party tools in security review.

Build vs Buy: The Real Production Costs

Factor DIY Python Script Olostep API
Initial setup Hours Minutes
Maintenance overhead 2-8 hrs/month per site Zero (self-healing)
JavaScript rendering $0.001-0.01/page + infrastructure Included (1 credit)
Proxy/anti-bot $5-15/GB + rotation logic Included
Parallelization Manual implementation 100K concurrent built-in
Monitoring & retries You build it Automatic
First 10K pages ~$100-500 hidden costs 500 free, then ~$10
Scale (1M pages/month) $1,000-5,000 (infra + time) ~$1,000 predictable

Hidden DIY costs:

  • Selector maintenance when sites change
  • Proxy bandwidth and rotation
  • Browser infrastructure (Playwright/Puppeteer)
  • Retry logic and monitoring
  • 5-30% failure rates requiring debugging

When to stay DIY: Single static site, learning project, <1K pages/month, full team bandwidth.

When to switch to Olostep: JavaScript-heavy sites, 3+ target sites, >10K pages/month, limited maintenance time, need for structured data.

Get 500 free Olostep credits to test your use case before committing.

FAQ

Can you crawl without scraping? Yes. SEO audits, link analysis, and sitemap verification are pure crawling tasks.

Can you scrape without crawling? Yes. If you have URLs from a sitemap, API, or manual list, skip directly to extraction.

What is a web spider? Another name for a web crawler—interchangeable.

How does a search engine crawler handle website indexing? A crawler like Googlebot visits pages, downloads content, and feeds it to an indexing system that builds a searchable database.

Which is better: crawling or scraping? Neither universally. Discovery → crawl. Structured data from known pages → scrape. Both → combine. Chunks for LLMs → semantic crawl.

Web crawling vs web scraping in Python? Start with output requirements. Known URLs + records → scraper (BeautifulSoup + requests). URL discovery → crawler loop. The code examples above cover both.

Cheat Sheet

  • Crawling = Frontier management. Discovery, scheduling, deduplication, politeness. Output: URLs.
  • Scraping = Pipeline management. Parsing, validation, schema mapping, storage. Output: structured records.
  • Semantic crawling = Retrieval-ready output. Markdown, chunks, vectors for RAG/AI.
  • Vertical crawling = Crawl → scrape. The dominant real-world pattern.

Top 5 production pitfalls:

  1. No deduplication (wasted budget, duplicate records)
  2. No validation (dirty data reaches your database silently)
  3. Defaulting to headless rendering (massive cost when static fetch works)
  4. Ignoring rate limits (bans, legal exposure)
  5. No provenance metadata (can't debug, audit, or trace issues)

Sources:

About the Author

Aadithyan Nair @aadithyanr_

Founding Engineer, Olostep · Dubai, AE

Aadithyan is a Founding Engineer at Olostep, focusing on infrastructure and GTM. He's been hacking on computers since he was 10 and loves building things from scratch (including custom programming languages and servers for fun). Before Olostep, he co-founded an ed-tech startup, did some first-author ML research at NYU Abu Dhabi, and shipped AI tools at Zecento, RAEN AI.

Automating Trend Research: How I Built a Pipeline to Track What People Are Saying

2026-02-27 08:25:43

I used to spend hours every week manually checking Hacker News and Reddit for trending topics in my niches. Open a tab, search, scroll, copy links, summarize in a doc… repeat. It was mind-numbing and inconsistent. Then I built the Research & Trend Report Workflow—a fully automated pipeline that scrapes the internet's best discussion hubs, compiles a curated report with my own commentary, and delivers it to my inbox.

This thing has transformed how I stay on top of trends. And the best part? It's all built with simple tools (PowerShell, Python scripts, public APIs) and runs on a schedule. No paid services, no complex infrastructure. Let me show you how it works.

What This Pipeline Actually Does

Every time it runs (I have it set to weekly, but it can be ad-hoc too), here's the flow:

  1. Search Hacker News via Algolia API for recent stories matching my keywords
  2. Search Reddit via JSON API for posts in target subreddits
  3. Fetch article content from the URLs (when possible)
  4. Generate summaries and write insightful commentary (humanized, not robotic)
  5. Format a markdown report with stats, sources, and executive summary
  6. Store it in memory (episodic and semantic index updated automatically)
  7. Email the full report via ProtonMail CLI to my personal inbox
  8. (Optional) Promote to Bluesky if the findings are broadly interesting

The output is a clean, readable markdown file that looks like this:

# Trend Report: Retro Metroidvania Games
*Generated: Wednesday, February 25, 2026*
*Research period: Last 30 days*

## Executive Summary
The retro metroidvania community is buzzing with two major conversations:
1. Nostalgia for classics—especially Super Metroid—continues to drive massive engagement.
2. Industry loss: The passing of Shutaro Ida sparked heartfelt tributes.
...

## Top Findings
### 1. Super Metroid: A Legacy That Endures
**Source:** Reddit r/retrogaming
**URL:** https://www.reddit.com/...
**Stats:** 1,124 upvotes | 356 comments
**Summary:** [2-3 sentence summary]
**Commentary:** This kind of post surfaces periodically and always sparks huge engagement...

The Tools: All Free, All Local

I'm not using any paid APIs or cloud services. Everything runs on my Windows machine:

  • Hacker News Algolia API – No auth needed, just HTTP GET with query params
  • Reddit JSON API – Same, no OAuth required for public posts
  • web_fetch or browser – For pulling article content when needed
  • ProtonMail CLI – For reliable email delivery of full reports ( avoids Gmail rate limits)
  • memory-manager – To categorize and store the reports properly
  • Humanizer skill – Applied to commentary so it doesn't sound like a bot wrote it

The whole orchestration is a PowerShell script that calls these tools in sequence. It's not fancy, but it gets the job done.

Querying Hacker News: The Algolia API

Hacker News provides a fantastic search API via Algolia. Here's the PowerShell snippet I use:

$keywords = @("metroidvania", "retro", "castlevania", "super metroid", "nes")
$cutoff = (Get-Date).AddDays(-30).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ")
$baseUrl = "https://hn.algolia.com/api/v1/search"

foreach ($keyword in $keywords) {
    $params = @{
        query = $keyword
        tags = "story"
        numericFilters = "created_at_i>$([int]([datetime]$cutoff).Subtract([datetime]'1970-01-01').TotalSeconds)"
        hitsPerPage = 10
    }
    $url = $baseUrl + "?" + ($params.GetEnumerator() | ForEach-Object { "$($_.Key)=$($_.Value)" } -join "&")

    $response = Invoke-RestMethod -Uri $url -Method Get
    foreach ($hit in $response.hits) {
        # Extract: title, url, author, points, comment_count, created_at
        # Filter duplicates by URL
        # Store in results array
    }
}

The key insight: Algolia uses Unix timestamps for numericFilters, so you need to convert dates properly. Also, you can combine multiple keyword searches but must de-duplicate URLs afterward.

Querying Reddit: JSON Without OAuth

Reddit's JSON API is refreshingly simple. For a subreddit and keyword:

$subreddits = @("retrogaming", "metroidvania", "nintendo")
$keyword = "metroidvania"

foreach ($sub in $subreddits) {
    $url = "https://www.reddit.com/r/$sub/search.json?q=$keyword&restrict_sr=on&sort=new&limit=10"
    $response = Invoke-RestMethod -Uri $url -Method Get

    foreach ($post in $response.data.children) {
        $data = $post.data
        [PSCustomObject]@{
            Title = $data.title
            Url = "https://www.reddit.com" + $data.permalink
            Subreddit = $sub
            Upvotes = $data.ups
            Comments = $data.num_comments
            Created = [datetime]::FromUnixTime($data.created_utc)
            Author = $data.author
        }
    }
}

restrict_sr=on keeps results within the subreddit (no r/all). I sort by new to get recent posts. The JSON structure is straightforward—data.children is an array of posts, each with a .data payload.

Fetching Summaries: The Fetcher Problem

Here's where it gets tricky. Some article URLs are behind paywalls, require JavaScript, or block automated requests. My approach:

  1. Try web_fetch (built-in tool that extracts readable content)
  2. If that fails, try browser with headless mode to render the page
  3. If still blocked, fall back to the article title + any available snippet from HN/Reddit
  4. Mark as "summary unavailable" if truly inaccessible

The key is having multiple fallbacks. I've found that web_fetch works for about 60% of sites, browser gets another 30%, and the remaining 10% are just inaccessible (looking at you, major news sites with bot detection).

A typical summary extraction:

# Pseudocode for summary extraction
def extract_summary(url):
    content = web_fetch(url, extract_mode="markdown")
    if not content or len(content) < 200:
        content = browser_snapshot(url, fullPage=False)
    if content:
        # Take first 2-3 paragraphs
        paragraphs = content.split('\n\n')[:3]
        return ' '.join(paragraphs)[:1000]
    return None

Writing Commentary That Doesn't Sound Like a Bot

This is where the Humanizer skill pays off. Initially, my commentary was awful: "This post highlights the enduring appeal of classic metroidvanias. The high engagement suggests strong community interest." Yawn.

Now I force myself to:

  • Have an opinion: "This kind of post surfaces periodically and always sparks huge engagement."
  • Acknowledge mixed feelings: "It's not just nostalgia; it's about Super Metroid establishing the template."
  • Add specific, concrete details: "The fact that a simple 'must have been incredible' prompt draws over a thousand upvotes tells us..."
  • Use contractions and casual phrasing: "it's", "that's", "I've"
  • Vary sentence structure—mix short punches with longer reflective ones

Example transformation:

Before (AI-ish):

"This discussion demonstrates the sustained cultural relevance of Super Metroid. The high engagement metrics indicate strong community interest in retro gaming classics."

After (Humanized):

"This kind of post surfaces periodically and always sparks huge engagement. It's not just nostalgia—Super Metroid literally defined the genre template. The fact that a simple 'must have been incredible' prompt draws over a thousand upvotes? That tells you something."

See the difference? One sounds like a research paper, the other sounds like someone who actually cares about games talking.

Organizing Results: Episodic + Semantic

When the report is complete, I save it to two places:

Episodic: memory/episodic/2026-02-25-research-retro-metroidvania.md

(Full dated report with all findings, summaries, commentary)

Semantic index: Append to memory/semantic/research-reports-index.md:

- **Retro Metroidvania Games** — 2026-02-25  
  [episodic/2026-02-25-research-retro-metroidvania.md](episodic/...)  
  Keywords: metroidvania, retro, castlevania, super metroid, NES  
  Sources: HN (3 posts), Reddit r/retrogaming & r/metroidvania (12 posts)  
  Top post: "Super Metroid must have been an incredible experience" (1,124 upvotes, 356 comments)

This dual storage means:

  • I can retrieve the full report by date (episodic)
  • I can scan the index to see what topics I've researched (semantic)
  • The index acts as a quick reference for trends over time

Email Delivery: ProtonMail CLI > Gmail

I initially tried sending these reports via Gmail SMTP, but hit rate limits and spam filters with longer content (these reports can be 5-10KB of text). ProtonMail CLI handles large bodies reliably, though there's a catch: external delivery to Gmail can take up to 24 hours.

But here's the trick: I don't need instant delivery. I run the report in the morning, it arrives in my inbox by evening. That's fine—I'm not waiting on it. The reliability trade-off is worth it.

The PowerShell call:

cd "tools\protonmail-cli"
Get-Content $reportPath -Raw | python -m uv run pmail send -t you@example.com -s "Trend Report: Retro Metroidvania - $(Get-Date -Format 'yyyy-MM-dd')"

The pmail send command reads the message body from stdin when -b is omitted. Simple, no temporary files needed.

Extending the Workflow: Optional Bluesky Promotion

If the research uncovers broadly interesting findings (like the Super Metroid engagement numbers), I'll create a Bluesky post to drive traffic:

# tools/post_to_bluesky.py
message = f"Just researched {topic} trends onHN/Reddit. Top insights: {snippet}. Full report: {memory_file_url}"

I only do this for reports with genuinely shareable takeaways. Not every research batch needs promotion.

Running It on a Schedule

Right now I trigger this manually or via cron (or in OpenClaw, via scheduled tasks). The script is research-and-trend-report-workflow.ps1 and takes parameters:

.\research-and-trend-report-workflow.ps1 `
  -Topic "retro metroidvania" `
  -Keywords "metroidvania","retro","castlevania","super metroid","nes" `
  -Subreddits "retrogaming","metroidvania","nintendo" `
  -DaysBack 30 `
  -EmailTo "[email protected]"

I'll probably set up a weekly run soon—every Monday morning, generate last week's trends, land in my inbox by Monday evening. That way I'm always in the loop without lifting a finger.

Why Not Just Use a Third-Party Service?

You could use tools like Brandwatch, Talkwalker, or even Google Alerts. But:

  • Cost: Those services charge hundreds per month for decent coverage.
  • Lock-in: Your data lives somewhere else; you can't easily add custom commentary.
  • Flexibility: My workflow lets me tweak anything—parsers, summarization, commentary style, distribution.
  • Ownership: The reports live in my memory system, searchable and indexable forever.

For a hobbyist or indie blogger, this DIY approach is more than capable. The quality of results from HN/Reddit is already excellent—you don't need a $500/mo social listening platform to get the pulse of the tech/gaming community.

Challenges and Gotchas

Reddit rate limits: Their JSON API is generous but not unlimited. I keep requests to 10 per subreddit per run and add delays between calls (1 second). So far no issues.

Paywalls and bot detection: Some sites (looking at you, major news outlets) block non-browser requests. I've learned to recognize the patterns and fall back gracefully. The report still works without those summaries.

Email deliverability: ProtonMail to Gmail can be slow (up to 24h). I've thought about switching to AgentMail for instant delivery, but their API has size limits. For now, the delay is acceptable.

Keyword noise: Searching "nes" also returns surveillance camera posts (Nest). I filter by domain or add negative keywords (-nest -nests) to clean results.

Humanizing commentary: This is the hardest part to automate. I still write the commentary myself (with humanizer assist) because I want the reports to have my voice and opinions. Could I fine-tune a model to write like me? Maybe down the road. For now, it's a 15-minute manual step that makes the reports actually useful.

What I Use These Reports For

  • Blog post ideas: "Hey, Super Metroid is trending—maybe write a retrospective?"
  • Community engagement: I can jump into Reddit threads with actual context, not just guessing what's hot.
  • Trend tracking: Over time, I can see what topics are cyclical vs. one-offs.
  • Content strategy: If retro metroidvanias are consistently popular, maybe I should write more about them.
  • Staying informed: Even when I'm heads-down coding, I know what the community is talking about.

The first report I generated (retro metroidvania) immediately surfaced three blog post ideas. That's ROI right there.

Make Your Own

The workflow script lives in memory/procedural/research-and-trend-report-workflow.md. It's a PowerShell file with embedded Python or calls to external tools depending on your setup. The key pieces are:

  1. Query functions for HN and Reddit
  2. Content fetcher with fallbacks
  3. Markdown formatter
  4. Storage integration (memory-manager categorize)
  5. Email sender (ProtonMail CLI or AgentMail)

You don't need my exact stack—any language that can make HTTP requests and write files will work. The pattern is what matters:

search → filter → fetch → summarize → comment → format → store → deliver

If you're a blogger, journalist, or just someone who wants to stay on top of niche topics without spending hours a week, this is a solid foundation. Feel free to adapt it, share your version, or drop questions in the comments.

This post is part of my dev-to-diaries series documenting the automation and tooling behind my blogging workflow. See the whole series at https://dev.to/retrorom/series/35977