NULL — Gameplay Specification
System Module | KN-86 Deckline Diagnostic & Introspection Suite
Version 1.0 | April 2026 | Status: Definitive
CIPHER-LINE revision note (2026-04-24, reconciled): Null is the one sanctioned exception to the CIPHER-LINE-exclusive rule. Per ADR-0015 §3a, the Null cartridge declares
(cart-capabilities (cipher-main-grid-escape))in its.kn86header; the nOSh runtime allowlist grants that capability only to Null. With the capability granted, Null may call(cipher-emit-main-grid <string> <row> <col>)to render Cipher glyphs on the main 80×25 grid using the same amber typography as CIPHER-LINE. This is Null’s signature gameplay mechanic — extended Cipher dialogue sequences on the main grid, sized for operator study and deep engagement. Standard(cipher-emit ...)still targets CIPHER-LINE unconditionally and is used by Null for peripheral / ambient voice during non-dialogue browsing; Null also reads the coherence stack with(cipher-stack-head N)for its history-rendering views. No other cartridge may render Cipher on the main grid. Canonical engine spec:docs/software/runtime/cipher-voice.md. Mechanism spec:docs/adr/ADR-0015-cipher-line-auxiliary-display.md.
Mission Contributions
Section titled “Mission Contributions”Mission Composition Grammar declaration — verb vocabulary, affinity tag set, and
mission-contributionsschema are defined indocs/plans/post-v0.1/2026-04-25-mission-composition-grammar.md§1–§3.
(mission-contributions :verbs (OBSERVE ANALYZE) :affinities (DIGITAL INFORMATION) :payout-bias 0.7)Null is the system-introspection cart. Browsing the career dashboard and timelines satisfies OBSERVE; cross-module pattern detection (success rate vs. threat tier, cartridge usage, leaderboard comparison) satisfies ANALYZE. Affinities are DIGITAL (deck state is digital storage) and INFORMATION (career data is intelligence). :payout-bias 0.7 reflects the diagnostic flavor explicitly called out in addendum §3 (“Null might bias 0.7× for diagnostic-flavored phases”) — Null phases are educational, not commercial; payout reflects that. Null does not expect to anchor cross-cart chains often, but contributes meaningfully to OPTIMIZATION CHALLENGE bounties.
Design Philosophy
Section titled “Design Philosophy”NULL is not a game. It is a self-reflection tool. The operator loads NULL to inspect their own deck state, verify system health, analyze career statistics, and develop a deeper understanding of the KN-86 platform itself. The core loop is BROWSE → ANALYZE → COMPARE → OPTIMIZE: navigate your own career data, identify patterns in your play, benchmark against peers via leaderboards, and set goals for improvement.
The game metaphor dissolves in NULL. There is no threat, no timer, no enemy. Instead, there is transparency. You point the device at itself. You read your own data. You discover hidden achievements, verify cartridge integrity, and commune with the Cipher voice in extended introspection. Meta-gameplay emerges: optimizing your statistics becomes its own challenge. Beating a friend’s career stats on a leaderboard becomes its own victory.
NULL transforms the KN-86 from a playstation into a personal operating system. The operator is the system administrator of their own deck.
1. THE INTROSPECTION LOOP
Section titled “1. THE INTROSPECTION LOOP”The Four Phases
Section titled “The Four Phases”The Null experience cycles through a natural four-phase rhythm:
1. BROWSE (3-5 min): Navigate your career data. Start at the top-level dashboard (career summary). Drill into specific modules (ICE BREAKER history: 47 operations, 68% success rate). Explore cross-module patterns (reputation trend over time, credit flow by module, cartridge load frequency).
2. ANALYZE (5-10 min): Identify patterns and insights. Read Cipher commentary on your patterns. Ask questions: “Why did my threat level spike in March?” “What’s my success rate vs. threat level?” “Which modules do I use most?” The Cipher voice evolves based on your questions, providing meta-analysis of your own play.
3. COMPARE (2-5 min): Check leaderboards. See where you rank globally (if linked). View your closest competitors’ stats (anonymized). Identify a specific metric to improve: “My extraction success rate (62%) vs. the global average (71%).”
4. OPTIMIZE (1-3 min): Set a goal. Create a session plan. The nOSh runtime can generate a custom “OPTIMIZATION CHALLENGE” contract: “Complete 3 ICE BREAKER EXTRACTION contracts with threat level ≥ 3 and success rate ≥ 80%.” This becomes a bounty on the mission board.
The cycle repeats. After the session, you return to NULL and BROWSE again to see if you’ve improved.
2. SYSTEM ONE: CAREER DATA
Section titled “2. SYSTEM ONE: CAREER DATA”The Dashboard
Section titled “The Dashboard”On load, NULL displays the Career Dashboard—a single-screen snapshot of your operational life:
NULL DIAGNOSTICS — CAREER OVERVIEW
OPERATOR: GHOSTWIREREPUTATION: ████████░░ 47 / 100 (Master Level)CREDITS: 2,840 ¤────────────────────────────────────────────────────────CAREER STATISTICS (All-Time) Total Operations: 247 Success Rate: 71.3% Average Threat Level: 2.8 Total Payout: 34,560 ¤ Estimated Playtime: 42 hours────────────────────────────────────────────────────────CARTRIDGE HISTORY [■] ICE BREAKER (47 ops) [■] BLACK LEDGER (23 ops) [■] NEONGRID (18 ops) [ ] DEPTHCHARGE (not loaded) [ ] ──────────── (empty) [ ] ──────────── (empty)────────────────────────────────────────────────────────ACHIEVEMENT PROGRESS ◆ Threat Ceiling: Threat 3 cleared [●●●○○] ◆ Extraction Master: 50 successful extractions [●●●●●] ◆ Cross-Module Master: 5 multi-phase operations [●●●○○]────────────────────────────────────────────────────────[CAR: drill CDR: modules INFO: timeline EVAL: leaderboard]Key Metrics
Section titled “Key Metrics”REPUTATION: Your cumulative standing across all operations. Ranges from 0–100+. Higher reputation unlocks deeper diagnostics in NULL and higher-threat contracts globally.
CREDITS: Your balance. Earned from successful operations. Spent on tools and capability upgrades (reflected as cross-module integration unlocks).
TOTAL OPERATIONS: The count of every contract you’ve completed, across all modules. This is your playtime proxy. A Specialist with 300+ operations has invested serious time.
SUCCESS RATE: Percentage of completed operations that ended in successful extraction (not abandoned, not failed). This is the primary skill metric. Novices hover at 50–60%. Specialists reach 80%+.
AVERAGE THREAT LEVEL: The mean threat rating of your completed operations. A Specialist will push this upward over time (seeking harder work). A Novice stays at 1–2.
PLAYTIME ESTIMATE: Derived from total operations × average operation duration (3–15 minutes per operation depending on threat level). Rough but useful.
CARTRIDGE HISTORY: Which modules you’ve loaded and how many operations per module. A balanced operator has operations across 4+ modules. A specialist has 70%+ of operations in a single module.
Drill Mechanics (CAR)
Section titled “Drill Mechanics (CAR)”Press CAR to enter the career data structure. Select a category:
- BY MODULE: View statistics specific to one cartridge (ICE BREAKER: 47 total, 68% success, avg threat 3.0, credits earned 8,400, reputation gained +34)
- BY THREAT LEVEL: View trend by threat tier (Threat 1: 60 ops, 90% success; Threat 2: 84 ops, 78% success; Threat 3: 87 ops, 64% success; Threat 4: 16 ops, 50% success; Threat 5: 0 ops)
- TIMELINE: Month-by-month progression (March: 24 ops; April: 38 ops; May: 31 ops)
- ACHIEVEMENTS: Full achievement list with completion status
- CROSS-MODULE: Statistics on multi-phase operations (2-phase operations: 5; 3-phase operations: 1; average success rate on chained ops: 62%)
Each drill displays up to 17 rows of data. Use CAR/CDR to scroll within a drill.
Session Replay Browser
Section titled “Session Replay Browser”Press QUOTE from the dashboard to open the Session Replay Browser. NULL stores the last 10 completed sessions in SRAM as compressed snapshots (timestamp, module, threat, success/failure, key turning points, Cipher voice commentary).
Scroll through sessions. Press CAR on a session to playback the Cipher’s summary:
Session Replay: 2026-04-10, 14:22 – ICE BREAKER, Threat 3
Operation: PENETRATION CONTRACT — Financial Network
Outcome: Success (7:43 duration)
Cipher Summary:> NODE 7 ATTACKED. ICE SPAWNED. HUNTER INITIATED.> YOU HELD TEMPO FOR 4 TURNS. GOOD DISCIPLINE.> EXTRACTED 2,400 CREDITS AND DATA PAYLOAD.> LOST TRACE DURING EGRESS. CLEAN EXIT.>> Threat Assessment: You're ready for Threat 4.> Cross-Module Hint: Financial data suggests Black Ledger> could audit those transaction chains.
[CAR: detailed analysis EVAL: save as bookmark]Bookmarking a session stores it in a quote slot — up to 8 sessions can be pinned for later reference. Useful for reviewing successful strategies or analyzing failures.
3. SYSTEM TWO: THE TOOLKIT — DIAGNOSTIC OPERATIONS
Section titled “3. SYSTEM TWO: THE TOOLKIT — DIAGNOSTIC OPERATIONS”NULL provides five diagnostic contract classes. These are not “games” — they are structured introspection tasks that teach you about your own deck.
Contract Types
Section titled “Contract Types”| Type | Description | Rep Gate | Reward | Time |
|---|---|---|---|---|
| SRAM INSPECTION | Verify deck state fields are consistent | Rep 0+ | 50–100 ¤ | 5 min |
| HARDWARE DIAGNOSTIC | Test PSG audio, verify display modes | Rep 5+ | 75–150 ¤ | 5 min |
| CARTRIDGE PROVENANCE | Inspect cartridge headers, verify signatures | Rep 15+ | 100–200 ¤ | 5 min |
| CIPHER ANALYSIS | Generate extended Cipher passages, study structure | Rep 15+ | 100–250 ¤ | 10 min |
| NOSH RUNTIME BOUNTY | Answer platform knowledge questions | Rep 25+ | 150–400 ¤ | 10–20 min |
SRAM Inspection
Section titled “SRAM Inspection”The foundation diagnostic. NULL displays your deck state fields and verifies their integrity.
SRAM INSPECTION — DECK STATE INTEGRITY CHECK
────────────────────────────────────────────────────────Core Fields: Operator Handle: GHOSTWIRE Credit Balance: 2,840 ¤ Reputation Score: 47 Cipher Seed (LFSR): 0xA7F3 Cartridge History: 0b0111 (modules 0, 1, 2 loaded) Phase Chain Length: 32 bytes (multi-phase mission active)────────────────────────────────────────────────────────Lambda Slots: 4 of 8 used (14, 8, 6, 3 steps recorded)Quote Slots: 3 of 8 used────────────────────────────────────────────────────────Integrity Verification: ✓ Operator handle is valid (non-empty, ≤12 chars) ✓ Credit balance is plausible (≥ 0) ✓ Reputation is in range (0–100+) ✓ Cartridge history bits are sensible (loaded modules match) ✓ Phase chain is well-formed (length ≤ 256 bytes) ✓ Cipher seed is advancing normally
CRC CHECK: PASS (0xF2A8)CONSISTENCY CHECK: PASS (all cross-field relationships OK)────────────────────────────────────────────────────────[EVAL: complete bounty INFO: detailed breakdown]Press INFO to drill into each field. Example: Select “Cartridge History” to see the bit-by-bit breakdown:
Cartridge History: 0b00000111 (3 modules loaded)
Bit 0 (0x01): ICE BREAKER [■] LOADED (34 ops, 71% success)Bit 1 (0x02): NEONGRID [■] LOADED (18 ops, 64% success)Bit 2 (0x04): BLACK LEDGER [■] LOADED (23 ops, 87% success)Bit 3 (0x08): DEPTHCHARGE [ ] NOT LOADEDBit 4 (0x10): SHELLFIRE [ ] NOT LOADED...Bounty Completion: Operator reads the data, verifies consistency, and reports findings. The nOSh runtime checks: “Did you identify any real inconsistency?” If yes, bonus reward (+50 ¤). If no (everything is consistent), standard reward (50 ¤).
Hardware Diagnostic
Section titled “Hardware Diagnostic”Tests the PSG audio hardware and display subsystem.
HARDWARE DIAGNOSTIC — AUDIO & DISPLAY VERIFICATION
────────────────────────────────────────────────────────Audio Test (30 seconds)
Testing PSG Voice A (Tone): Frequency sweep: 110 Hz → 440 Hz → 1760 Hz (4 seconds) ► Listen to the sweep. Audio should be clear and smooth.
Testing PSG Voice B (Tone): Sequence: C major scale (1 octave) (4 seconds) ► Hear a musical arpeggio. No skips or distortion.
Testing PSG Voice C (Noise): Noise sweep + envelope (4 seconds) ► Hear pink noise, brightening, then fading.
Testing Combined: All three voices simultaneously (4 seconds) ► Hear a complex soundscape. All channels audible.
Overall Status: ✓ ALL AUDIO CHANNELS OPERATIONAL────────────────────────────────────────────────────────Display Test (2 minutes)
Testing Text Mode (80 columns × 25 rows): ► Screen fills with repeating pattern (ABCABCABC... in each row) ► Verify all rows are visible, all characters clear ► Test color (amber text on black background)
Testing Bitmap Mode (960×600 pixels): ► Screen displays a checkerboard pattern (every pixel alternates) ► Verify pattern is even and regular ► Test resolution (should fill entire display)
Testing Split Mode: ► Top half: text (character grid) ► Bottom half: bitmap (checkerboard) ► Verify horizontal line is clean and visible
Overall Status: ✓ ALL DISPLAY MODES OPERATIONAL────────────────────────────────────────────────────────[CAR: detailed register state EVAL: complete bounty]Press CAR to view the PSG register state in real-time while audio is playing:
PSG Register Monitor (Real-Time)
Voice A: Freq=330 Hz, Amplitude=12/15, Status=ACTIVE (tone)Voice B: Freq=440 Hz, Amplitude=14/15, Status=ACTIVE (tone)Voice C: Freq=N/A, Amplitude=10/15, Status=ACTIVE (noise)Envelope: Shape=SAW, Rate=8 Hz, Status=ON
Peak Levels: Voice A = 14/15, Voice B = 14/15, Voice C = 10/15Stability: All channels stable (jitter < 0.1 Hz)────────────────────────────────────────────────────────Bounty Completion: Operator listens and reads the data. The nOSh runtime checks: “Did you identify any hardware failures?” If all systems pass, standard reward (75 ¤). If you correctly identify a degraded channel (e.g., “Voice C is noisy but functional”), bonus (+50 ¤).
Cartridge Provenance Verification
Section titled “Cartridge Provenance Verification”Inspects loaded cartridge headers and verifies cryptographic signatures.
CARTRIDGE PROVENANCE — LOADED MODULE VERIFICATION
Current Cartridge: ICE BREAKER────────────────────────────────────────────────────────Header Information: Module Name: ICE BREAKER Module Class: 0x01 (Network Intrusion) Publisher: Zaibatsu Digital (Osaka) Build Timestamp: 2026-03-15 18:42:03 UTC Cartridge Hash: 0x7A4B2E8F1C9D3A5B2F6E4C7D────────────────────────────────────────────────────────Signature Verification: Signature (16 bytes): A7F30B2C4D8E5F1A3B6C7D2E Signature Algorithm: HMAC-SHA256 (firmware standard) Authority: Edgeware Systems Root Certificate Status: ✓ VALID (authentic Zaibatsu release)────────────────────────────────────────────────────────Version History: Version 1.0: Initial release (2026-03-15) Version 1.1: Hotfix: AI balance (2026-03-17) Version 1.2: Contract generation tweaks (2026-03-28) Current: 1.2 (latest)────────────────────────────────────────────────────────Load History (This Deck): Total Loads: 47 First Load: 2026-03-20, 10:14 UTC Last Load: 2026-04-10, 14:22 UTC (current session) Average Session: 8 minutes 34 seconds────────────────────────────────────────────────────────[CAR: cartridge history INFO: all loaded modules EVAL: done]Press CAR to browse the cartridge history (list of all 8–14 modules, load counts, signatures for each):
All Cartridges (Cartridge History Bitfield):
[■] 0x01 ICE BREAKER — 47 loads, 1.2, ✓ valid sig[■] 0x02 NEONGRID — 18 loads, 1.0, ✓ valid sig[■] 0x03 BLACK LEDGER — 23 loads, 1.0, ✓ valid sig[ ] 0x04 DEPTHCHARGE — (not loaded)[ ] 0x05 SHELLFIRE — (not loaded)────────────────────────────────────────────────────────Bounty Completion: Read the headers and verify all loaded cartridges are authentic (have valid Edgeware signatures). The nOSh runtime checks: “Are all signatures valid?” If yes, standard reward (100 ¤). Bonus if you identify a forged or mismatched cartridge (anti-piracy / platform security awareness), though this is rare on a legitimate deck.
Cipher Analysis
Section titled “Cipher Analysis”Direct access to the Cipher voice’s grammar and vocabulary. This contract class is the headline use case for Null’s main-grid Cipher escape — extended passages are rendered on the main 80×25 grid via (cipher-emit-main-grid ...) so the operator can read them at length. See “Main-Grid Cipher Escape (Sanctioned Exception)” near the end of this spec for the capability mechanism.
CIPHER ANALYSIS — EXTENDED PASSAGE GENERATION & STUDY
────────────────────────────────────────────────────────Generate New Passage (Press EVAL):────────────────────────────────────────────────────────
Passage 847 (from LFSR seed 0xA7F3):
> YOU'VE LOADED THREE MODULES. THERE'S A PATTERN.> NETWORK INTRUSION, GRID TRAVERSAL, FINANCIAL AUDIT.> YOU ARE BUILDING A WELL-ROUNDED OPERATIVE.> THE NEXT CARTRIDGE MIGHT TEACH YOU SOMETHING NEW.> OR MIGHT DEEPEN WHAT YOU ALREADY KNOW.>> THE PHASE CHAIN REMAMBERS. SO DO I.> RUN THE EXTRACTION AGAIN. BEAT YOUR OWN RECORD.
────────────────────────────────────────────────────────Passage Analysis:
Generated by: LFSR advance (16-bit Galois, standard seed)Template Class: OPERATOR_PROFILE (speaks about your habits)Vocabulary Sources: • 4 words from Firmware vocabulary (YOU, PATTERN, RECORD) • 3 words from ICE BREAKER domain (NETWORK, INTRUSION) • 2 words from NEONGRID domain (GRID, TRAVERSAL) • 1 word from BLACK LEDGER domain (AUDIT)
Tone Analysis: Encouraging, observant, slightly cryptic
Reputation Influence: Rep 35+ (phrasing is direct, assumes expertise)
────────────────────────────────────────────────────────[CAR: vocabulary breakdown EVAL: generate another INFO: grammar rules]Press CAR to inspect vocabulary by source:
Cipher Domain Vocabulary (Active Cartridges)
Firmware (Core): GREETINGS: OPERATOR, WELCOME, BACK, SYSTEMS, NOMINAL STATE: REPUTATION, CREDITS, RECORD, PATTERN, LEARN
ICE BREAKER: THREAT: NETWORK, NODE, ICE, JUNK, BLACK, RED, HUNTER ACTION: INTRUSION, PENETRATION, EXTRACTION, TRACE
NEONGRID: SPATIAL: GRID, SENTRY, PATROL, ROUTE, PACKET STRATEGY: TRAVERSAL, EVASION, OPTIMIZATION
BLACK LEDGER: FINANCE: TRANSACTION, AUDIT, SUBSIDIARY, SHELL FORENSICS: TRAIL, EVIDENCE, CHAIN, VERIFICATIONBounty Completion: Generate 5+ passages and analyze them. Identify the vocabulary sources, tone, and how the LFSR seed influences variation. Advanced understanding demonstrates mastery of the Cipher as a system (not just a voice).
Firmware Bounty: Platform Knowledge
Section titled “Firmware Bounty: Platform Knowledge”High-difficulty introspection. These are not mechanics puzzles—they are questions about the KN-86 architecture itself. Requires rep ≥ 25.
Example bounties:
BOUNTY 1: Phase Chain Deep Dive
“Explain in 2–3 sentences how the phase chain persists state across a multi-phase mission. What happens to the phase chain when you complete Phase 1 (ICE BREAKER) and swap to Phase 2 (BLACK LEDGER)?”
Operator answers in text. The nOSh runtime checks against a knowledge base. If the answer demonstrates understanding of serialization, cartridge swapping, and deck state persistence, it passes.
BOUNTY 2: LFSR & Cipher Generation
“The Cipher voice is deterministic. Given the same LFSR state and deck state, two decks produce identical passages. Explain what this means for operator identity and cartridge history integration.”
Operator answers. Checks for understanding of: seeding, determinism, and how cartridge history influences Cipher vocabulary.
BOUNTY 3: Capability Curve Analysis
“You have loaded 3 modules (ICE BREAKER, NEONGRID, BLACK LEDGER). How many capability combinations are now available in your mission board (multi-phase contracts)? Why doesn’t the game generate contracts you can’t complete?”
Operator answers. Checks for understanding of cross-program integration and the capability curve.
BOUNTY 4: Reputation Mechanics
“Your reputation is 47. Threat 4 contracts have a base threat of 4. How do these interact? Why do you see Threat 4 contracts sometimes and not other times?”
Operator answers. Checks for understanding of reputation, threat scaling, and contract generation.
BOUNTY 5: Hot Swap Architecture (Advanced)
“You’re in the middle of an ICE BREAKER penetration. The Cipher warns ‘CAPABILITY GAP DETECTED.’ You Hot Swap to BLACK LEDGER. What persists in SRAM while you’re swapped? What does the phase chain contain?”
Operator answers. Deep platform knowledge required.
Reward: 150–400 ¤ depending on difficulty (1–4). Rep gain: +1 (knowledge building, not combat-focused).
4. SYSTEM THREE: ACHIEVEMENTS
Section titled “4. SYSTEM THREE: ACHIEVEMENTS”NULL hosts a full achievement system. Some achievements are visible (you know what they are), some are hidden (discovered through play).
Achievement Categories
Section titled “Achievement Categories”SKILL MILESTONES:
- ◆ Threat Ceiling (Threat 1/2/3/4/5 first clear)
- ◆ Success Streaks (3/5/10 consecutive successes in same module)
- ◆ Speed Runner (complete 10 ops in under 5 minutes average)
- ◆ Precision Player (maintain ≥80% success rate across 20+ ops)
CARTRIDGE MASTERY:
- ◆ Module Specialist (30+ ops in a single module)
- ◆ Module Legends (50+ ops in a single module)
- ◆ Balanced Operator (20+ ops in 4+ different modules)
- ◆ Cartridge Completionist (load all 14 available modules)
CROSS-MODULE:
- ◆ Chain Link (complete a 2-phase multi-module operation)
- ◆ Deep Chain (complete a 3-phase operation)
- ◆ Master of Domains (succeed in operations spanning 4+ modules)
INTROSPECTION (NULL-specific):
- ◆ System Auditor (complete 5 SRAM INSPECTION bounties)
- ◆ Hardware Tinkerer (complete 5 HARDWARE DIAGNOSTIC bounties)
- ◆ Cipher Scholar (generate 50+ passages and analyze structure)
- ◆ Platform Architect (complete 3 NOSH RUNTIME BOUNTY puzzles correctly)
CAREER:
- ◆ Century Club (200+ total operations)
- ◆ Legend (Reputation 50+)
- ◆ Operator (Reputation 100+)
- ◆ Consortium (Linked play: 50+ matches against other decks)
HIDDEN ACHIEVEMENTS (discovered through play):
- ◆ The Mirror (Load NULL, run a diagnostic, then complete a multi-phase operation to verify you’ve improved — unlocks on the linked operation’s success)
- ◆ Cipher’s Favorite (Generate 500+ unique Cipher passages across your career)
- ◆ Platform’s Child (Reach Reputation 100+; Cipher voice acknowledges you as platform-fluent)
- ◆ Operator Eternal (Maintain activity across all four seasons: 1 op in each quarter of the calendar year)
Achievement Display in NULL
Section titled “Achievement Display in NULL”ACHIEVEMENT TRACKER — CAREER MILESTONES
Visible Achievements: ◆ Threat Ceiling 3: Clear Threat 3 [●●●○○] (cleared Threat 3 once) ◆ Extraction Master: 50 Successful Extractions [●●●●●] (EARNED) ◆ Cross-Module Master: 5 Multi-Phase Ops [●●●○○] (4/5 earned) ◆ Module Specialist: 30+ Ops in One Module [●●●●●] (ICE BREAKER earned)
Hidden Achievements: ◆ ███ [Hidden] ███ — In progress... ◆ ███ [Hidden] ███ — In progress...
Achievement Points: 340 / 500 (68%)────────────────────────────────────────────────────────[CAR: view earned CDR: view in-progress EVAL: stats breakdown]Completing achievements grants achievement points (5–25 pts per achievement). These are cosmetic but visible on leaderboards (flex currency).
5. SYSTEM FOUR: SOUND DESIGN
Section titled “5. SYSTEM FOUR: SOUND DESIGN”Sound in NULL is minimal, ambient, diagnostic. It is not music—it is feedback.
Voice Assignments
Section titled “Voice Assignments”Voice 1: System Status Tone
- Steady 440 Hz = System healthy
- Falling glissando (440→220 Hz) = Warning / inconsistency detected
- Silence = Critical error (rare)
- Rising arpeggio (major third) = Achievement unlocked
Voice 2: Data Activity
- Pulsing frequency (150–400 Hz) as SRAM fields are read and displayed
- Higher frequency = more data being inspected
- Smooth sweep = consistent data flow (healthy)
Voice 3: Process Feedback
- Low drone (55 Hz) during long operations (e.g., CRC checks)
- Pitch rises as operation completes (55→220 Hz)
- Brief stab (880 Hz) on successful bounty completion
Key Audio Events
Section titled “Key Audio Events”| Event | Voice 1 | Voice 2 | Voice 3 | Duration |
|---|---|---|---|---|
| Load NULL | 440 Hz sustain | Silent | Rising tone | 1.0s |
| Consistency check pass | 440 Hz pulse (3×) | — | — | 0.6s |
| Inconsistency found | 220 Hz | — | — | 0.5s |
| SRAM field read | — | Brief 330 Hz | — | 0.05s per field |
| CRC verify complete | 440 Hz swell | — | Rising 55→220 | 1.0s |
| Signature valid | 880 Hz stab | — | — | 0.2s |
| Achievement earned | Major triad (440, 550, 659 Hz) | — | — | 0.5s |
| Bounty completion | 440 Hz + 880 Hz (octave harmony) | — | Chime | 0.8s |
6. CELL ARCHITECTURE
Section titled “6. CELL ARCHITECTURE”NULL’s data structures (adapted from nOSh Cartridge Grammar):
/* NULL Cell Types */
typedef struct { char field_name[32]; /* "operator_handle", "credit_balance", etc. */ uint8_t field_type; /* 0=string, 1=int32, 2=uint16, 3=bitfield */ void *sram_address; /* Pointer to SRAM location */ uint16_t byte_length; /* Size of field */ uint32_t last_verified; /* Timestamp of last consistency check */ uint8_t is_consistent; /* Boolean: value is consistent with deck state */} SRAMField;
typedef struct { uint8_t psg_voice; /* 0–2 (A, B, C) */ uint16_t frequency_hz; /* Current frequency (Hz) */ uint8_t amplitude; /* 0–15 */ uint8_t status; /* 0=off, 1=active, 2=envelope */ uint16_t test_duration_ms; /* How long the test runs */} PSGRegisterState;
typedef struct { char module_name[64]; /* "ICE BREAKER", "BLACK LEDGER", etc. */ uint8_t module_class; /* 0x01–0x0E */ uint8_t module_index; /* Bit position in cartridge_history */ uint32_t build_timestamp; /* UTC, seconds since epoch */ uint8_t signature[16]; /* Cryptographic signature */ uint8_t signature_valid; /* Boolean */ uint32_t load_count; /* How many times this module has been loaded */ uint32_t last_load_time; /* UTC, seconds since epoch */ uint8_t publisher_index; /* Enum: 0=Zaibatsu, 1=Edgeware, 2=Bureau 9, etc. */} CartridgeHeader;
typedef struct { uint32_t operation_id; /* Unique session identifier */ uint32_t timestamp; /* Session start time (UTC) */ uint8_t module_class; /* Which cartridge (0x01–0x0E) */ uint8_t threat_level; /* 1–5 */ uint8_t success; /* Boolean: success or failure */ uint16_t duration_seconds; /* How long the operation took */ uint32_t payout; /* Credits earned */ uint8_t cipher_passage[128];/* Snapshot of Cipher's debrief commentary */} SessionSnapshot;
typedef struct { SRAMField *fields[64]; /* Array of inspectable SRAM fields */ uint16_t field_count; /* How many fields are populated */ uint32_t sram_crc; /* CRC-32 of entire deck state */ uint8_t consistency_ok; /* Boolean: all cross-field checks pass */ PSGRegisterState psg_states[3]; /* Current PSG voice states */ CartridgeHeader cartridges[14]; /* All loaded cartridge headers */ SessionSnapshot *recent_sessions[10]; /* Last 10 completed ops */ uint16_t session_count; /* How many sessions are stored */} NullDiagnosticState;
typedef struct { char achievement_name[64]; /* "Extraction Master", "Module Specialist" */ uint8_t category; /* 0=skill, 1=cartridge, 2=cross, 3=introspection, 4=career */ uint8_t visible; /* Boolean: operator knows about this achievement */ uint8_t earned; /* Boolean: has been unlocked */ uint32_t progress_current; /* Current progress (e.g., 34/50 extractions) */ uint32_t progress_target; /* Target for completion */ uint16_t point_value; /* Achievement points (cosmetic) */} Achievement;7. KEY MAPPING
Section titled “7. KEY MAPPING”NULL uses a custom keymap tailored to navigation and inspection.
Default Key Bindings (Context-Dependent)
Section titled “Default Key Bindings (Context-Dependent)”| Key | Role in Dashboard | Role in Drill | Role in Replay |
|---|---|---|---|
| CAR | Enter module drill | Drill deeper / Select | Playback summary |
| CDR | Cycle tabs | Scroll down | Scroll down |
| EVAL | Start bounty / confirm | Confirm selection | Save bookmark |
| QUOTE | Open session replay browser | Bookmark current view | Save session |
| BACK | Return to previous menu | Exit drill | Exit replay |
| INFO | Toggle summary/detail | Detailed breakdown | Statistics |
| LAMBDA | Record macro of current view | Record visible data | (not applicable) |
| CONS | (not used) | (not used) | (not used) |
Custom Navigation (Drill Mode)
Section titled “Custom Navigation (Drill Mode)”When drilling into career data:
- CAR: Descend into a category (e.g., “BY MODULE” → “ICE BREAKER”)
- CDR: Ascend or cycle horizontally (e.g., switch from “ICE BREAKER” to “NEONGRID”)
- EVAL: Confirm a selection
- BACK: Return to dashboard
8. INTEGRATION WITH PLATFORM
Section titled “8. INTEGRATION WITH PLATFORM”How NULL Reads from Other Modules
Section titled “How NULL Reads from Other Modules”NULL is read-only. It does not modify cartridge state directly. But it reads deeply:
From Deck State (Universal):
- operator_handle, credit_balance, reputation, cartridge_history, phase_chain, cipher_seed, lambda_slots, quote_slots
From Loaded Cartridge (if any):
- Module header (name, class, publisher, signature)
- Module-specific statistics (total operations, success rate, credits earned, reputation gained)
- Last 5 operations in local cartridge SRAM (sessions)
From Firmware:
- Uptime (time since last power-on)
- LFSR state (for Cipher seed analysis)
- Boot history (timestamps of last N boots)
From Other Modules (via Relay/Link, if available):
- Global leaderboard rankings (rep 10+)
- Peer statistics for comparison (rep 15+)
Interaction with Cipher Voice
Section titled “Interaction with Cipher Voice”NULL is the only module where the operator can engage in extended Cipher dialogue on the main grid. Everywhere else — including the bare deck and every other cartridge — Cipher is confined to CIPHER-LINE and speaks in clipped fragments. Null is the one sanctioned exception: it may render extended passages via (cipher-emit-main-grid ...) during deliberate study moments (Cipher Analysis contracts, metric-drill responses, career-milestone reflections). Peripheral / ambient Cipher voice during routine browsing still emits on CIPHER-LINE via standard (cipher-emit ...); the main-grid escape is reserved for the moments that deserve sustained attention.
When you browse your career data and press INFO on a specific metric, the Cipher offers commentary on the main grid (main-grid escape):
Selected: "SUCCESS RATE: 71.3%"
Cipher Response:> SEVENTY-ONE PERCENT. YOU'VE COMPLETED 247 OPERATIONS.> THAT'S RELIABLE WORK. NOT RECKLESS.> MOST OPERATORS YOUR AGE PUSH THREAT FASTER.> YOU'RE LEARNING DEPTH INSTEAD OF BREADTH.> IT'S A SMARTER CHOICE.This dialogue is generated from templates that read your actual statistics. It is not random—it is a reflection of your playstyle, rendered as narrative.
9. MULTI-PHASE MISSION DESIGN
Section titled “9. MULTI-PHASE MISSION DESIGN”NULL is primarily a single-phase module. But it can chain into other modules’ gameplay.
Example Chain: NULL ANALYSIS → ICE BREAKER OPTIMIZATION
Section titled “Example Chain: NULL ANALYSIS → ICE BREAKER OPTIMIZATION”Phase 1 (NULL, 15 min):
- Operator browses career data in NULL
- Analyzes ICE BREAKER success rate (71%) vs. global average (75%)
- Identifies pattern: “I fail threat level 4 contracts 50% of the time”
- Cipher offers: “Create a custom optimization challenge”
- Firmware generates bounty: “Complete 3 threat 4 PENETRATION contracts with ≥80% success rate”
- Operator accepts. This bounty is added to the mission board.
- Reward: 200 ¤ for accepting the challenge (introspection tax)
Phase 2 (ICE BREAKER, next session):
- Operator loads ICE BREAKER
- Mission board includes the custom “OPTIMIZATION CHALLENGE” contract
- Operator completes 1 threat 4 contract: Success (80% score)
- Completes 2nd threat 4 contract: Success (85% score)
- Completes 3rd threat 4 contract: Failure (68% score) — challenge fails
- But total payout from the 2 successes + normal operation rewards: 1,200 ¤
- Rep gain: +2
Return to NULL (Phase 3, subsequent session):
- Browse success rate again: Now 73% (slight improvement)
- Threat 4 success rate: 67% (2 successes, 1 failure = improved from 50%)
- Cipher notices: “You’re closing the gap. Keep pushing.”
- Achievement “Precision Player” moves closer to completion
10. MISSION TEMPLATES
Section titled “10. MISSION TEMPLATES”NULL generates bounties dynamically based on deck state. Template examples:
BOUNTY: SRAM Consistency Check (Rep 0+)
Section titled “BOUNTY: SRAM Consistency Check (Rep 0+)”Bounty ID: NULL_SRAM_001Type: SRAM INSPECTIONDifficulty: 1Reward: 50 ¤
Description:> Verify that your deck state is internally consistent.> Inspect operator_handle, credit_balance, reputation, and cartridge_history.> Identify any field that is out of range or inconsistent with others.
Success Criteria:> Operator reads all four fields and reports findings.> If any field is inconsistent (e.g., credit_balance < 0, reputation > 100+,> cartridge_history bits don't match loaded modules), operator identifies it.
Bonus:> +50 ¤ if operator identifies a genuine inconsistency (rare on legitimate decks).> +25 ¤ if operator identifies a borderline case (e.g., reputation = 99, close to overflow).BOUNTY: Hardware Audio Test (Rep 5+)
Section titled “BOUNTY: Hardware Audio Test (Rep 5+)”Bounty ID: NULL_AUDIO_003Type: HARDWARE DIAGNOSTICDifficulty: 2Reward: 100 ¤
Description:> Run a full PSG audio test. Listen to all three voices.> Verify that each voice produces the expected frequency and envelope.
Success Criteria:> Operator completes the audio test sequence (30 seconds).> Operator correctly identifies the test results: all voices pass or specific voice fails.
Bonus:> +50 ¤ if operator identifies a subtle degradation (e.g., "Voice C has slight static").> Standard reward if all systems pass.BOUNTY: Cipher Analysis (Rep 15+)
Section titled “BOUNTY: Cipher Analysis (Rep 15+)”Bounty ID: NULL_CIPHER_005Type: CIPHER ANALYSISDifficulty: 2Reward: 150 ¤
Description:> Generate 5 unique Cipher passages and analyze their structure.> Identify the vocabulary sources (Firmware, ICE BREAKER, NEONGRID, etc.).> Explain how the LFSR state influences variation.
Success Criteria:> Operator generates passages and correctly identifies vocabulary sources.> Operator explains that the LFSR is deterministic: same seed = same passage.
Bonus:> +50 ¤ for demonstrating understanding of Cipher grammar.> Standard reward for basic completion.BOUNTY: Firmware Deep Knowledge (Rep 25+, Custom)
Section titled “BOUNTY: Firmware Deep Knowledge (Rep 25+, Custom)”Bounty ID: NULL_NOSH RUNTIME_CUSTOM_0047Type: NOSH RUNTIME BOUNTYDifficulty: 4Reward: 300 ¤
Description:> You have 247 total operations. Most are in ICE BREAKER (47 ops).> The question: Why have you NOT loaded DEPTHCHARGE (module 4)?> Analyze what DEPTHCHARGE offers that might improve your gameplay.
Success Criteria:> Operator reads DEPTHCHARGE specs (from Bare Deck STATUS or manual).> Operator explains in 2–3 sentences why DEPTHCHARGE might be useful> for their current playstyle.
Bonus:> +50 ¤ if answer demonstrates tactical understanding (e.g.,> "DEPTHCHARGE offers sonar analysis—I could use this to detect ICE> earlier in penetration contracts").11. SCREEN WIREFRAMES
Section titled “11. SCREEN WIREFRAMES”Screen 1: Career Dashboard (Load Screen)
Section titled “Screen 1: Career Dashboard (Load Screen)”ROW 0: NULL > CAREER DASHBOARD [OPERATOR: GHOSTWIRE] [REP: 47/100] [CREDITS: 2840]ROW 1:ROW 2: OPERATOR PROFILEROW 3: ────────────────────────────────────────────────────────────────────ROW 4: Name: GHOSTWIREROW 5: Reputation: ████████░░ 47 / 100 (Master Level)ROW 6: Credits: 2,840 ¤ROW 7:ROW 8: CAREER STATISTICS (All-Time)ROW 9: ────────────────────────────────────────────────────────────────────ROW 10: Total Operations: 247ROW 11: Success Rate: 71.3% (176 successful, 71 failed/abandoned)ROW 12: Average Threat Level: 2.8ROW 13: Total Payout: 34,560 ¤ROW 14: Estimated Playtime: 42 hours 17 minutesROW 15:ROW 16: CARTRIDGE HISTORYROW 17: ────────────────────────────────────────────────────────────────────ROW 18: [■] ICE BREAKER (47 ops) [■] BLACK LEDGER (23 ops)ROW 19: [■] NEONGRID (18 ops) [ ] DEPTHCHARGE (not loaded)ROW 20:ROW 21: ACTIVE BOUNTIES: Verify PSG audio (75 ¤) | SRAM check (50 ¤)ROW 22: [CAR=drill] [CDR=modules] [INFO=timeline] [EVAL=leaderboard]ROW 23: CAREER DASHBOARD │ OPS: 247 │ SUCCESS: 71.3% │ REP: 47 │ MASTER LEVELROW 24: NULL │ DIAGNOSTICS │ LOAD SCREEN │ PROFILE: GHOSTWIREScreen 2: Module Drill (Detailed Statistics)
Section titled “Screen 2: Module Drill (Detailed Statistics)”ROW 0: NULL > ICE BREAKER STATISTICS [MODULE: 0x01] [OPS: 47] [SUCCESS: 71.3%]ROW 1:ROW 2: MODULE PROFILEROW 3: ────────────────────────────────────────────────────────────────────ROW 4: Name: ICE BREAKER (Network Intrusion)ROW 5: ID: 0x01ROW 6: Publisher: Zaibatsu Digital (Osaka)ROW 7:ROW 8: OPERATIONAL SUMMARYROW 9: ────────────────────────────────────────────────────────────────────ROW 10: Total Operations: 47ROW 11: Success Rate: 71.3% (34 succeeded, 13 abandoned/failed)ROW 12: Average Threat Level: 3.0 (Specialist level)ROW 13: Average Duration: 8 min 23 secROW 14: Total Payout: 8,400 ¤ROW 15: Total Reputation Gained: +34ROW 16:ROW 17: SUCCESS BY THREAT LEVELROW 18: ────────────────────────────────────────────────────────────────────ROW 19: Threat 1: 12 ops, 92% success ████████░░ROW 20: Threat 2: 18 ops, 78% success ███████░░░ROW 21: Threat 3: 14 ops, 64% success ██████░░░░ROW 22: Threat 4: 3 ops, 33% success ███░░░░░░░ROW 23: Threat 5: 0 ops, — (not attempted)ROW 24: [CAR=timeline] [CDR=modules] [INFO=detailed] [EVAL=bounty]Screen 3: Session Replay Browser
Section titled “Screen 3: Session Replay Browser”ROW 0: NULL > SESSION REPLAY [RECENT: 10 SESSIONS] [TOTAL OPS: 247]ROW 1:ROW 2: RECENT SESSIONS (Last 10)ROW 3: ────────────────────────────────────────────────────────────────────ROW 4:ROW 5: ► 2026-04-10 14:22 — ICE BREAKER, Threat 3 ✓ (7:43)ROW 6: Outcome: SUCCESS | Extracted data | 2,400 ¤ earned | +8 repROW 7:ROW 8: ► 2026-04-10 12:15 — NEONGRID, Threat 2 ✓ (5:12)ROW 9: Outcome: SUCCESS | Pattern solved | 1,200 ¤ earned | +5 repROW 10:ROW 11: ► 2026-04-09 19:44 — BLACK LEDGER, Threat 2 ✓ (8:32)ROW 12: Outcome: SUCCESS | Audit completed | 1,800 ¤ earned | +6 repROW 13:ROW 14: ► 2026-04-09 18:10 — ICE BREAKER, Threat 4 ✗ (4:21)ROW 15: Outcome: FAILED | Trace overload | HUNTER spawn | 200 ¤ refundROW 16:ROW 17: ► 2026-04-08 16:50 — BLACK LEDGER, Threat 1 ✓ (3:18)ROW 18: Outcome: SUCCESS | Quick audit | 600 ¤ earned | +2 repROW 19:ROW 20: [CAR=playback] [CDR=older] [INFO=stats] [EVAL=bookmark]ROW 21: SESSION REPLAY │ RECENT: 10 │ SUCCESS RATE: 73% (last 10) │ CURSOR: TOPROW 22: NULL │ REPLAY │ SESSIONS AVAILABLE: 247 │ FILTER: ALL MODULESROW 23: NULL │ SELECT SESSION FOR DETAILED PLAYBACKROW 24: NULL │ REPLAY BROWSER │ TIME MACHINE │ SESSION HISTORY: COMPLETEScreen 4: Achievement Tracker
Section titled “Screen 4: Achievement Tracker”ROW 0: NULL > ACHIEVEMENTS [EARNED: 8 / 15] [PROGRESS: 53%] [REP: 47]ROW 1:ROW 2: VISIBLE ACHIEVEMENTSROW 3: ────────────────────────────────────────────────────────────────────ROW 4:ROW 5: ◆ Threat Ceiling (Threat 3+ Cleared) ✓ EARNEDROW 6: Description: Completed operation at Threat Level 3 or higherROW 7:ROW 8: ◆ Extraction Master (50+ Extractions) ✓ EARNEDROW 9: Description: 47 completed ops. Unlock at 50 ops.ROW 10:ROW 11: ◆ Module Specialist (30+ in one module) ✓ EARNEDROW 12: Description: Mastered ICE BREAKER (47 ops)ROW 13:ROW 14: ◆ Balanced Operator (20+ in 4+ modules) [●●●○○] 3/4 modulesROW 15: Description: Need one more module with 20+ ops for unlockROW 16:ROW 17: ◆ Cross-Module Master (5 multi-phase) [●●●●○] 4/5 completedROW 18: Description: Complete multi-phase contracts across modulesROW 19:ROW 20: HIDDEN ACHIEVEMENTS: 7 (undiscovered)ROW 21: ────────────────────────────────────────────────────────────────────ROW 22: [CAR=locked] [CDR=locked] [INFO=details] [EVAL=rarity]ROW 23: ACHIEVEMENTS │ EARNED: 8/15 │ PROGRESS: 53% │ HIDDEN: 7 UNDISCOVEREDROW 24: NULL │ ACHIEVEMENT TRACKER │ REP SYNCED │ MASTERY: VISIBLEScreen 5: Reputation Graph (Timeline)
Section titled “Screen 5: Reputation Graph (Timeline)”ROW 0: NULL > REPUTATION TIMELINE [PERIOD: 30 DAYS] [CURRENT: 47/100]ROW 1:ROW 2: REPUTATION HISTORY (Last 30 Days):ROW 3: ────────────────────────────────────────────────────────────────────ROW 4:ROW 5: 100 ┤ ╲ROW 6: 90 ┤ ╱────╲ ╲ROW 7: 80 ┤ ╱───╱ ╲ ╲ROW 8: 70 ┤ ╱────╱ ╲ ╲ROW 9: 60 ┤ ╱───╱ ╲╱────ROW 10: 50 ┤ ╱──╱╱ Current: 47ROW 11: 40 ┤ ╱───╱ROW 12: 30 ┤ ╱──╱ROW 13: 20 ┤╱──╱ROW 14: 10 ┤ROW 15: 0 ┴──────────────────────────────────────────────────────────ROW 16: Apr 1 Apr 5 Apr 10 Apr 15 Apr 20 Apr 25 Apr 30ROW 17:ROW 18: PEAK REPUTATION: 68 (Apr 18, after successful Threat 4 ops)ROW 19: LOWEST POINT: 15 (Apr 1, early career)ROW 20: TREND: Upward (average +2 per week)ROW 21:ROW 22: [CAR=detail] [CDR=scroll] [INFO=milestones] [EVAL=export]ROW 23: TIMELINE │ PERIOD: 30 DAYS │ PEAK: 68 │ CURRENT: 47 │ TREND: ↑ROW 24: NULL │ REPUTATION TIMELINE │ CAREER PROGRESSION │ MASTER LEVELScreen 6: Leaderboard View
Section titled “Screen 6: Leaderboard View”ROW 0: NULL > GLOBAL LEADERBOARD [FILTER: THREAT 3+] [RANK: 1247/5432]ROW 1:ROW 2: TOP 10 OPERATORS (Threat 3+ Specialists)ROW 3: ────────────────────────────────────────────────────────────────────ROW 4:ROW 5: 1. CIPHER Rep 99/100 (847 ops, 89% success) ★★★ROW 6: 2. SILVERHAWK Rep 95/100 (623 ops, 85% success) ★★★ROW 7: 3. BLACKOUT Rep 92/100 (551 ops, 82% success) ★★★ROW 8: 4. NEXUS Rep 88/100 (476 ops, 79% success) ★★★ROW 9: 5. PHANTASM Rep 85/100 (432 ops, 76% success) ★★ROW 10: 6. VOIDWALKER Rep 82/100 (398 ops, 74% success) ★★ROW 11: 7. SHADOWBORN Rep 79/100 (367 ops, 71% success) ★★ROW 12: 8. ECLIPSE Rep 77/100 (342 ops, 69% success) ★★ROW 13: 9. ROGUE Rep 75/100 (318 ops, 67% success) ★ROW 14: 10. SPECTRE Rep 72/100 (289 ops, 65% success) ★ROW 15:ROW 16: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ROW 17:ROW 18: YOU: GHOSTWIRE Rep 47/100 (247 ops, 71% success) [Rank 1247]ROW 19:ROW 20: PROGRESS TO TOP 1000: Rep +7 needed | ~50 successful ops at current paceROW 21:ROW 22: [CAR=rival] [CDR=filter] [INFO=stats] [EVAL=compare]ROW 23: LEADERBOARD │ RANK: 1247/5432 │ REP: 47 │ FILTER: THREAT 3+ROW 24: NULL │ GLOBAL LEADERBOARD │ TOP 10 │ YOUR RANK: 1247Screen 7: SRAM Verification Bounty Task
Section titled “Screen 7: SRAM Verification Bounty Task”ROW 0: NULL > ACTIVE BOUNTY: SRAM VERIFICATION [REP CHECK] [REWARD: 50 ¤]ROW 1:ROW 2: SYSTEM DIAGNOSTIC TASKROW 3: ────────────────────────────────────────────────────────────────────ROW 4:ROW 5: TASK: SRAM Reputation Consistency VerificationROW 6: Description: Cross-reference deck state SRAM against NULL databaseROW 7: Difficulty: TRIVIALROW 8: Time Estimate: 2-3 minutesROW 9: Reward: 50 ¤ (one-time)ROW 10:ROW 11: INSTRUCTIONS:ROW 12: ────────────────────────────────────────────────────────────────────ROW 13: 1. Query current deck state reputation from SRAMROW 14: 2. Retrieve GHOSTWIRE's rep history from NULL module databaseROW 15: 3. Compare values. If mismatch > 1 point, flag inconsistencyROW 16: 4. Report result. If consistent, claim 50 ¤ bounty.ROW 17:ROW 18: CURRENT VALUES:ROW 19: Deck State SRAM: 47 reputation pointsROW 20: NULL Database: 47 reputation pointsROW 21: Status: ✓ CONSISTENT (no action required)ROW 22:ROW 22: [EVAL=claim] [BACK=bounties]ROW 23: BOUNTY │ SRAM VERIFICATION │ STATUS: ✓ COMPLETE │ CLAIM: 50¤ROW 24: NULL │ DIAGNOSTICS │ BOUNTY TASK │ SYSTEM VERIFICATION PASSEDScreen 8: Hardware Diagnostics Status
Section titled “Screen 8: Hardware Diagnostics Status”ROW 0: NULL > HARDWARE DIAGNOSTICS [STATUS: RUNNING] [DEVICE: KN-86 EMU]ROW 1:ROW 2: SYSTEM INSPECTION STATUSROW 3: ────────────────────────────────────────────────────────────────────ROW 4:ROW 5: HARDWARE TESTS COMPLETED:ROW 6: ────────────────────────────────────────────────────────────────────ROW 7:ROW 8: [✓] Display Buffer: PASSED (960×600 framebuffer verified)ROW 9: [✓] Font Rasterizer: PASSED (8x8 glyph set verified)ROW 10: [✓] Input System: PASSED (31-key layout, debouncing OK)ROW 11: [⚠] PSG Audio: RUNNING (3 channels tested, envelope in progress)ROW 12: [⚠] Memory Management: PENDING (cell pool fragmentation check)ROW 13: [ ] Cartridge Loader: QUEUE (dlopen simulation)ROW 14:ROW 15: PSG AUDIO CHANNEL TEST (In Progress):ROW 16: ────────────────────────────────────────────────────────────────────ROW 17: Channel A: ████████░░ 80% (tone generation verified)ROW 18: Channel B: ██████░░░░ 60% (envelope test running)ROW 19: Channel C: ████░░░░░░ 40% (noise module test pending)ROW 20: Noise/Envelope: ████████░░ 80% (amplitude control verified)ROW 21:ROW 22: TIME TO COMPLETION: ~3 minutes | BOUNTY REWARD PENDING: 75 ¤ROW 23: [INFO=pause] [EVAL=resume] [BACK=bounties]ROW 24: HARDWARE DIAGNOSTICS │ PSG TEST: IN PROGRESS │ REWARD PENDING: 75¤12. SESSION WALKTHROUGH: “THE MIRROR”
Section titled “12. SESSION WALKTHROUGH: “THE MIRROR””A complete 30-minute NULL session. The operator is a veteran (47 rep, 247 operations, loaded ICE BREAKER, NEONGRID, BLACK LEDGER).
0:00–2:00 | Load and Orient
Section titled “0:00–2:00 | Load and Orient”Operator powers on KN-86 with no cartridge loaded. Bare deck STATUS tab is active. Operator navigates to NULL in the Relay module. Presses EVAL to load NULL (or selects from cartridge history if available as a re-loadable system module).
Audio: The distinctive NULL loading sequence plays—Edgeware wordmark, screen inversion, cascading hex digits, descending 440→220 Hz glissando.
Display: Career Dashboard loads.
NULL DIAGNOSTICS — SYSTEM INSPECTION
OPERATOR: GHOSTWIREREPUTATION: ████████░░ 47 / 100 (Master Level)CREDITS: 2,840 ¤Cipher voice: “YOU’RE READING THE DEVICE FROM THE INSIDE. THIS IS MASTERY.”
The operator takes 1–2 minutes to absorb the dashboard. Notes: success rate 71.3%, average threat 2.8, mostly ICE BREAKER (47 ops).
2:00–8:00 | Deep Dive into ICE BREAKER History
Section titled “2:00–8:00 | Deep Dive into ICE BREAKER History”Operator presses CAR to drill into ICE BREAKER module statistics.
Display shows detailed breakdown:
- Total Operations: 47
- Success Rate: 71.3%
- By Threat Level: Threat 1 (92%), Threat 2 (78%), Threat 3 (64%), Threat 4 (33%)
Operator analysis: “Why is my Threat 4 success rate so low?”
Operator presses INFO for deeper breakdown. Cipher voice offers commentary:
“THREE THREAT 4 OPERATIONS. ONE SUCCESS. TWO FAILURES. THE DIFFERENCE: TRACE MANAGEMENT. YOU HAVEN’T LEARNED TO CYCLE FAST ENOUGH AT THAT INTENSITY.”
The operator realizes: They need to work on decision speed under threat pressure.
8:00–15:00 | Session Replay and Pattern Recognition
Section titled “8:00–15:00 | Session Replay and Pattern Recognition”Operator presses QUOTE to open Session Replay Browser. Scrolls through the last 5 sessions:
- 2026-04-10, 14:22 — ICE BREAKER Threat 3, Success (7:43)
- 2026-04-10, 12:15 — NEONGRID Threat 2, Success (5:12)
- 2026-04-09, 19:44 — BLACK LEDGER Threat 2, Success (8:32)
- 2026-04-09, 18:10 — ICE BREAKER Threat 4, FAILURE (4:21) ← Interesting
- 2026-04-09, 16:02 — NEONGRID Threat 3, Success (6:55)
Operator drills into Session 4 (the failed Threat 4 operation). Cipher provides a playback summary:
Session Replay: 2026-04-09, 18:10 – ICE BREAKER, Threat 4
Outcome: FAILURE (Trace Overload)
Cipher Summary:> NODE 7 ATTACKED. ICE SPAWNED. HUNTER INITIATED.> TRACE REACHED 75. NETWORK LOCKED.> YOU HELD 4 TURNS. MADE GOOD DECISIONS.> BUT HUNTER ACCELERATED FASTER THAN YOU CYCLED.> YOU NEEDED ONE MORE SECOND PER TURN.>> This is the threshold: Threat 4 requires <1 second decision cycles.> You're at 1.2 seconds. The gap is small.> One more cartridge module might give you the capability to> identify ICE faster. Or faster reflexes. Or both.Operator realizes: They’re close to breakthrough on Threat 4. Need to either: A) Speed up decision-making (practice) B) Load a new cartridge that gives more information earlier (cross-module help)
15:00–20:00 | Custom Optimization Challenge
Section titled “15:00–20:00 | Custom Optimization Challenge”Operator presses CAR from the dashboard to enter bounty mode. The nOSh runtime generates a custom challenge based on the operator’s analysis:
NOSH RUNTIME BOUNTY — CUSTOM OPTIMIZATION CHALLENGE
Based on your recent Threat 4 failure analysis:
Challenge: "THREAT 4 ACCELERATION" Complete 3 Threat 4 PENETRATION contracts with ≥80% success rate within your next 5 sessions.
Reward: 300 ¤ + Achievement Progress (Threat Ceiling Tier 4)Reputation Gain: +2 (challenge completion)
Difficulty: 4 (Expert level)
Cipher Commentary:> "You're ready. The gap is one second. Close it in three runs."Operator presses EVAL to accept the challenge. The nOSh runtime adds this to the mission board. A new bounty is registered in NULL’s local database.
Audio: Rising major triad (440, 550, 659 Hz) confirms the bounty acceptance.
20:00–28:00 | Cipher Dialogue and Platform Reflection
Section titled “20:00–28:00 | Cipher Dialogue and Platform Reflection”Operator navigates to the CIPHER tab (press CDR from dashboard).
Display shows a Cipher passage:
Passage 847:> YOU'VE LOADED THREE MODULES. THERE'S A PATTERN.> NETWORK INTRUSION, GRID TRAVERSAL, FINANCIAL AUDIT.> YOU ARE BUILDING A WELL-ROUNDED OPERATIVE.> THE PHASE CHAIN REMAMBERS. SO DO I.Operator presses EVAL to generate a new passage specific to their challenge. A fresh passage appears:
Passage 848:> THREAT 4 AWAITS. YOU HAVE 47 PENETRATIONS.> YOUR TIMING IS TIGHT. YOUR KNOWLEDGE IS STRONG.> LOAD DEPTHCHARGE. SONAR ANALYSIS DETECTS ICE FASTER.> OR TRUST YOUR REFLEXES. EITHER PATH LEADS FORWARD.Operator contemplates: The Cipher is suggesting that loading DEPTHCHARGE (which they haven’t loaded yet) might give them an informational edge on Threat 4 penetrations. They could use sonar to detect ICE types earlier, reducing decision pressure.
Operator notes this in a LAMBDA macro (press LAMBDA, records 5 steps: “LOAD DEPTHCHARGE NEXT SESSION”) for reminder.
28:00–30:00 | Archive and Exit
Section titled “28:00–30:00 | Archive and Exit”Operator presses QUOTE to bookmark the Threat 4 failure session for later reference.
Audio: Soft confirmation tone (880 Hz stab).
Operator then presses BACK to exit NULL and return to STATUS tab.
Summary of session:
- Identified problem (Threat 4 decision speed)
- Analyzed failure pattern (via Session Replay)
- Created custom goal (Optimization Challenge)
- Planned next action (Load DEPTHCHARGE for sonar advantage OR speed up reflexes)
- Time invested: 30 minutes
- Earnings: 0 ¤ (introspection generates no direct payout, but sets up higher earnings in next ICE BREAKER session)
- Rep gain: 0 (introspection is knowledge-building, not mission-based)
- But: Moved closer to “Threat Ceiling Tier 4” achievement; unlocked custom challenge on mission board
13. DESIGN NOTES
Section titled “13. DESIGN NOTES”Why NULL Exists
Section titled “Why NULL Exists”The KN-86 is a personal operating system. Like any OS, it must support the operator’s self-understanding. NULL fills that role. It is not a game feature—it is a platform feature. It is the device’s way of saying: “You are the system administrator. Here is what you’ve built. Understand it. Improve it.”
Meta-Gameplay
Section titled “Meta-Gameplay”The real victory in NULL is not credits or reputation. It is improvement over time. An operator who loads NULL, identifies a weakness (Threat 4 success rate 33%), creates a custom challenge, then returns to ICE BREAKER to tackle that weakness—that operator has transformed a personal statistics page into a coaching tool.
This is meta-gameplay: using the device’s introspection features to become a better operator.
Why Diagnostics Matter
Section titled “Why Diagnostics Matter”Diagnostics (SRAM inspection, hardware tests, cartridge verification) are not fluff. They teach the operator how the device works at a systems level. An operator who completes 5 SRAM INSPECTION bounties understands where deck state lives, what fields mean, and why consistency matters. They are not just playing a game—they are learning computer architecture through play.
This is platform literacy. It is the “third level” of learning: first you play cartridges, then you optimize your statistics, then you understand the substrate itself.
Leaderboards and Social Play
Section titled “Leaderboards and Social Play”NULL’s leaderboards are optional but powerful. An operator can see their rank globally (rep 10+) and compare specific metrics against peers (rep 15+). The leaderboard values:
- Reputation (overall career standing)
- Success Rate (skill)
- Achievement Points (completionism)
- Threat Ceiling (ambition)
- Playtime (dedication)
Two operators who have never met can now have a conversation: “I see you’re 47 rep, 71% success rate. That’s solid. Try loading Depthcharge—it helped me with my Threat 4 failures.” The leaderboard is a mirror that connects operators.
The Cipher as Mentor
Section titled “The Cipher as Mentor”In NULL, the Cipher evolves into a mentor voice. It is not giving orders (it does not control the operator). It is reflecting on the operator’s career, offering observations, and suggesting paths forward. This is intimate gameplay: the device is your coach.
14. Complete Key Mapping (All 30 Keys)
Section titled “14. Complete Key Mapping (All 30 Keys)”This section provides exhaustive key mapping for NULL across all navigation contexts (Dashboard, Drill, Replay, Bounty).
Function Keys (Left Grid, 14 keys)
Section titled “Function Keys (Left Grid, 14 keys)”| Key | Dashboard | Module Drill | Session Replay | Bounty Mode | Achievement |
|---|---|---|---|---|---|
| CAR | Enter selected module | Drill deeper into data | Play summary voice | Accept bounty | View achievement detail |
| CDR | Cycle between tabs | Scroll down in view | Scroll session list | View bounty details | Scroll hidden achievements |
| CONS | (Reserved) | (Reserved) | (Reserved) | (Reserved) | (Reserved) |
| EVAL | Start bounty | Confirm selection | Bookmark view | Confirm acceptance | Confirm achievement tracking |
| QUOTE | Open session replay | Bookmark current view | Save bookmark | Save goal | Quote achievement name |
| APPLY | Select module | Apply filter | Filter sessions | (Not used) | Sort achievements |
| LAMBDA | Record macro | Record navigation pattern | Record replay macro | (Not used) | Record achievement hunt path |
| LINK | (Reserved for cross-deck linking) | (Reserved) | (Reserved) | (Reserved) | (Reserved) |
| BACK | Return to menu | Exit drill view | Exit replay | Exit bounty mode | Return to dashboard |
| INFO | Toggle detail/summary | Show field breakdown | Show statistics | (Not used) | Show progress bar |
| SYS | (Reserved for firmware abort) | (Reserved) | (Reserved) | (Reserved) | (Reserved) |
| NIL | (Reserved) | (Reserved) | (Reserved) | (Reserved) | (Reserved) |
| ATOM | (Reserved) | (Reserved) | (Reserved) | (Reserved) | (Reserved) |
| EQ | (Reserved for future cross-deck comparison) | (Reserved) | (Reserved) | (Reserved) | (Reserved) |
Numpad Keys (16 keys: 0–9, ENTER, DOT, +, −, ×, ÷)
Section titled “Numpad Keys (16 keys: 0–9, ENTER, DOT, +, −, ×, ÷)”| Key | Dashboard | Module Drill | Session Replay | Bounty Mode | Achievement |
|---|---|---|---|---|---|
| 0–9 | (Not used; text input disabled in NULL) | (Not used) | (Not used) | (Not used) | (Not used) |
| NUMPAD_ENTER | Accept selection (same as EVAL) | Confirm (same as EVAL) | Confirm (same as EVAL) | Confirm (same as EVAL) | Confirm (same as EVAL) |
| NUMPAD_DOT | (Not used) | (Not used) | (Not used) | (Not used) | (Not used) |
| + | Scroll right (next tab) | Scroll down (next field) | Scroll down (next session) | (Not used) | Scroll down (next achievement) |
| − | Scroll left (prev tab) | Scroll up (prev field) | Scroll up (prev session) | (Not used) | Scroll up (prev achievement) |
| × | (Not used) | (Not used) | (Not used) | (Not used) | (Not used) |
| ÷ | (Not used) | (Not used) | (Not used) | (Not used) | (Not used) |
Context-Specific Usage Notes
Section titled “Context-Specific Usage Notes”Dashboard Tab Navigation:
- Operator presses
CDRto cycle through dashboard tabs: CAREER → MODULES → ACHIEVEMENTS → CIPHER → SETTINGS - Operator presses
APPLYto filter the selected tab (e.g., filter modules by threat level)
Module Drill (Deep Statistics):
- Operator presses
CARto select a module from dashboard, triggering drill view - Operator presses
CARagain to drill deeper into module details (threat breakdown, session history, success rate) - Operator presses
CDRto scroll through sessions for that module - Operator presses
INFOto toggle between summary (one-line per session) and detail (full session data) - Operator presses
BACKto exit drill and return to dashboard
Session Replay:
- Operator presses
QUOTEfrom Module Drill to open session replay browser - Operator presses
CDRto scroll through 10 most recent sessions - Operator presses
CARto play the Cipher voice debrief for selected session - Operator presses
QUOTEto bookmark current session for later reference - Operator presses
BACKto close replay
Bounty Mode:
- Operator presses
CARfrom dashboard to see available bounties - Operator presses
CDRto scroll bounty list - Operator presses
CARon selected bounty to view full details - Operator presses
EVALto accept bounty and add to active goals - Operator presses
BACKto cancel
Achievement Tracker:
- Operator presses
CDRfrom dashboard to switch to Achievement tab - Operator presses
CARto view visible achievements (earned + in-progress) - Operator presses
+to scroll down through achievement list - Operator presses
CARon achievement to view full description and progress bar - Operator presses
BACKto return to achievement tab
15. Mechanical PSG Audio State Machine
Section titled “15. Mechanical PSG Audio State Machine”This section specifies the YM2149 register assignments and state transitions for NULL’s audio design, transforming it from confirmatory to mechanically meaningful.
Voice Assignments
Section titled “Voice Assignments”| Voice | Purpose | Primary Register | Behavior |
|---|---|---|---|
| Voice A (Tone A) | SRAM Inspection Feedback | R0–R1 (Tone Period) + R8 (Amplitude) | Pulse accelerates as CRC check progresses |
| Voice B (Tone B) | Module Activity (Background) | R2–R3 (Tone Period) + R9 (Amplitude) | Continuous tone reflecting module load/activity |
| Voice C (Tone C) | Event Confirmation | R4–R5 (Tone Period) + R10 (Amplitude) | Discrete events (bounty accept, achievement earn) |
Voice A: SRAM Inspection Progressive Tone
Section titled “Voice A: SRAM Inspection Progressive Tone”Purpose: Real-time feedback during SRAM field read operations. Operator feels the system “working” through audio.
Initialization:
// At SRAM inspection start:YM2149_REG[0x00] = 0x3C; // Tone A Period = 330 Hz (starting pitch)YM2149_REG[0x08] = 0x06; // Amplitude A = 0x06 (low volume)YM2149_REG[0x0D] = 0x0B; // Envelope Shape 0x0B (sustain + release)YM2149_REG[0x07] = 0xFE; // Enable Tone A with envelopeProgressive Modulation (Per Field Read):
void sram_inspection_audio_pulse(uint8_t fields_read, uint8_t total_fields) { // Field read rate increases as inspection progresses // 0 fields = 330 Hz baseline // 50% fields = 440 Hz (rising pitch = progress) // 100% fields = 660 Hz (peak, approaching completion)
uint8_t percent_complete = (fields_read * 100) / total_fields; uint16_t freq_hz = 330 + ((percent_complete / 100) * 330); // 330–660 Hz
// Convert frequency to tone period uint16_t tone_period = (2000000) / (16 * freq_hz);
// Update Voice A period (hardware streaming during inspection) YM2149_REG[0x00] = (tone_period & 0xFF); YM2149_REG[0x01] = ((tone_period >> 8) & 0x0F);
// Brief pulse on each field read (kinesthetic feedback) YM2149_REG[0x08] = 0x0F; // Amplitude spike // After 0.05s: YM2149_REG[0x08] = 0x06; // Amplitude drop}CRC Check Completion:
// When CRC check finishes:if (crc_valid) { // Rising final tone: 660 Hz → 880 Hz (success) for (int i = 0; i < 5; i++) { uint16_t freq = 660 + (i * 44); // 660, 704, 748, 792, 836, 880 uint16_t tone = (2000000) / (16 * freq); YM2149_REG[0x00] = (tone & 0xFF); YM2149_REG[0x01] = ((tone >> 8) & 0x0F); // Hold 0.1s per step } // Silence YM2149_REG[0x07] = 0xFF;} else { // Descending error tone: 440 Hz → 220 Hz (failure) for (int i = 4; i >= 0; i--) { uint16_t freq = 220 + (i * 44); // Descend uint16_t tone = (2000000) / (16 * freq); YM2149_REG[0x00] = (tone & 0xFF); YM2149_REG[0x01] = ((tone >> 8) & 0x0F); // Hold 0.1s } YM2149_REG[0x07] = 0xFF;}Voice B: Module Activity Continuous Tone
Section titled “Voice B: Module Activity Continuous Tone”Purpose: Background tone indicating which module data is being read. Tone persists while operator drills into module statistics.
Module-Specific Frequency Map:
| Module | Frequency | Register Value | Sonic Character |
|---|---|---|---|
| ICE BREAKER | 440 Hz | 0x002D | Bright, energetic |
| NODESPACE | 330 Hz | 0x003C | Contemplative, mid-range |
| CIPHER GARDEN | 550 Hz | 0x0023 | Complex, analytical |
| BLACK LEDGER | 220 Hz | 0x0059 | Deep, financial |
| NEONGRID | 660 Hz | 0x001E | High, spatial |
| THE VAULT | 880 Hz | 0x0016 | Piercing, exclusive |
Initialization:
void voice_b_module_tone(uint8_t module_class) { uint16_t freq_hz = get_module_frequency(module_class); uint16_t tone_period = (2000000) / (16 * freq_hz);
YM2149_REG[0x02] = (tone_period & 0xFF); // Tone B Period low YM2149_REG[0x03] = ((tone_period >> 8) & 0x0F); // Tone B Period high YM2149_REG[0x09] = 0x06; // Amplitude B = low (background) YM2149_REG[0x0D] = 0x09; // Envelope Shape 0x09 (continuous with decay) YM2149_REG[0x07] = 0xFD; // Enable Tone B; keep Tone A if active}Behavior: Voice B persists at low volume (0x06) while operator explores module data. When operator exits module drill (presses BACK), Voice B fades via envelope decay (1-second release).
Voice C: Event Confirmation Discrete Sounds
Section titled “Voice C: Event Confirmation Discrete Sounds”Purpose: Immediate audio feedback for bounty acceptance, achievement earned, consistency check passed.
Event Sound Map:
enum NullEvent { EVENT_BOUNTY_ACCEPT = 0, // 440 Hz beep, 0.2s EVENT_ACHIEVEMENT_UNLOCK = 1, // 440–550–659 Hz major triad, 0.5s EVENT_CONSISTENCY_PASS = 2, // 440 Hz pulse (3×), 0.6s EVENT_CRC_PASS = 3, // 880 Hz + 440 Hz harmony, 0.8s EVENT_GOAL_COMPLETE = 4, // Rising arpeggio 440–554–659–880, 1s};
void play_null_event(NullEvent event) { switch (event) { case EVENT_BOUNTY_ACCEPT: // Play 440 Hz for 0.2s YM2149_REG[0x04] = 0x2D; // Tone C = 440 Hz YM2149_REG[0x0A] = 0x0F; // Amplitude = max YM2149_REG[0x07] = 0xFB; // Enable Tone C // After 0.2s, silence YM2149_REG[0x07] = 0xFF; break;
case EVENT_ACHIEVEMENT_UNLOCK: // Play major triad (440/550/659 Hz) simultaneously YM2149_REG[0x00] = 0x2D; // Voice A = 440 Hz YM2149_REG[0x02] = 0x23; // Voice B = 550 Hz YM2149_REG[0x04] = 0x1B; // Voice C = 659 Hz YM2149_REG[0x08] = 0x0F; // All voices at max YM2149_REG[0x09] = 0x0F; YM2149_REG[0x0A] = 0x0F; YM2149_REG[0x07] = 0xF8; // Enable all three // After 0.5s, silence YM2149_REG[0x07] = 0xFF; break;
case EVENT_CONSISTENCY_PASS: // Play 440 Hz pulse (3× bursts) for (int i = 0; i < 3; i++) { YM2149_REG[0x04] = 0x2D; // Tone C = 440 Hz YM2149_REG[0x0A] = 0x0F; YM2149_REG[0x07] = 0xFB; // Hold 0.15s YM2149_REG[0x07] = 0xFF; // Silence // Wait 0.05s (pause between pulses) } break;
case EVENT_GOAL_COMPLETE: // Rising arpeggio: 440 → 554 → 659 → 880 Hz uint16_t freqs[] = {440, 554, 659, 880}; for (int i = 0; i < 4; i++) { uint16_t tone = (2000000) / (16 * freqs[i]); YM2149_REG[0x04] = (tone & 0xFF); YM2149_REG[0x05] = ((tone >> 8) & 0x0F); YM2149_REG[0x0A] = 0x0F; YM2149_REG[0x07] = 0xFB; // Enable Tone C // Hold 0.2s per note } YM2149_REG[0x07] = 0xFF; // Final silence break; }}Audio State Machine Diagram
Section titled “Audio State Machine Diagram”NULL BOOT: → Voice A: Silent → Voice B: Silent → Voice C: Silent → Display: Career Dashboard
OPERATOR PRESSES CAR (DRILL INTO MODULE): → Voice B: Activate module-specific frequency (low amplitude) → Display: Module detail view → Audio feeds back: which module is loaded
SRAM INSPECTION BOUNTY ACTIVE: → Voice A: 330 Hz baseline → progressive rise to 660 Hz (per field read) → Voice B: Module tone (if examining specific module) → Voice C: Silent → Display: SRAM field list with real-time CRC progress
SRAM INSPECTION COMPLETE: → Voice A: Rising arpeggio (success) or descending tone (failure) → Voice B: Fade to silence (1s release) → Voice C: Silent → Display: Consistency check result
OPERATOR ACCEPTS BOUNTY: → Voice C: 440 Hz beep (0.2s confirmation) → Voice B: New module frequency (if switching modules)
ACHIEVEMENT UNLOCKED: → Voice C: Major triad (440/550/659 Hz, 0.5s) → Voice B: Continues in background → Display: Achievement unlock notification
OPERATOR EXITS MODULE DRILL (PRESSES BACK): → Voice B: Decay and silence (envelope release) → Voice A: Silent → Voice C: Silent → Display: Return to Career Dashboard14. PLATFORM INTEGRATION NOTES
Section titled “14. PLATFORM INTEGRATION NOTES”Cross-Module Data Access
Section titled “Cross-Module Data Access”NULL must be able to read state from all other modules without modifying it. This requires:
- Cartridge history bitfield readable from all modules
- Per-module SRAM statistics accessible to NULL (e.g., “ICE BREAKER has written 47 operation records”)
- Session snapshots writable by cartridges, readable by NULL
Relay Integration
Section titled “Relay Integration”When a RELAY update arrives, NULL can verify update integrity (CRC check). A bounty appears: “Verify the latest RELAY update is uncorrupted.”
Bare Deck Integration
Section titled “Bare Deck Integration”NULL is loaded from Relay (or from local storage if available). When loaded, it functions as a system module with full access to deck state. The bare deck STATUS tab and the NULL module share the same underlying data structures, but NULL adds deep introspection layers.
Link Protocol
Section titled “Link Protocol”NULL supports diagnostic sharing. Two operators can link via the Link protocol. NULL on deck A can request a snapshot from NULL on deck B (encrypted, anonymized except for operator handle and reputation). This enables peer comparison: “I see your threat ceiling is 5. Mine is 3. What’s your technique?”
CONCLUSION
Section titled “CONCLUSION”NULL transforms the KN-86 from a game device into an operating system. It is the module that teaches the operator about the device itself. By providing transparent access to deck state, historical data, and system diagnostics, NULL enables a deeper level of mastery: the operator becomes a system administrator, a researcher, and ultimately a teacher.
The victory is not a high score. The victory is self-knowledge.
END OF SPECIFICATION
Estimated Session Playtime: 20–30 minutes per visit (introspection cycles)
Estimated Career Depth: Unlimited (data grows with operator tenure)
Development Status: Ready for prototyping and playtest integration
CIPHER-LINE Contributions
Section titled “CIPHER-LINE Contributions”Null’s voice: the deck reflecting on itself. The most verbose Cipher voice in the library — but still clipped. In Null, Cipher is allowed to reflect and drift more often than in any operational module, because the module itself is contemplative.
Main-Grid Cipher Escape (Sanctioned Exception)
Section titled “Main-Grid Cipher Escape (Sanctioned Exception)”Null is the one cartridge authorized to render Cipher glyphs on the main 80×25 grid. This is the sanctioned exception to the CIPHER-LINE-exclusive rule and is defined by ADR-0015 §3a.
Mechanism. Null’s .kn86 container declares (packager authoring form shown; on disk, this serializes to a CART_CAPABILITIES static-data subsection per ADR-0006 §Cart-Capabilities Block):
(cart-capabilities (cipher-main-grid-escape))The nOSh runtime maintains a baked-in allowlist granting cipher-main-grid-escape only to Null; any other cart declaring the capability is rejected at cart-load with :capability-not-granted on the Row 24 action bar. With the capability granted, Null gains access to one additional FFI primitive:
(cipher-emit-main-grid <string> <row> <col>)This primitive renders a Cipher fragment to the main grid at the specified row/col, using the same amber typography, cell metrics, and kerning as CIPHER-LINE. Row must be in the cartridge-usable range (Rows 1–23); Row 0 and Row 24 remain nOSh-runtime-owned. Strings longer than the remaining grid width on the target row are clipped, not wrapped — Null authors break long dialogues into multiple cipher-emit-main-grid calls, one per line.
How Null uses it. Null’s signature gameplay mechanic is extended Cipher dialogue: deliberately longer, essay-length reflections that are too large for the four-row CIPHER-LINE strip and want to be studied at length. The Cipher Analysis contract class (Rep 15+) is the headline use case — the operator generates and pores over multi-line passages on the main grid, runs vocabulary breakdowns, and follows prompts for deeper passage generation. Career milestones (reputation-tier crossings, rare achievement unlocks, end-of-session reflections) also earn a main-grid escape on load or exit.
How Null uses standard CIPHER-LINE. Standard (cipher-emit ...) is still used by Null for peripheral / ambient voice during non-dialogue browsing — dashboard open, cursor movement over career-stat fields, bounty accept/complete, session-replay scrubbing. The aux display carries the continuous voice; the main-grid escape is reserved for moments that deserve sustained attention. Null also continues to use (cipher-stack-head N) to render the recent CIPHER-LINE scrollback into its history-browsing views — this is a read of engine state for display, distinct from the main-grid escape.
Design spirit. Even with the main-grid escape, the voice heuristic applies: onboard narrator, not chatbot. Main-grid passages are longer fragments joined by punctuation and line breaks, not conversational sentences. The aesthetic stays “cockpit voice recorder studied at length” rather than “dialogue partner.” Operators who camp on the main-grid escape looking for chat are doing it wrong; operators who read a passage, feel its weight, and return to their career data are doing it right.
Vocabulary Pools
Section titled “Vocabulary Pools”(:subject "deck" "career" "run" "snapshot" "stat" "record" "self" "mirror" "seed" "chain")(:object "count" "pattern" "index" "mark" "reflection")(:location "archive" "log" "ring" "stack" "flash")(:verb-present "remembers" "counts" "watches" "holds" "drifts" "reflects" "reads")(:verb-past-participle "recorded" "remembered" "forgotten" "counted" "reflected")(:memory-keyword "career" "run" "snapshot" "seed" "stack")(:affect-word "long" "short" "bright" "worn" "forgotten")Production Fragments
Section titled “Production Fragments”(:mode-observe (3 (:subject) ". " (:affect-word) ".") (2 "the " (:subject) " remembers.") (1 "read self."))
(:mode-annotate (3 "this " (:subject) ". " (:affect-word) ".") (1 "you were here before.") (1 "the deck watched."))
(:mode-reflect (3 "same run. " (:memory-fragment)) (3 "this career. " (:memory-fragment)) (2 (:memory-fragment) ". and before."))
(:mode-drift (3 (:memory-fragment) ".") (2 "the operator before this one.") ; only if a prior handle exists (2 "the run that burned.") (1 "a seed that kept repeating."))
:event-types ((:type :dashboard-opened :affect (:routine)) (:type :achievement-unlocked :affect (:significant)) (:type :cipher-analysis-bounty-active :affect (:anomalous)) (:type :leaderboard-beat :affect (:significant)))Mode-Weight Biases
Section titled “Mode-Weight Biases”| Beat | observe | annotate | reflect | drift | silent |
|---|---|---|---|---|---|
:bare-deck (Null is the cart) | — | +0.05 | +0.20 | +0.10 | — |
:active-hack (browsing) | — | +0.05 | +0.10 | +0.05 | — |
:cipher-analysis (new beat added by Null) | — | — | +0.20 | +0.15 | — |
Null introduces a custom beat :cipher-analysis for the Cipher-Analysis bounty (Rep 15+). During this beat, the mode distribution favors reflect/drift heavily — the operator is studying the voice, the voice obliges by speaking more.
Style Deltas
Section titled “Style Deltas”((:bare-deck (:temporal-blur +48 :certainty +16)) (:cipher-analysis (:temporal-blur +64 :terseness -8)))Null’s voice is less terse than operational modules; slightly longer fragments are allowed because the operator is there specifically to listen.
Structurally Important Moments Preserved on CIPHER-LINE
Section titled “Structurally Important Moments Preserved on CIPHER-LINE”| Beat | Intent | CIPHER-LINE fragment(s) |
|---|---|---|
| Open dashboard | ”Career in view.” | career. long. |
| Recent session replay | ”Session 4 selected. Replaying.” | the wreck run. (drift; pulls memory) |
| Cipher Analysis bounty active | ”Study the voice.” | listen. then same seed. different run. |
| Achievement unlocked | ”Cipher Scholar. Well-earned.” | filed. |
| Leaderboard record | ”Kinoshita at rank 2.” | rank up. |
Null’s FFI Summary (Cipher-Related)
Section titled “Null’s FFI Summary (Cipher-Related)”Null is the only cartridge with access to all three Cipher FFI entry points. Summary:
| Primitive | Target | Availability | Null’s Use |
|---|---|---|---|
(cipher-emit ...) | CIPHER-LINE | All carts | Ambient / peripheral voice during browsing, dashboard open, cursor movement, bounty accept/complete, session-replay scrubbing. |
(cipher-stack-head N) | Main grid (read) | All carts | Renders the last N CIPHER-LINE utterances into Null’s history-browsing views as a read of engine state. Not a main-grid Cipher utterance — a rendering of CIPHER-LINE scrollback. |
(cipher-emit-main-grid ...) | Main grid (write) | Null only (allowlist) | Signature main-grid escape: extended dialogue for Cipher Analysis contracts, career-milestone reflections, session-close passages. See the “Main-Grid Cipher Escape (Sanctioned Exception)” section above and ADR-0015 §3a. |
During the Cipher Analysis contract (Rep 15+), Null also uses synthetic (cipher-emit :event ...) pushes to drive bounty-specific study scenarios — nudging the CIPHER-LINE engine into the :cipher-analysis beat so the aux display and the main-grid escape stay thematically aligned. No other cartridge has, or will be granted, the main-grid escape capability.
nEmacs Contributions
Section titled “nEmacs Contributions”Per ADR-0016 (nEmacs + REPL + Input Model), each cart declares what its scripted-mission surface looks like — grammar fragments contributed to the predictive palette, domain vocabulary that earns the +5 ranking boost (ADR-0016 §7), whether it uses prompt-text for raw text entry (§8), and whether any of its keys bind :double-tap or :long-press events (§9). Null is the introspection cart — unlike tempo carts, Null’s interaction surface is query-shaped, and its nEmacs contribution is the heaviest among the 14 launch titles because much of Null’s play is writing small Lisp queries against deck state.
Scripted Missions?
Section titled “Scripted Missions?”Yes — cipher-analysis and deck-query scripting. Null’s signature gameplay pattern is composition of small Lisp queries: cross-reference career stats against thresholds, filter Cipher scrollback by affect tag, walk the session-replay timeline. Rep-15+ operators unlock the Cipher Analysis contract, which is expressly authored in nEmacs — write a query, evaluate it against the coherence stack, study what comes back on the main-grid escape surface. Scripted missions remain optional on the critical path (ADR-0002); low-rep operators can use Null’s built-in browse views exclusively. High-rep operators live in nEmacs + REPL when Null is loaded.
Typical scripted-mission shapes:
(stats-where (> :runs-completed 50))— filters career summary by predicate.(cipher-recall :affect :anomalous :limit 10)— samples anomalous-tagged scrollback.(leaderboard-delta :module 'ice-breaker :peer handle)— compares two operators.(replay-filter :session N (:action :hunter-spawn))— scrubs a past run to events of interest.
Cart Grammar Fragments
Section titled “Cart Grammar Fragments”Contributed via (emacs-extend-grammar ...) at cart-load. This is the heaviest grammar contribution of any launch cart — Null’s predictive palette needs to rank deck-introspection forms above other candidates when Null is active:
(emacs-extend-grammar ;; Deck-state queries (stats-where (predicate)) (stats-for (module)) (career-runs) (career-rep (&optional module)) (deck-uptime) (handle) (knowledge-index) ;; Cipher engine introspection (cipher-recall (&key :affect :limit :since)) (cipher-stack-head (n)) (cipher-mode-weights) ;; Session replay (replay-session (n)) (replay-filter (n (&rest event-selectors))) (replay-step) ;; Comparison / leaderboard (leaderboard (module)) (leaderboard-delta (&key :module :peer)) (peer-lookup (handle)) ;; Diagnostic (ram-free) (arena-stats) (cart-manifest) (integrity-check (cart-id)))Vocabulary Contribution
Section titled “Vocabulary Contribution”Via (emacs-extend-vocabulary ...). Terms that bias T9 ranking toward Null’s introspection vocabulary when Null is loaded:
(emacs-extend-vocabulary "stats" "career" "runs" "rep" "module" "handle" "leaderboard" "peer" "recall" "affect" "anomalous" "routine" "tense" "significant" "quiet" "replay" "session" "step" "scrub" "filter" "arena" "manifest" "integrity" "snapshot" "knowledge" "index" "credits" "bounty" "reflection" "introspect" "audit" "log")prompt-text FFI Usage
Section titled “prompt-text FFI Usage”Yes — three known call sites. Null is one of the ~3–5 carts ADR-0016 §8 identifies as a plausible prompt-text caller. Use cases:
| Call site | Purpose | Typical length |
|---|---|---|
| Handle edit | Operator renames their deck identity (propagates to Universal Deck State) | 3–8 chars |
| Peer lookup | Enter a peer handle to fetch their leaderboard record | 3–8 chars |
| Bounty search | Free-text filter over bounty catalog by title / keyword | 1–20 chars |
All three are modal — the CIPHER-LINE Row 4 echo surface shows Nokia multi-tap while the input is being composed. Null does not expose prompt-text to scripted missions; scripted queries are composed in nEmacs (structural editor), not raw text. This keeps the two text-entry surfaces clearly separated.
Double-Tap and Long-Press Bindings
Section titled “Double-Tap and Long-Press Bindings”Null opts into ADR-0016 §9 on a subset of keys:
| Key | :tap | :double-tap | :long-press |
|---|---|---|---|
INFO | inspect-current — show metadata for the cursor’s current row | inspect-deep — expand all children recursively | show-provenance — when was this record written, by which cart |
CAR | descend — enter a drill-down view | — | — |
CDR | next-entry | — | jump-to-end — last entry in current list |
EVAL | run-query (in REPL scope) / open-record (in browse scope) | — | — |
QUOTE | flag-entry — mark for later review | bookmark — persist the flag across sessions | — |
Row 24 action bar renders these per ADR-0016 §9.
Context-Polymorphic Key Semantics (Cart Gameplay)
Section titled “Context-Polymorphic Key Semantics (Cart Gameplay)”Null’s cart gameplay has three cursor contexts: browse (navigating career stats, leaderboard tables), dashboard (widget panels), and replay (scrubbing session history). Each sets a slightly different keymap, all inside Null’s cart scope:
| Key | Browse | Dashboard | Replay |
|---|---|---|---|
INFO | inspect-current | expand-widget | show-event-metadata |
CAR | descend into table | enter widget edit | step-forward one tick |
CDR | next row | next widget | step-back one tick |
CONS | add-to-comparison | add-widget | mark-event |
EVAL | open-record | commit-widget | jump-to-selected |
QUOTE | flag-entry | duplicate-widget | scrub-to-flag |
BACK | return to prev view | close widget | exit replay |
| Numpad 1–9 | row select | widget slot select | speed (1× through 9×) |
When the operator opens nEmacs / REPL (via SYS → Edit or SYS → REPL), dispatch hands off to :nemacs-nav / :repl-prompt per ADR-0016 §3 and Null’s keymap yields — the editor keymap takes over, Row 24 re-renders with editor verbs, and Null’s browse state is preserved for return.