GENERATED VIEW · PRIVATE ARCHIVE · DO NOT SERVE
RobCo Industries · Archive Museum

campaign-configs-notes.md



RELEASE

planning/2.8.0/mockups/campaign-configs-notes.md

sha256 1b462a5c717e4f28 · 6760 bytes · original held in the private archive

# CAMPAIGN CONFIGS on SETTINGS — Design Notes (mockup for owner review) **Files:** `campaign-configs.html` (self-contained mockup) + the `campaign-configs-*.png` screenshots in this folder. ## What this is The `#campgPanel` campaign-level config controls, modernized for the new SETTINGS tab in the overhaul hardware language. Same machine as the Director Uplink + Module Bay (settings-tab.html / module-bay-mockup.html / nv-machine-mockup.html): same amber-on-phosphor palette, same collapsible board DNA (one-line LED status row when closed), same copper edge-connectors, casing, bezel and Overseer column. **RESKIN ONLY — no behavior change.** Every control keeps its exact function and stored key; only the presentation changes. Real plain-English labels ride along as searchable sub-labels — `(GAME)`, `(PLAYSTYLE)`, `(PLAYTHROUGH TYPE)`, `(COMPLETE RNG)`, `(WIPE TERMINAL)` — per the Protocol 25 redesign guardrails. ## The two boards (slot fiction: P-DECK + INTERLOCK, above REG PORT on the backplane) ### 1. CAMPAIGN PROFILE — `P-DECK` (phosphor board) | Control | Fiction | Real control / key (unchanged) | | --- | --- | --- | | Game | **PROGRAM CARTRIDGE** — two holotape cartridges, seat one; the unseated one sits raised + dashed | `#gameContextSelect` → `onGameContextChange(ctx)` — same reload-on-switch, each game keeps its own campaign | | Playstyle | **ENGAGEMENT DOCTRINE** — 2-position rocker, active cell lit | `#playstyleInput` → `changePlaystyle()` → `robco_playstyle`; the Educated/Dead-Weight melee lockout modal is unchanged | | Playthrough type | **OPERATIONAL TEMPO** — rotary dial + 5 direct-pick detents (1 tap per pick — *fewer* taps than the current `<select>`'s open-then-pick, satisfying the no-added-taps guardrail) | `#playthroughTypeSelect` → `onPlaythroughTypeChange()` → `state.playthroughType` | Collapsed status row: `NEW VEGAS CARTRIDGE · ANY WEAPON · TEMPO: STANDARD` — the board is never information-free when closed (0i). ### 2. RANDOMIZER INTERLOCK · PURGE — `INTERLOCK` (red danger board) The star requirement: **Complete RNG's arm-then-commit permanence made physical.** A breaker in a hazard-striped well, with an explicit commit-sequence legend that lights the current step: `SAFE ▸ ARMED — reversible ▸ + WIPE ▸ SEALED — permanent` - **SAFE** (`campaignMode:'standard'`, checkbox unchecked): amber **safety cover** closed over the breaker — "LIFT TO ARM". Two deliberate taps to arm (lift cover, throw lever), so it can't be armed by a stray thumb; still zero taps added for the common case (leaving it alone). - **ARMED** (`'rng'`, checkbox checked — reversible): lever up, amber pulsing LED on the board summary, banner spelling out the shipped semantics: commits at the **next terminal wipe only**, never retroactive, combines with any tempo, disarm any time before the wipe. A `▾ DISARM` button is offered alongside the lever itself. - **SEALED** (`'rng-locked'`, checkbox checked + disabled): cover gone, red wire-seal ✕ + lead "SEALED" disc over the lever, red hazard frame, red banner — "welded shut when this campaign was created; cannot be disabled." The seal *is* the disabled toggle. - **TERMINAL PURGE** (wipeTerminal, double-confirm unchanged) lives on the same board, directly below the interlock — because the wipe is the interlock's commit point. Its note states both outcomes: wipe while ARMED → sealed run; wipe while SAFE → standard run. Collapsed status row tracks the state: `RNG SAFE · PURGE KEY STOWED` / `RNG ARMED — COMMITS AT NEXT WIPE` / `RNG SEALED — PERMANENT THIS RUN`. ## Mobile compactness (0g / 0i) Both boards are `<details>` with 44px summary rows; the rest of the SETTINGS tab (REG PORT, SLOT 01–05, SVC TRAY) shows as collapsed one-line rows, unchanged from settings-tab.html. All tap targets ≥28px (detents 34px, rocker cells 44px, cartridges 74px, breaker well 104×118px); inputs inherit the 16px baseline; incomplete flex rows center (cart deck, seq strip); no horizontal overflow at 360/412 (verified in-shot: `scrollWidth === innerWidth` at 360, 412, 1440). ## Build invariants (when this is built) - Reuses the existing controls/keys verbatim: `#gameContextSelect`, `#playstyleInput`/`robco_playstyle`, `#playthroughTypeSelect`/`state.playthroughType`, `#completeRngToggle`/`state.campaignMode` (`standard`/`rng`/`rng-locked`), `wipeTerminal()` — stored semantics never change even where presentation is inverted (Protocol 25). - Both boards get `data-sub-id` open/closed persistence (Protocol UI-2/UI-6); board summaries follow the settings-tab summary pattern. - The Schematic View fallback lists the same configs as plain labelled controls (muscle-memory guardrail). - Copper edge-connectors use `background-repeat: round` (Suite 160 stray-pin rule); all new motion is plain `animation`, neutralized by the global reduced-motion block. - Tempo detent descriptions ("balanced pacing…", etc.) are illustrative copy — final wording TBD; they describe the AI-directive flavor each type already carries. ## Open questions for the owner 1. **Board order on SETTINGS:** mocked with the two campaign boards at the very top (they're the most gameplay-facing), above ACCOUNT/REG PORT. Flip to ACCOUNT-first if you prefer the settings-tab order unchanged. 2. **CAMPAIGN STATUS / CROSSROADS RECORD / INCIDENT LOG:** these are campaign *records*, not configs — the mockup proposes they stay on DATABANK `[3]` with quests/map rather than move to SETTINGS. Confirm or fold them in as a third (collapsed) readout board. 3. **One board or two:** the interlock + purge could merge into the CAMPAIGN PROFILE board to save a row; kept separate so the danger surface is visually quarantined (red board) and the profile board stays calm. Confirm the split. 4. **Cartridge swap confirm:** today the game `<select>` switches (and reloads) immediately. Keep 1-tap-swap parity, or add a confirm since a reload interrupts play? (Mockup keeps parity — no added gate.) ## Screenshots | File | What it shows | | --- | --- | | `campaign-configs-412.png` | Full SETTINGS tab at 412px — profile + interlock boards open, RNG **SAFE** (cover closed), module-bay rows collapsed below | | `campaign-configs-412-armed.png` | 412px, interlock **ARMED** — cover lifted, lever thrown, amber banner + "ARMED — reversible" step lit | | `campaign-configs-412-locked.png` | 412px, interlock **SEALED** (`rng-locked`) — red frame, wire seal + SEALED disc, permanence banner | | `campaign-configs-desktop.png` | Desktop desk-terminal — two boards side-by-side in the bay grid, Overseer column + 7-keycap bezel | All shots verified: no horizontal overflow at 360/412/1440; incomplete rows center.
STAMP · generated for RELEASE v2.8.5 commit 06e5180 (06e51801b38a) · archive input-tree hash c07fbfbdd2e1ddeb · 754 files · no wall-clock timestamp (regenerates identically when nothing changed).