Skip to content

P1 hello world: step-by-step tutorial, clear scenario, attacker step - #16

Merged
lagarcia38 merged 1 commit into
mainfrom
claude/p1-hello-world-cleanup
Oct 27, 2026
Merged

lagarcia38 merged 1 commit into
mainfrom
claude/p1-hello-world-cleanup

Conversation

@lagarcia38

Copy link
Copy Markdown
Contributor

Addresses Jelena's feedback on /sphere/p1-hello-world/.

What changed

  • Scenario stated plainly. 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. The source is the Oct 10 evidence note in sphere-usecases (rockwell-p1-native-integrated-fill-2026-10-10.md).
  • Ports labeled.
    • Tank level goes PLC 2 analog output slot 7, ch 0 → PLC 1 analog input slot 7, ch 0.
    • The fill-valve command goes PLC 1 digital output slot 5, point 0 → PLC 2 digital input slot 5, point 0.
  • Previous/Next drives every panel. The middle and right values only change at samples 16 and 27 in the data, so stepping looked broken. Each panel now:
    • shows the current sample number;
    • highlights a value that just changed;
    • counts down to its own next change.
  • New step 4: what an attacker could do. A four-stage illustration: normal fill, normal stop at 500 mm, a forged 315 mm reading, then overflow. It comes with two check questions. It is described once as an illustration built on the test setup.
  • Tutorial shape in the style of the SmartTV guide: an "On this page" list, numbered steps with Expected: results, and the recording's limits stated once in "About this recording". The repeated "did not / not" disclaimers and all-caps labels are gone (about 25 negations → 3 in the visible text).
  • Matching edits to docs/p1-rockwell-hello-world.md and the page description.

Checks

  • npm run lint: clean.
  • npm run lint:links: 0 failures.
  • npm run build: OK.
  • In-browser on the static export:
    • stepping samples 10→11 and 15→16 updates all three panels;
    • the attack stages render;
    • at 375 px there is no horizontal scroll;
    • the console is clean.

Draft: merging deploys to iotrustlab.com.

🤖 Generated with Claude Code

- 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>
@lagarcia38
lagarcia38 marked this pull request as ready for review October 27, 2026 21:42
@lagarcia38
lagarcia38 merged commit b9fb927 into main Oct 27, 2026
1 check passed
lagarcia38 added a commit that referenced this pull request Oct 27, 2026
Cross-domain SPHERE hello world (stacked on #16)
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