Skip to content

Cross-domain SPHERE hello world (stacked on #16) - #17

Merged
lagarcia38 merged 4 commits into
mainfrom
claude/sphere-hello-world
Oct 27, 2026
Merged

lagarcia38 merged 4 commits into
mainfrom
claude/sphere-hello-world

Conversation

@lagarcia38

@lagarcia38 lagarcia38 commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

Adds /sphere/hello-world/, a step-by-step SPHERE ICS hello world across three utilities (hydro power, water treatment, water distribution). It also links the page from the P1 page's "What's next". Stacked on #16.

What the page is

  • Steps:
    1. meet the region;
    2. pick a utility;
    3. play the incident;
    4. see what SPHERE gives each team.
  • Each step has an Expected: result.
  • Steps 1–3 frame the CTF1 briefing replay (Take 1, cut before every controller decision, no outcomes). Buttons send the replay's own keys (0–3, Space).
  • Step 4 shows the plant SPHERE builds for each team:
    • six machines from one model file: OpenPLC controller, OpenPLC plant simulator on a field link, HMI, engineering workstation, DMZ gateway, and a zone firewall that captures traffic;
    • access through an XDC;
    • a diagram tracing an HMI poll through the firewall;
    • the Rockwell rack photo with a link to the P1 page.
  • Step 4 also shows every role as swappable:
    • a toggle switches the diagram between the CTF1 all-virtual build and a real-hardware build: ControlLogix racks for controller and simulator, a FactoryTalk panel, a Windows Studio 5000 workstation, and EtherNet/IP polling;
    • a table lists what can fill each role. The HMI can be FUXA, ScadaBR, or FactoryTalk (virtual or a hardware panel); the workstation can be a Windows/Ubuntu VM or a physical workstation; the utility and the network also vary.
  • The replay spans the full window at its 16:9 shape.
  • The page leaves out staff-only material: addresses, attack catalog, and infrastructure host names.

Where it comes from

  • These files are generated by the course tool challenges/ctf1-ics/tools/sphere_hello_world.py (cs6494-fall2026, branch claude/sphere-hello-world, local commit beea1aa).
  • theater.html is the unchanged build_theater.build("briefing") output.
  • A 3D variant (same tool with --floor3d) needs Brotli headers, so it isn't part of this static site. It was previewed locally with tools/serve_theater.py.

Before merging

  • The course's DEPLOY.md says no public deployment of the CTF1 material is authorized. This page publishes the briefing replay, so it needs the instructor's OK.
  • Merging deploys to iotrustlab.com.

Checks

  • npm run lint clean; npm run lint:links 0 failures; npm run build OK.
  • Browser checks:
    • the four utility buttons open each site's panel in the embedded replay;
    • no horizontal scroll at 375 px;
    • the console is clean.
  • The course unit suite: 241 ran, 239 passed, 2 skipped.

🤖 Generated with Claude Code

lagarcia38 and others added 4 commits October 27, 2026 14:41
- Say plainly what the test shows: with Start on and the level reading
  inside the controller's 300-500 mm band, PLC 1 opens the tank's fill
  valve; above 500 mm it closes it.
- Label the two signals between the PLCs by their ports: level on analog
  slot 7 ch 0 (PLC 2 to PLC 1), valve command on digital slot 5 point 0
  (PLC 1 to PLC 2).
- Make Previous/Next visibly drive every panel: each panel shows the
  sample number, highlights a value that just changed, and counts down
  to its next change.
- Add step 4, an attacker illustration: a forged level reading keeps the
  fill valve open past 500 mm, and an independent high-level check
  exposes it.
- Restructure as numbered steps with Expected results, state the
  recording's limits once, and drop the repeated negations and caps.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
public/sphere/hello-world/ is generated by the CS6494 course tool
challenges/ctf1-ics/tools/sphere_hello_world.py (2D variant): a
step-by-step page around the CTF1 briefing replay of three utilities,
plus what SPHERE builds for each team. The P1 page's What's next now
links to it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Regenerated from the course tool (cs6494-fall2026 claude/sphere-hello-world
beea1aa): the replay spans the window at 16:9, and step 4 shows each role
(PLC, simulator, HMI, workstation) as swappable, with a toggle between the
CTF1 all-virtual build and a real-hardware build.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
public/sphere/hello-world-3d/ is the course tool's 3D variant built with
--static-host (cs6494-fall2026 claude/sphere-hello-world b519b4c): the Unity
floor builds are decompressed so GitHub Pages can serve them, with one
shared copy of the engine files (about 72 MB). The 2D and 3D pages link
to each other.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@lagarcia38
lagarcia38 changed the base branch from claude/p1-hello-world-cleanup to main October 27, 2026 21:42
@lagarcia38
lagarcia38 marked this pull request as ready for review October 27, 2026 21:42
@lagarcia38
lagarcia38 merged commit bab817e into main Oct 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant