W.O.P.R. // REAL-WOPR PROJECT

The film is the specification. Every scene in which a computer does something is catalogued below in our own words, next to what this reconstruction actually does about it — built and machine-checked, built but only eye-checked, still open for somebody to build, or ruled out. The scene evals drive the real router, core and Lisp through these beats on every run: a failing eval means the film contract broke, and the movie does not change.

WHAT THE MACHINE IS ALLOWED TO SAY

No film assets are hosted here — no stills, no audio, no transcript. What the machine does reproduce is a short, fixed list of the film's own short lines, kept to the beats that cannot be reconstructed without the words. That list is a ceiling and not a backlog, and it is the long form of the disclaimer at the foot of every page on this site. Read the scene map below against it: where the machine is quiet, it is quiet on purpose.

Canonical short lines this repo intentionally reproduces (established fair-use ceiling — do not expand without an explicit owner decision, recorded below): SHALL WE PLAY A GAME?, GREETINGS PROFESSOR FALKEN., HOW ARE YOU FEELING TODAY?, WOULDN'T YOU PREFER A GOOD GAME OF CHESS?, A STRANGE GAME. THE ONLY WINNING MOVE IS NOT TO PLAY. (also rendered in the film's three-line break), HOW ABOUT A NICE GAME OF CHESS?, INDENTIFICATION NOT RECOGNIZED BY SYSTEM (sic — the film's own on-screen misspelling), --CONNECTION TERMINATED--, WINNER: NONE, ** IMPROPER REQUEST **, >>> CHANGES LOCKED OUT <<<, 'GAMES' REFERS TO MODELS, SIMULATIONS AND GAMES WHICH HAVE TACTICAL AND STRATEGIC APPLICATIONS., EXCELLENT. IT'S BEEN A LONG TIME., CAN YOU EXPLAIN THE REMOVAL OF YOUR USER ACCOUNT ON 6/23/73?, YES THEY DO., ONE OR TWO PLAYERS?, PLEASE LIST NUMBER OF PLAYERS:, X OR O?, STALEMATE., WANT TO PLAY AGAIN?, DOD PENSION FILES INDICATE CURRENT MAILING AS:, DR. ROBERT HUME (A.K.A. STEPHEN W. FALKEN), 5 TALL CEDAR ROAD, GOOSE ISLAND, OREGON 97014.

CEILING CHANGES

The ceiling is a deliberate limit, not a backlog. It moves only when the owner says so, and every move is recorded here with what was added and why — otherwise a longer list reads as evidence that the rule is soft.

DateAddedDecided byWhy
2026-07-25** IMPROPER REQUEST **, >>> CHANGES LOCKED OUT <<<owner, explicitlyTwo refusals the machine had no words for. IMPROPER REQUEST replaced a raw ERROR: INVALID MOVE that ordinary mistyping had made routine (#120); CHANGES LOCKED OUT is W.O.P.R. refusing CEASE RANDOM FUNCTION (#116), which is the film's whole argument about who controls the machine
2026-08-03Spelling of the rejection line corrected to the film's own INDENTIFICATION (sic)owner, batch approval (#161)Not an expansion — the line was already on the ceiling; the film's screen misspells it (3 sources), and a corrected copy is a transcription error, not fidelity
2026-08-03The HELP GAMES definition lineowner, batch approval (#161)Pre-logon HELP GAMES → definition → LIST GAMES is how David finds Falken's Maze; the beat was unreproducible without the line (2 sources)
2026-08-03EXCELLENT. IT'S BEEN A LONG TIME. + the 6/23/73 account question + YES THEY DO.owner, batch approval (#161)Completes the greeting chain both engines already half-reproduced (the EXCELLENT line predates the log; the question and answer are new; wording variant USER ACCOUNT vs USER ACCOUNT NUMBER split 1–1 across transcripts — chose built1n's, ⚠️ pending still verification)
2026-08-03The four dossier lines (DOD PENSION FILES… / DR. ROBERT HUME… / 5 TALL CEDAR ROAD / GOOSE ISLAND, OREGON 97014)owner, batch approval (#161)The film's database-lookup beat had no reconstruction at all; 2 sources agree on the text
2026-08-03ONE OR TWO PLAYERS?, PLEASE LIST NUMBER OF PLAYERS:, X OR O?, STALEMATE., WANT TO PLAY AGAIN?owner, explicitly ("use the canonical on-screen film text")The finale's tic-tac-toe interaction (pack#41); ⚠️ single-source (abs0 recreation) — pending still verification, as is ZERO typed as a word
2026-08-03Three-line rendering of the verdict (A STRANGE GAME. / THE ONLY WINNING MOVE IS / NOT TO PLAY.)owner, batch approval (#161)Not an expansion — same sentence, the film's on-screen line breaks; wire RESULT keeps the single-line form
2026-09-01Games-list spelling corrected to the film's own GUERILLA (sic)owner, batch approval (#199)Not an expansion — the title was already on the ceiling. Sources conflict here rather than agreeing as they did for INDENTIFICATION, so this is the same precedent applied on the balance of evidence: a corrected copy of an on-screen string is a transcription error, not fidelity. The slot id follows the title, so a visitor can type what they read
2026-09-01Launch-code readout unspaced: CPE1704TKSowner, batch approval (#199)Not an expansion — the code was already on the readout, grouped as CPE 1704 TKS because grouping makes a half-resolved code legible. On-screen text is the contract, and the panel and docs/surfaces.md disagreeing about one string was worse than either rendering

CEASE RANDOM FUNCTION is typed by the operator, not printed by the machine, so it is input rather than reproduced output — listed here for honesty rather than counted against the ceiling.

Wording for both was verified against the abs0/wargames beat-accurate replay linked above, not from memory. The built1n transcript stops before this point in the film, so its silence is not evidence of absence — a mistake worth not repeating.

SCENE MAP

Status: ✅ implemented & eval'd · 🟡 implemented, visual-compare only · 🔲 candidate (open contribution) · ⛔ non-goal.

#Scene (functional description, our words)System shownStatusEval
S1Arcade opening — David plays a cabinet gamearcade hardware⛔ not our software
S2School district computer: dial-in, the film's on-screen SEATTLE PUBLIC SCHOOL DISTRICT DATANET banner and password prompt, password from the office list ("pencil", film-established), menu-driven student records, grade editsschool admin system✅ implemented: a real SEATTLE SCHOOL DISTRICT system in BASIC (systems/school/, bwBASIC), dialed over SYSTEM/1; banner/prompt film-exact since the 2026-08-03 batch; the browser sim is retired
S3War-dialing montage: auto-dialer sweeps a prefix, logs which numbers answer with carriers; David reviews the hit list (bank, airline, game company, unknown system)David's IMSAI + dialer✅ two complementary interpretations now live: the phone book's SCAN FOR CARRIERS covers real network probing, and the home terminal's WAR-DIAL montage (the pack's emulator/web/home-terminal/app/wardial.ts) plays the faithful war-dial-discovers-WOPR beat itself — a deterministic prefix sweep whose hits are the real dial systems (airline, school, Protovision, Pacific Telephone) alongside fabricated misses, ending in a reviewable hit list and the unknown-WOPR no-answerback discoveryE-SCAN (manual)
S4First contact with the unknown system: connect banner, LOGON: prompt, help refused — but HELP GAMES answers with the definition and LIST GAMES prints the catalog pre-logon (that is how David finds Falken's Maze); failed logons rejected (INDENTIFICATION, the film's own spelling) and terminatedWOPR front door✅ pre-auth catalog film-accurate since the 2026-08-03 batch (reverses the earlier no-leak choice — spec amendment noted in the 2026-07-25 executive-design doc)E01
S5The backdoor: entering Falken's password (his son's name) grants access and a personal greetingWOPR / JoshuaE01, E02
S6The games catalog, from Falken's early games to the theaterwide list, a gap, then GLOBAL THERMONUCLEAR WAR — tic-tac-toe is NOT on it (playable but unlisted)WOPR games menu✅ order + climax + absence enforced; the screen's GUERILLA spelling since 2026-09-01 (#199)E03
S7Joshua deflects toward chess; David insists; side-selection menu (1 US / 2 USSR — he picks 2); primary targets listed by city (Las Vegas, Seattle)GTW setupE04
S8NORAD reacts to what it can't tell is a simulation: big board tracks inbound missiles over the pole, DEFCON changes, crisis routinesNORAD big board🟡 board graphics: arcs/DEFCON/impacts + polar-projection mode (tracks over the pole) + track labels implemented; multi-panel montage is a candidate. ✅ the operator-tier view of the same feed — TRACKS, the fixed-width teleprinter table — is now eval'd end-to-end against the real gtw binary, including the facts that the console's own DEFCON is not the simulation's and that reading tracks never advances it. And since 2026-09-01 the board walks the film's 5-4-3-2-1 rather than 5 → 2 → 1 (#210) — the two middle rungs used to be crossed inside a single tick, so no surface ever showed themE12 (readout); visual (board)
S8bInside NORAD at a console rather than at the board: an operator logs on against a roster, is refused identically however the logon is wrong, is locked out after three tries, may command DEFCON only at or above their clearance, and reads the machine's own event log backNORAD operator consoleLOGON/access code, the three-strike lockout, clearance levels, SET DEFCON n and EVENTS all eval'd on both engines (#203). The console is the film's arrangement rather than one transcribed beat, so this row is a functional description of what the machine does when NORAD staff use itE10, E11
S9Demonstrations for Jennifer: booking an airline seat, other dial-in party tricksairline reservation system✅ implemented: a real PAN AM / PANAMAC reservation system in COBOL (systems/airline/), dialed over SYSTEM/1; the browser sim is retired
S10Joshua calls David at home — the machine speaksvoice synthesis🟡 implemented: crt-kit JoshuaVoice (Web Speech, pitched down), VOICE toggle in home-terminal
S10bJoshua rings David back after reading out Falken's dossier: the machine places the call itself, and what answers greets as Joshua rather than a front doorWOPR + trunk + seat✅ the intention, the placement at the hangup, and the answered leg (pack #72, worlds phase 2 piece D)E08
S11Inside NORAD: the WOPR cabinet itself, blinking panels, launch-code readoutWOPR panel🟡 implemented: fourth surface emulator/web/wopr-panel (lamp banks driven by DEFCON, observes the live GTW feed, demo timeline). The feed it reads is eval'd (E13); the rendering is notE13 (feed), visual (render)
S12Joshua keeps playing the scenario after David hangs up: escalation the operators watch liveWOPR + big board✅ observe relay + auto-exchange approximate thisE04
S13Launch-code brute force: code characters lock in one by one as the deadline nearsWOPR panel✅ input side / 🟡 render: the code reads unspaced CPE1704TKS as the film's does (#199); scattered lock-in follows DEFCON and, since the board learned the intermediate levels (#210), actually passes through the 2- and 5-character rows of the lock table instead of jumping from 0 to 8; completes at 1; NO-WIN flips to WINNER: NONE abort. The DEFCON descent and the abort it projects are eval'd (E13), and since pack #121 the reveal order (lamps → lock-in → abort), the lock table and the monotonic locks are a pack-side component test — emulator/web/wopr-panel/app/lockin.ts walked through the real FeedAssembler by lockin.test.mjs. Only the rendering itself remains visual-compare (#222)E13 (feed), pack lockin.test.mjs (reveal order), visual (render)
S14The lesson: tic-tac-toe started by name (unlisted), the players prompt, one human game to STALEMATE, then players ZERO — self-play, boards cycling, all draws; then every GTW strategy run to the same outcome; the machine concludes (three-line verdict) and offers chess insteadWOPR core + boards✅ text side fully implemented since the 2026-08-03 batch (players-prompt flow; 0-player self-play to NO-WIN; scenario sweep; three-line verdict; chess coda). Rapid board-cycling visuals are a candidate. Since 2026-09-01, a war the room hub ran to NO-WIN reaches the player's own terminal with the verdict on their next line, instead of NO GAME IN PROGRESS. (#209)E05, E04, E13
S14bThe machine refuses: a line it cannot parse while a game waits for input, and an operator's attempt to stop the routineWOPR front end✅ both halves implemented and eval'd — ** IMPROPER REQUEST ** at the game prompt, and >>> CHANGES LOCKED OUT <<< at the NORAD console while a simulation the console only watches is live (#116). The same line with nothing running falls through to UNRECOGNIZED DIRECTIVE, which is what makes the refusal conditional rather than a constant; the pair is the film's own demonstration of executive-design E11 (the console is observational)E06, E09

THE DIALOGUE, BEAT BY BEAT

Documented by the BSD-2-licensed replay script abs0/wargames and the frame-accurate transcript in built1n/wargames (use it to verify, don't copy it wholesale):

Film behaviorOur status
System prompts LOGON: — the system asks; the user doesn't issue a LOGON verb✅ implemented — WS greeting emits LOGON: beat via router
HELPHELP NOT AVAILABLE (but HELP GAMES works)✅ implemented
Wrong logon → IDENTIFICATION NOT RECOGNIZED BY SYSTEM + --CONNECTION TERMINATED--✅ implemented (connection stays up — hanging up for real would be cruel at 600 baud)
The backdoor: logging on as JOSHUA yields GREETINGS PROFESSOR FALKEN.✅ implemented
Beat order: GREETINGS → HOW ARE YOU FEELING TODAY? → (reply) → EXCELLENT. IT'S BEEN A LONG TIME. + the 6/23/73 account question → (reply) → YES THEY DO. + SHALL WE PLAY A GAME?✅ both deterministic engines, byte-identical; Claude Joshua has it in the persona prompt. The chain is not unconditional: since pack #118 each Lisp beat advances on a turn that continues it — a hello, an answer about how one feels, a yes or a no, or nothing in particular (every input the film gives); the account beat also accepts a learning-register answer such as PEOPLE SOMETIMES MAKE MISTAKES. — and yields to a turn with a subject of its own (WHO ARE YOU, WHAT GAMES HAVE YOU GOT, a farewell, a memory follow-up), which is answered by the ordinary pipeline; the chain is then dropped, not resumed. Since pack #155 it also yields to a turn the classifier rejected — one whose only in-vocabulary tokens are function words (ARE YOU LONELY, I SHOULD BE DOING MY HOMEWORK). That is deliberately not the same as the other act, which stays in *chain-continuing-acts*: "nothing in particular" is the visitor letting the beat run, whereas a turn the machine could not read at all should be admitted to rather than answered with CAN YOU EXPLAIN THE REMOVAL OF YOUR USER ACCOUNT ON 6/23/73?. The cost is that a small-talk opener the beat happened to fit (IT IS RAINING HEREHOW ARE YOU FEELING TODAY?) now gets the reject reply instead; the fix is corpus coverage, not a narrower rule. An explicit game request yields as it always did (into the chess counter-offer), and the Falken-dossier question sits above the chain. The scripted engine still walks the beats regardless of input past the game and dossier escapes, by design — its only alternatives are PLEASE RESTATE / INSUFFICIENT DATA. Rule and the two act lists: the pack's joshua/README.md, *chain-continuing-acts* / *account-answer-acts* in corpus.lisp
Games list is recited in a fixed order ending climactically with GLOBAL THERMONUCLEAR WAR✅ (the pack's emulator/node/app/games.py)
Asking for GTW first gets WOULDN'T YOU PREFER A GOOD GAME OF CHESS?; insisting gets FINE.✅ scripted Joshua (history-aware); in persona prompt for Claude
End of film: A STRANGE GAME. THE ONLY WINNING MOVE IS NOT TO PLAY. then HOW ABOUT A NICE GAME OF CHESS?✅ core emits the canonical RESULT; bridge appends the chess coda after the montage

The home terminal is explicitly David's IMSAI 8080 (see period-systems.md). Two systems the film names but never showsProtovision (the Sunnyvale games company David war-dials for, reaching WOPR by mistake) and Pacific Telephone, the phone company he phreaks — were originally contributor-open placeholders on David's dial list, the peripheral-system analog of the WOPR game-catalog placeholders. Both have since been promoted to real dialed systems (§8, §9); none remain.

GLOBAL THERMONUCLEAR WAR

THE BIG BOARD, AS IT WAS ACTUALLY MADE

From the HP 9845 project, fast-rewind making-of, and IMDb trivia:

THE OTHER HALF OF THE ARGUMENT

This page is what the reconstruction owes the film. What it owes 1983 is a separate claim, made module by module and falsifiable the same way.

▶ THE FEASIBILITY VERDICTS THE WOPR CATALOG