THE VAULT — Gameplay Specification (Revised)
Knowledge Base Engine — KN-86 Deckline Passive Enhancement Module
Version 1.1 (Revised) | April 2026 | Status: Implementation Ready
CIPHER-LINE revision note (2026-04-24): The Vault’s Cipher voice — research annotations, cross-reference hints, “richer Cipher commentary” earned via knowledge_index — renders on the CIPHER-LINE OLED, not the main 80×25 grid. The phrase “richer Cipher commentary” in this spec refers to higher-weight production fragments and deeper memory-recall allowed by loading The Vault; the rendering surface is still CIPHER-LINE only. See the CIPHER-LINE Contributions section at the end. Canonical engine spec:
docs/software/runtime/cipher-voice.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 (INFORMATION DIGITAL) :modifiers (:passive) :payout-bias 1.2)The Vault is a passive enhancement cart per MCG addendum §3 and PM resolution Q1: it never anchors a phase in generated chains. Browsing the archive satisfies OBSERVE; CONS-linked profile synthesis satisfies ANALYZE — but the algorithm should treat these as boosts to phases anchored by other carts that share INFORMATION or DIGITAL affinity, not as standalone phase satisfiers. :payout-bias 1.2 reflects the knowledge_index dividend; loading The Vault makes adjacent investigative phases pay more. The “Anything → INFORMATION” sanctioned transition in addendum §2 is The Vault’s universal-fan-in property.
Design Philosophy
Section titled “Design Philosophy”THE VAULT is not a game. It is a library. But a library with gameplay embedded in its research structure. The operator’s core loop is not action or puzzle-solving — it is knowledge discovery and curation. The Vault’s mechanics are about building intelligence through research, cross-referencing archived data, and synthesizing information into operational profiles that improve performance in every other module on the deck.
The Vault fulfills a unique role in the KN-86 platform: passive enhancement through active participation. Unlike ICE BREAKER’s tempo pressure or Nodespace’s turn-based strategy, the Vault has no time limit, no threat escalation, and no way to “fail.” But the Vault has rich bounties — small intelligence contracts tied to research tasks that reward thorough archival knowledge and lateral thinking. Completing these bounties increases the knowledge_index stat in Universal Deck State. That stat is read by every other module: higher knowledge means more detailed intel briefings, richer Cipher commentary, and — critically — stat integration bonuses that make operations easier.
Example: An operator who researches a target corporation’s financial structure in the Vault and completes the forensic pattern bounty (8+ cross-referenced entries synthesized into evidence of shell corporation networks) receives +10% payout bonus on the next Black Ledger forensic audit. The research pays dividends. Intelligence compounds.
This is the intelligence-first operational philosophy: Do your homework, build profiles, execute informed. The Vault teaches this by making it mechanically rewarding across the platform.
1. THE RESEARCH LOOP: ATOMIC UNIT OF ENGAGEMENT
Section titled “1. THE RESEARCH LOOP: ATOMIC UNIT OF ENGAGEMENT”The Vault’s core loop is BROWSE → DISCOVER → CONNECT → PROFILE. Each step is optional; none is time-pressured.
BROWSE (Variable Time)
Section titled “BROWSE (Variable Time)”The operator navigates the Archive, which is a hierarchical knowledge base organized into 6 domains:
- CORPORATE PROFILES — Company hierarchies, ownership chains, executive biographies, financial standing (gated by knowledge ≥ 20)
- NETWORK INFRASTRUCTURE — ISP maps, telecom relay stations, encrypted routing tables, known defense patterns (gated by knowledge ≥ 30)
- SIGNAL FREQUENCIES — Radio bands, satellite uplinks, military communications channels, encrypted protocol specs (gated by knowledge ≥ 40)
- MARITIME INTELLIGENCE — Port schedules, shipping vessel registries, coastal defense positions, smuggling route maps (gated by knowledge ≥ 50)
- FINANCIAL INSTITUTIONS — Bank routing codes, cryptocurrency exchange hubs, money-laundering conduits, trade finance workflows (gated by knowledge ≥ 60)
- OPERATIONAL DOSSIERS — Known operators (competitors), their specialties, recent contracts, rumored capabilities (gated by knowledge ≥ 35)
Each domain contains 30–50 entries. Each entry is a cell: a distinct knowledge object with metadata, related links, classification level, and redaction status.
The operator navigates via CAR/CDR:
- CAR drills into a category or article. Expands the hierarchy one level.
- CDR moves to the next sibling at the current level (next article in a category, or next category in a domain).
- BACK returns to the parent level.
Interaction Model Detail: The archive is displayed as a hierarchical list view (80 columns × 25 rows). At domain level, 5–6 category names are visible. The operator can scroll (CDR) to see additional categories or press CAR to drill into one, which displays 8–10 article titles at that category. Drilling into an article displays full text with metadata. The display always shows the current breadcrumb path (e.g., “CORPORATE PROFILES → ZAIBATSUS → Yamagata Corporation”) so the operator knows where they are.
This is pure list navigation. No puzzle. No pressure. The operator learns the archive’s shape through exploration.
DISCOVER (Variable Time)
Section titled “DISCOVER (Variable Time)”The operator finds a relevant entry. Relevance is contextual — an entry becomes relevant when:
- A bounty names it specifically — e.g., “Locate the Yamagata Corp Dossier entry”
- The operator’s search reveals it — QUOTE + CONS triggers a keyword search across the archive
- A cross-reference in another entry points to it — every article has a “RELATED ENTRIES” section at the bottom
Discovery is the moment when the operator realizes: “This piece of information is important to what I’m researching.” The visual feedback is simple: an entry’s title flashes (bright text, 0.5s pulse) when accessed for the first time in a session.
Stuck-Player Hint System: If an operator has been searching for a bounty target for >5 minutes without success, pressing INFO from the archive root displays: “HINT AVAILABLE: The entry you seek is in the [domain name] domain under the [category name] category. Press CAR to begin browsing there.” One hint per bounty, once per session. This prevents players from getting lost without trivializing the experience.
CONNECT (Variable Time)
Section titled “CONNECT (Variable Time)”The operator links related entries. CONS on an entry opens a cross-reference panel showing:
- RELATED (automatically linked) — The entry’s own cross-references (curated by the Vault’s content design, 2–5 entries)
- BOOKMARKED (operator-created) — Entries the operator has flagged with QUOTE in this session
- SEARCH RESULTS — Entries matching a keyword search the operator initiated (ranked by match quality)
The operator can press CONS repeatedly to build a chain of connections. Each connection creates a visual web: entries are nodes, links are threads.
Example: The operator finds “Yamagata Corp Dossier” → connects to “Yamagata Executive—Tanaka Hiroshi” → connects to “Meridian Systems (shell corp)” → connects to “Meridian HQ Location (Singapore)”. Four entries, three connections. The web shows these relationships on screen.
Handling Empty Cross-Reference Panes: If the operator presses CONS on an entry with no automatic cross-references, the pane displays: “NO RELATED ENTRIES. Search or bookmark entries to build a connection web.” This prevents a blank-screen UX failure.
CONS adds a connection to the operator’s active profile (see below). The profile accumulates as the operator chains connections.
PROFILE (Variable Time)
Section titled “PROFILE (Variable Time)”The operator compiles collected intelligence into an operational profile — a dossier structured by the Vault’s profile template. EVAL (with entries selected and connections made) opens the Profile Compiler:
Profile Title: ___________ (operator-named)Primary Target: [selected entry highlighted]Classification: [ ] UNCLASSIFIED [ ] RESTRICTED [ ] CONFIDENTIAL [ ] SECRETAssembled Evidence: - [Entry 1: Yamagata Corp Dossier] - [Entry 2: Executive—Hiroshi Tanaka] - [Entry 3: Shell Corporation Link] - [Entry 4: HQ Location]Synthesis Notes: _________________________ (operator-written)Status: [ ] DRAFT [ ] READY FOR OPERATIONSThe operator fills in the profile with their own synthesis notes. When marked READY FOR OPERATIONS, the profile is saved and becomes eligible for stat integration — it can now apply its intelligence bonus to operations in other modules.
Profile Validity Criteria: A profile can be marked READY FOR OPERATIONS if:
- Title is non-empty (max 64 chars, typically 20–40)
- At least 2 evidence entries are included (minimum synthesis requirement)
- Synthesis notes contain at least 50 characters (enforces operator commitment to analysis)
- Classification is selected (UNCLASSIFIED, RESTRICTED, CONFIDENTIAL, or SECRET)
If the operator attempts to submit incomplete, a validation message appears: “PROFILE INCOMPLETE: Synthesis notes must be ≥50 chars. Minimum 2 evidence entries required. Check classification status.”
2. SYSTEM ONE: THE ARCHIVE
Section titled “2. SYSTEM ONE: THE ARCHIVE”The Archive is a procedurally seeded knowledge base. It is not randomly generated each boot — it is generated once at the cartridge’s first load and persists until the cartridge is removed. The seed is derived from the deck’s cipher_seed (from Universal Deck State) combined with the cartridge ID.
Archive Structure
Section titled “Archive Structure”The Archive is a six-level hierarchy:
Archive (root)├─ CORPORATE PROFILES (Domain 1)│ ├─ ZAIBATSUS (Category)│ │ ├─ Yamagata Corporation (Article)│ │ ├─ Syndicate Capital (Article)│ │ └─ ...│ ├─ TRADE FINANCE (Category)│ │ ├─ Shell Corporations (Article)│ │ └─ ...│ └─ ...├─ NETWORK INFRASTRUCTURE (Domain 2)│ ├─ BACKBONE TOPOLOGY (Category)│ │ ├─ Pacific Undersea Cable Map (Article)│ │ └─ ...│ └─ ...└─ ...Level 1 (Domains): Fixed. Six domains, always present. Gating applies here (domains are visible but entries within are locked until knowledge ≥ threshold).
Level 2 (Categories): Semi-procedural. Each domain has 3–5 fixed category names. Category names are fixed per domain (e.g., CORPORATE PROFILES always has ZAIBATSUS, TRADE FINANCE, MARKET PLAYERS). This provides consistency across decks.
Level 3 (Articles): Procedurally generated. Each category contains 8–15 articles. Article titles, content, and cross-references are generated from templates seeded by the cipher_seed. Two decks with the same seed produce identical articles.
Procedural Archive Generation (Critical Path)
Section titled “Procedural Archive Generation (Critical Path)”Archive Seeding Algorithm:
The archive is generated at cartridge load via deterministic pseudorandom number generation (PRNG). This ensures every deck with the same cipher_seed produces bit-identical archives.
// Pseudocode: Archive Generation Engineprocedure GENERATE_ARCHIVE(cipher_seed, cartridge_id) { // Initialize deterministic PRNG seeded by cipher_seed XOR cartridge_id prng = LFSR_init(cipher_seed ^ cartridge_id);
for each domain_id in [0..5] { for each category_id in [0..4] { article_count = 8 + (prng_next() % 8); // 8–15 articles per category
for article_index in [0..article_count-1] { entry_id = (domain_id * 50) + (category_id * 15) + article_index;
// Generate article metadata title = GENERATE_ARTICLE_TITLE( domain_id, category_id, article_index, prng );
body_text = GENERATE_ARTICLE_BODY( domain_id, category_id, article_index, prng );
classification = DETERMINE_CLASSIFICATION( domain_id, prng ); // Distribution: 40% UNCLASSIFIED, 30% RESTRICTED, 20% CONFIDENTIAL, 10% SECRET
// Generate redaction points redactions = PLACE_REDACTIONS( body_text, classification, prng );
// Generate cross-references (topologically coherent) related_entry_ids = SELECT_CROSS_REFERENCES( entry_id, domain_id, category_id, prng, all_generated_entries );
ARCHIVE_CELL cell = { entry_id: entry_id, domain_id: domain_id, category_id: category_id, title: title, body_text: body_text, classification: classification, related_entries: related_entry_ids, redaction_count: redactions.count(), redactions: redactions, ... };
INSERT_INTO_ARCHIVE(cell); } } }}
// Article Title Generation (Domain-Specific Templates)procedure GENERATE_ARTICLE_TITLE(domain_id, category_id, index, prng) { template_set = TITLE_TEMPLATES[domain_id][category_id];
// Select nouns, adjectives, corporate terms from template // Example: CORPORATE / ZAIBATSUS templates: [COMPANY_NOUN] + CORPORATION/CORP/GROUP // Selectable nouns (seeded): Yamagata, Syndicate, Cascade, Helix, Orient, Mizuho, etc.
noun = SELECT_FROM_POOL( DOMAIN_NOUNS[domain_id], index % noun_pool_size, prng );
suffix = SELECT_FROM_POOL( CATEGORY_SUFFIXES[category_id], index % suffix_pool_size, prng );
title = noun + " " + suffix; return title;}
// Article Body Generation (Sentence Templates)procedure GENERATE_ARTICLE_BODY(domain_id, category_id, index, prng) { sentence_count = 4 + (prng_next() % 4); // 4–7 sentences body = "";
for each sentence_idx in [0..sentence_count-1] { sentence_template = SELECT_FROM_POOL( SENTENCE_TEMPLATES[domain_id], index % template_pool_size, prng );
// Fill template placeholders with seeded values filled_sentence = INSTANTIATE_TEMPLATE( sentence_template, domain_id, index, prng );
body += filled_sentence + " "; }
return body.trim();}
// Redaction Placement (Reputation-Gated Content)procedure PLACE_REDACTIONS(body_text, classification, prng) { redaction_count = 1 + (classification_level / 2); // UNCLASSIFIED=1, RESTRICTED=1, CONFIDENTIAL=2, SECRET=3 redactions = [];
// Identify sentence boundaries or paragraph breaks potential_redaction_points = FIND_SENTENCE_BOUNDARIES(body_text);
for each redaction_idx in [0..redaction_count-1] { // Randomly select a sentence to redact redact_sentence_idx = prng_next() % potential_redaction_points.length; offset = potential_redaction_points[redact_sentence_idx]; length = LENGTH_OF_SENTENCE(body_text, offset);
// Reputation gate: higher classification = higher rep required rep_required = 15 + (classification_level * 10);
redactions.push({ offset: offset, length: length, rep_required: rep_required }); }
return redactions;}
// Cross-Reference Generation (Topological Coherence)procedure SELECT_CROSS_REFERENCES(entry_id, domain_id, category_id, prng, all_entries) { related_count = 2 + (prng_next() % 4); // 2–5 cross-refs per article related_entries = [];
// Strategy: Select entries from same domain first (60% chance), // then from adjacent domain (30% chance), then distant (10% chance)
for each link_idx in [0..related_count-1] { link_type = prng_next() % 100;
if link_type < 60 { // Same domain, different category target_category = category_id; while target_category == category_id { target_category = prng_next() % 5; } target_domain = domain_id; } else if link_type < 90 { // Adjacent domain target_domain = (domain_id + 1) % 6; target_category = prng_next() % 5; } else { // Random distant domain target_domain = prng_next() % 6; target_category = prng_next() % 5; }
// Select a random article from target domain/category target_candidates = FIND_ENTRIES_IN_CATEGORY(target_domain, target_category, all_entries);
if target_candidates.length > 0 { target_entry = target_candidates[prng_next() % target_candidates.length]; related_entries.push(target_entry.entry_id); } }
return related_entries;}PRNG Implementation: Use a Linear Feedback Shift Register (LFSR) with a 32-bit state for deterministic seeding. The LFSR is initialized once per cartridge boot with cipher_seed XOR cartridge_id. This ensures:
- Determinism: Same seed → identical archive
- Bit-spread: Small differences in seed produce large differences in output (good for variation across decks)
- Speed: LFSR is O(1) per call, suitable for runtime generation
Archive Persistence Model: The generated archive is stored in cartridge RAM (allocated once at boot, persists until cartridge removal). This allows:
- Determinism: Same seed always produces identical archive
- Mutability: New searches or player annotations don’t corrupt the seed (if we ever add that feature)
- Memory Efficiency: ~256 KB for ~250 entries is reasonable for a typical cartridge allocation
Entry Content
Section titled “Entry Content”Each article has:
- Title — The entry name (e.g., “Yamagata Corporation”)
- Classification — UNCLASSIFIED, RESTRICTED, CONFIDENTIAL, or SECRET (affects text rendering and redaction)
- Body Text — 3–10 sentences of formatted text. Some sentences may be redacted (shown as ”█████ REDACTED ─ REP REQUIRED: 25”)
- Metadata — Publication date, source agency, last updated, word count
- Related Entries — 2–5 linked article titles (cross-references)
- Redaction Status — Which passages are locked and which reputation threshold unlocks them
Example article:
YAMAGATA CORPORATION
Classification: CONFIDENTIALSource: Intelligence Archive, Bureau 9 TechUpdated: 2026-03-15
Yamagata Corporation is a diversified zaibatsu headquartered in Osaka withsubsidiaries spanning maritime shipping, defense contracting, and financialservices. Founded 1982, market cap $47B USD.
█████ REDACTED ─ REP REQUIRED: 25█████ REDACTED ─ REP REQUIRED: 35
Executive leadership includes CEO Hiroshi Tanaka (since 2018) and CFOMasako Yamamoto (since 2015). The corporation is known for aggressiveoffshore subsidiary creation and █████ REDACTED ─ REP REQUIRED: 50
Cross-References: → Hiroshi Tanaka (Executive Dossier) → Maritime Shipping Operations (Yamagata Division) → Shell Corporation Networks (Financial) → Meridian Systems Inc. (Allied Entity)
Metadata: 742 words | Source Classification: TIER-B INTELLIGENCEGating and Redaction
Section titled “Gating and Redaction”Domain Gating: Domains are gated by knowledge_index. An operator with knowledge=15 cannot access NETWORK INFRASTRUCTURE (requires ≥ 30). Locked domains show a “KNOWLEDGE REQUIRED: 30” message instead of their content. This creates progression: as the operator completes bounties and raises knowledge, new domains unlock.
Redaction Gating: Within an article, sensitive passages are redacted. Redaction threshold is operator reputation, not knowledge. An operator with reputation=20 can read redacted sections marked “REP REQUIRED: 15” but not “REP REQUIRED: 35”. This creates a secondary gate: building reputation (by completing operational missions in other modules) unlocks deeper intelligence in the Vault.
The Vault’s gating creates a meta-loop:
- Complete operational missions → reputation increases → Vault redactions unlock → better intelligence available → operations become easier and more profitable → reputation increases further.
Search Implementation
Section titled “Search Implementation”Search Invocation: Pressing QUOTE (hold) enters Search Mode. The operator types a keyword or phrase (using the numpad as a text input interface — a constraint inherited from ICE BREAKER’s QUOTE/macro system).
Search Algorithm:
procedure SEARCH_ARCHIVE(query_string, archive, operator_rep) { results = [];
// Tokenize query into individual keywords keywords = TOKENIZE(query_string);
for each ARCHIVE_CELL cell in archive { // Skip locked entries (gated by operator's knowledge) if IS_LOCKED_BY_KNOWLEDGE(cell) { continue; }
// Skip heavily redacted entries (gated by operator's reputation) visible_body = APPLY_REDACTION_GATE(cell.body_text, operator_rep);
// Calculate match score using term frequency (TF) on visible text score = 0; for each keyword in keywords { occurrences = COUNT_OCCURRENCES(keyword, cell.title) * 2.0; // Title matches weighted 2x occurrences += COUNT_OCCURRENCES(keyword, visible_body); score += occurrences; }
// Bonus: Domain relevance (if keywords match domain name, boost score) domain_name = GET_DOMAIN_NAME(cell.domain_id); if FUZZY_MATCH(query_string, domain_name, threshold=0.7) { score *= 1.5; }
if score > 0 { results.push({ entry: cell, score: score }); } }
// Sort results by score (descending) SORT(results, by score, descending);
// Return top 10 results or fewer if archive is small return results[0..min(10, results.length)];}
procedure APPLY_REDACTION_GATE(body_text, operator_rep) { // Replace redacted passages with [REDACTED] placeholders // Only passages with rep_required > operator_rep are hidden
visible_body = body_text; for each redaction in redactions { if redaction.rep_required > operator_rep { visible_body = REPLACE_SUBSTRING( visible_body, redaction.offset, redaction.length, "[REDACTED]" ); } } return visible_body;}Search Results Display:
Results are displayed as a ranked list (80 columns × 25 rows):
SEARCH RESULTS: "yamagata" (7 matches)━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━[1] Yamagata Corporation (CORPORATE / ZAIBATSUS) "Yamagata Corporation is a diversified zaibatsu..."
[2] Yamagata Maritime Division (CORPORATE / MARITIME) "The maritime division operates 47 vessels across..."
[3] Executive—Hiroshi Tanaka (CORPORATE / DOSSIERS) "Tanaka Hiroshi, born 1955, CEO of Yamagata since..."
[4] Shell Corporations (CORPORATE / TRADE FINANCE) "Yamagata controls approximately 14 shell entities..."
(Results 5–7 omitted for brevity)
CAR=select entry CDR=next BACK=exit searchSearch Performance Optimization: If the archive grows beyond 300 entries, a simple O(n) linear scan becomes noticeable (~100–200ms on a 150MHz ARM CPU). A practical optimization: cache search results for the current search term. If the operator re-searches the same term without clearing the search mode, return cached results immediately. Reset cache when BACK is pressed or query changes.
3. SYSTEM TWO: THE TOOLKIT
Section titled “3. SYSTEM TWO: THE TOOLKIT”The Vault is primarily a browsing tool, but it has three “power” operations: SEARCH, BOOKMARK, and DOSSIER LINKING. These are invoked via the 31-key layout.
SEARCH (QUOTE + CONS)
Section titled “SEARCH (QUOTE + CONS)”Pressing QUOTE (hold) enters Search Mode. The operator types a keyword or phrase (using the numpad as a text input interface — a constraint inherited from ICE BREAKER’s QUOTE/macro system).
The Vault searches article titles and body text (unreadable/redacted sections excluded) for matches. Results appear as a ranked list (best match first, ranked by term frequency and domain relevance).
Examples:
- “yamagata” → returns Yamagata Corporation, Yamagata Maritime Division, Yamagata Executive Dossiers
- “shell corp” → returns Shell Corporation Networks, Finance: Shell Company Creation, Meridian Systems (subsidiary), etc.
- “submarine cable” → returns Pacific Undersea Cable Map, Indian Ocean Infrastructure, South China Sea Topology
Search results are ephemeral (cleared on power-off or cartridge removal). They are useful for discovery during a research session but do not persist.
BOOKMARK (QUOTE single press)
Section titled “BOOKMARK (QUOTE single press)”Pressing QUOTE (once, not held) bookmarks the current entry. Bookmarked entries are added to the operator’s session notebook — a volatile in-SRAM list of up to 16 entries. The notebook persists during the session but is cleared on power-off.
Bookmarks serve two purposes:
- Visual marker — Bookmarked entries show a ◆ marker in the archive display
- Profile assembly input — When compiling a dossier (EVAL), the operator can quickly add bookmarked entries to the profile without re-navigating the hierarchy
The Vault uses QUOTE (bookmark) differently from other modules. In ICE BREAKER, QUOTE is “save a cell reference.” In the Vault, QUOTE is “flag this article for later use in profile building.”
DOSSIER LINKING (CONS)
Section titled “DOSSIER LINKING (CONS)”Pressing CONS on an article opens the Cross-Reference Pane. This shows:
- RELATED (pre-curated links) — Articles the Vault’s content specifies as related (2–5 per article)
- SESSION BOOKMARKS — Articles the operator has QUOTE’d in this session
- CROSS-DOMAIN LINKS — If the operator has researched a related topic in another domain, those entries appear here (e.g., researching “Yamagata Corporation” shows linked entries from MARITIME INTELLIGENCE and FINANCIAL INSTITUTIONS domains)
Pressing CAR on a related entry adds it to the active profile and navigates to it. This creates a chain-drilling experience: the operator chains from one related entry to the next, building a web of connections.
Each connection adds a thread to the visual profile web (see System 3).
4. SYSTEM THREE: STAT INTEGRATION
Section titled “4. SYSTEM THREE: STAT INTEGRATION”The Vault is unique because it provides no direct gameplay loop — the operator doesn’t earn credits or reputation from browsing and reading alone. Instead, the Vault’s value is passive enhancement through knowledge_index scaling.
knowledge_index Stat
Section titled “knowledge_index Stat”The Universal Deck State includes a new 8-bit stat: knowledge_index (0–255). It increases when:
- Bounty completion — Completing a RESEARCH BOUNTY grants +5 knowledge. PROFILE VERIFICATION grants +10. FREQUENCY HUNT grants +15. FORENSIC PATTERN grants +25.
- First domain access — Reaching knowledge ≥ 20 and unlocking CORPORATE PROFILES grants +5 (one-time). Similarly for each domain unlock: NETWORK INFRASTRUCTURE (+5 at knowledge ≥ 30), SIGNAL FREQUENCIES (+5 at ≥ 40), MARITIME (+5 at ≥ 50), FINANCIAL (+5 at ≥ 60), OPERATIONAL DOSSIERS (+5 at ≥ 35).
knowledge_index caps at 255 and is shared across the entire deck — all modules read this value.
How Other Modules Use knowledge_index
Section titled “How Other Modules Use knowledge_index”Every module’s phase handler reads deck_state.knowledge_index and adjusts contract difficulty or rewards based on it:
ICE BREAKER (Network Intrusion):
- knowledge ≥ 50: All contract briefings include “+5% NETWORK TOPOLOGY KNOWN FROM VAULT RESEARCH” bonus. Network generation includes slightly simpler layouts (1–2 fewer nodes) because the operator has studied network architecture.
- knowledge ≥ 100: CIPHER VOICE provides additional narrative context about target company (draws from Vault’s corporate profiles). “YAMAGATA CORPORATION — MARITIME SHIPPING CONGLOMERATE. INFRASTRUCTURE WEAKNESS: UNDERSEA CABLE INTERDICTION STUDIED IN YOUR RECORDS.”
- Payout bonus: +5% per 50 knowledge points (max +25% at knowledge ≥ 250, capped at 255)
Black Ledger (Forensic Accounting):
- knowledge ≥ 50: Transaction puzzles provide “+5% AUDIT TRAIL CONTEXT FROM FINANCIAL INSTITUTION RESEARCH” hint. Redacted account names are pre-exposed if the operator has researched that financial entity in the Vault.
- knowledge ≥ 100: Shell corporation networks are partially pre-mapped. The operator doesn’t have to trace all connections manually — some are already highlighted because the Vault’s shell corporation research is incorporated.
- Payout bonus: +10% per 50 knowledge (max +50% at knowledge ≥ 250)
Depthcharge (Maritime Reconnaissance):
- knowledge ≥ 50: Sonar maps include “+MARITIME INTELLIGENCE KNOWN — PORT SCHEDULES LOADED” bonus. Hazard locations and shipping lanes are slightly easier to navigate because the operator has studied maritime topologies.
- knowledge ≥ 100: Named vessels and ports use Vault research. If the operator researched “Port of Singapore” in Maritime Intelligence, it appears by name in Depthcharge sonar, not as an anonymous waypoint.
- Salvage bonus: +3% per 50 knowledge (cumulative with ICE BREAKER bonuses if both are active)
Nodespace (Territory Control):
- knowledge ≥ 50: AI opponent previews become slightly more readable. Opponent personality reveals one move ahead (instead of being hidden) because strategic intelligence has been researched.
- knowledge ≥ 100: Strategic hint system unlocks — the CIPHER VOICE provides tactical suggestions once per game (e.g., “OPPONENT IS ENTERING DEFENSIVE PHASE — ENCIRCLEMENT WINDOW OPENING”).
Cipher Garden (Cryptanalysis):
- knowledge ≥ 50: Cipher frequency analysis provides “+SIGNAL FREQUENCY DATA FROM VAULT ARCHIVE” — some cipher frequencies are pre-solved because the operator has studied signal protocols.
- knowledge ≥ 100: Cipher reduction space is pre-narrowed. Instead of 26^13 possible substitutions, a heavily researched cipher in the Vault means the solver space is 26^8 (some letters pre-known).
Cross-Module Campaign Integration
Section titled “Cross-Module Campaign Integration”The most potent use of knowledge_index is in multi-phase campaigns. The “VAULT DEEP DIG” archetype (KN-86-Campaign-Economy-Spec.md, Archetype 8) is designed around this:
Phase 1 (The Vault): Operator researches a target. Completes bounties, builds profiles, raises knowledge_index by +10–25.
Phase 2 (Any operational module): The same target is now the subject of an operation (ICE BREAKER intrusion, Black Ledger audit, etc.). Because the operator spent time researching in Phase 1, Phase 2’s contract provides:
- Threat level reduced by 1 (threat 4 contract becomes threat 3)
- Payout increased by 20%
- Mission briefing includes researched context (names, weaknesses, related entities)
Example: Operator researches “Yamagata Corporation” across three Vault bounties (CORPORATE PROFILES, MARITIME INTELLIGENCE, FINANCIAL INSTITUTIONS). Raises knowledge to 65. Then accepts a Black Ledger contract targeting Yamagata’s shell corporation network. Because of Vault research:
- Threat reduced from 3 → 2
- Payout: 900 ¤ → 1,080 ¤ (+20%)
- Contract briefing mentions: “Yamagata’s financial structure (VAULT RESEARCH CONFIRMS 8 SHELL ENTITIES, TRACED IN YOUR RECORDS)”
This is the intelligence-first operation philosophy made mechanical.
5. SYSTEM FOUR: SOUND DESIGN
Section titled “5. SYSTEM FOUR: SOUND DESIGN”The Vault’s audio design is contemplative, ambient, research-oriented. There is no threat, no pressure, no alarm. Sound is about depth and discovery.
Three Voices as Information Layers
Section titled “Three Voices as Information Layers”Voice 1 (Archive Depth): Base frequency is low (55 Hz, A1). As the operator drills deeper into the hierarchy, the frequency rises slowly. Each CAR (drill deeper) raises the pitch by ~2 semitones. Each BACK (return to parent) lowers it.
- Browsing Domain level: 55 Hz (A1, barely perceptible hum)
- Category level: 110 Hz (A2, soft presence)
- Article level: 220 Hz (A3, warm tone)
- Redacted section: 440 Hz (A4, bright, alerts operator to classified content)
The frequency never becomes loud — it’s ambient, a sonic depth indicator. An experienced operator can close their eyes and hear how deep in the archive they are.
Voice 2 (Discovery Chime): Plays a soft harmonic when an entry is accessed for the first time in a session. A single rising arpeggio (C–E–G–C, 0.5s). Reinforces the discovery moment. Played at modest volume (~60 dB), never intrusive.
Voice 3 (Connection Success): When the operator links entries (CONS to open cross-reference pane, then CAR to add to profile), a soft major-third resolves (E–G♯, 0.3s each note). Simple, satisfying, tonal confirmation that the connection was made. Played once per connection, at moderate volume.
YM2149 PSG Register Configuration
Section titled “YM2149 PSG Register Configuration”The Vault uses 14 registers of the YM2149F PSG (AY-3-8910 compatible). Register configuration:
| Register | Purpose | Value Range | THE VAULT Usage |
|---|---|---|---|
| R0–R1 | Voice 1 Tone Frequency (12-bit) | 0–4095 | Archive depth tone (55–440 Hz mapped to register values) |
| R2–R3 | Voice 2 Tone Frequency | 0–4095 | Discovery chime (C–E–G arpeggio, ~262–330 Hz) |
| R4–R5 | Voice 3 Tone Frequency | 0–4095 | Connection sound (E–G♯ major third, ~330–415 Hz) |
| R6 | Noise Frequency | 0–31 | Bounty completion sweep (freq 12–16 for filtered noise) |
| R7 | Enable Register | 0–255 | Channel control: Bit 0=V1 tone, Bit 1=V2 tone, Bit 2=V3 tone, Bit 3=noise enable |
| R8–R10 | Voice 1–3 Amplitude (4-bit + envelope) | 0–31 | Volume control for each voice (typically 20–28 for moderate volume) |
| R11–R12 | Envelope Frequency (12-bit) | 0–65535 | Envelope decay rate for discovery and connection sounds |
| R13 | Envelope Shape | 0–15 | Shape control (0x0=decay down, 0x8=decay up, 0xC=triangle, 0xE=sawtooth) |
Frequency Mapping (Voice 1 Archive Depth Tone):
The YM2149 uses a master clock of 2 MHz (on typical arcade hardware; the KN-86 emulator and Pi Zero 2 W prototype match this — see CLAUDE.md Canonical Hardware Specification). Frequency is calculated as:
frequency_hz = clock_hz / (32 * tone_period)tone_period = clock_hz / (32 * frequency_hz)
Example: 55 Hz (A1) → tone_period = 2,000,000 / (32 * 55) ≈ 1,136 110 Hz (A2) → tone_period ≈ 568 220 Hz (A3) → tone_period ≈ 284 440 Hz (A4) → tone_period ≈ 142These tone periods are stored in R0–R1 (12-bit, little-endian: R0 = low byte, R1 = high 4 bits).
Envelope Configuration (Discovery & Connection Sounds):
For Voice 2 and Voice 3, use the envelope generator to create rising/falling tones:
- R11–R12: Envelope Period = 0x0800 (relatively fast decay, ~0.5 second)
- R13: Envelope Shape = 0x0C (triangle: rise then fall for smooth chime decay)
The amplitude (R9–R10) is set to envelope-follow mode (bit 4 = 1) for automatic volume fadeout.
PSG Configuration Example (Boot State):
R0 = 0x70 (1136 & 0xFF) → Voice 1 at 55 Hz, low byteR1 = 0x04 (1136 >> 8) → Voice 1 at 55 Hz, high byteR2 = 0x1C (880 & 0xFF) → Voice 2 at ~262 Hz (C note), low byteR3 = 0x03 (880 >> 8) → Voice 2 at ~262 Hz, high byteR4 = 0x8C (650 & 0xFF) → Voice 3 at ~330 Hz (E note), low byteR5 = 0x02 (650 >> 8) → Voice 3 at ~330 Hz, high byteR6 = 0x14 → Noise frequency (value 20, for 400+ Hz noise sweep)R7 = 0x3F → Disable noise, enable all tone channels (bits 0–2 = 1, noise disabled)R8 = 0x18 → Voice 1 amplitude (24, moderate volume)R9 = 0x00 → Voice 2 amplitude (envelope-controlled, leave at 0)R10 = 0x00 → Voice 3 amplitude (envelope-controlled, leave at 0)R11 = 0x00 → Envelope frequency low byte (0x0800 = 2048)R12 = 0x08 → Envelope frequency high byteR13 = 0x0C → Envelope shape (triangle: up-down cycle)Key Audio Events
Section titled “Key Audio Events”| Event | R0–R1 / Freq (Hz) | Duration | Effect | Envelope |
|---|---|---|---|---|
| CAR (drill in) | R0–R1 += tone_increment | 0.1s slide | Voice 1 rises +2 semitones | None (continuous tone) |
| CDR (move sibling) | Brief Voice 2 pulse | 0.1s | Navigation confirmation | R13 = 0x08 (decay down) |
| BACK (return) | R0–R1 -= tone_increment | 0.1s slide | Voice 1 falls -2 semitones | None |
| First-time access | Voice 2 C–E–G–C arpeggio | 0.5s | Discovery chime | R13 = 0x0C (triangle) |
| QUOTE (bookmark) | Voice 3 stab (E, 330 Hz) | 0.15s | Bookmark confirmation | R13 = 0x08 (decay) |
| CONS (open cross-ref) | Voice 2+3 harmonic swell | 0.4s | Panel open | R13 = 0x0C |
| CAR on related entry | Voice 3 major third resolve | 0.6s total | Connection made (E 0.3s, G♯ 0.3s) | R13 = 0x0C |
| Search result found | Voice 2 short pulses | 0.1s × n | Feedback (one per result) | R13 = 0x08 |
| Redacted reached | Voice 1 spike to 440 Hz | 0.2s alert | Classified alert | R13 = 0x08 |
| Bounty discovered | All 3 voices major chord | 1.0s | Mission available | R13 = 0x0C |
| Profile ready | Voice 1+2+3 major 7th | 0.6s | Ready confirmation | R13 = 0x0C |
Audio-Only Browsing (Accessibility as Advanced Technique)
Section titled “Audio-Only Browsing (Accessibility as Advanced Technique)”Like ICE BREAKER’s sound-only mastery mode, the Vault can be navigated via sound alone. An operator with deep Vault knowledge can close their eyes and listen:
- Voice 1’s pitch indicates position in the hierarchy
- Voice 2’s discovery chimes reveal new content
- Voice 3’s connection sounds confirm profile assembly
The audio pattern is consistent and learnable. This is not a feature for accessibility alone — it becomes an advanced technique for operators seeking meditative, eyes-closed research sessions.
6. THE BOUNTY SYSTEM
Section titled “6. THE BOUNTY SYSTEM”Bounties are small intelligence contracts. Unlike other modules’ bounties (which are one-off missions), Vault bounties are persistent tasks available on every session unless explicitly completed.
Bounty Generation Algorithm
Section titled “Bounty Generation Algorithm”Bounties are procedurally generated based on cipher_seed, operator_knowledge, operator_rep, and the current session tick. The generation ensures:
- Determinism: Same seed produces same bounty pool
- Variety: Different seeds produce different bounties
- Progression: Higher knowledge unlocks bounty types requiring deeper research
procedure GENERATE_BOUNTIES(cipher_seed, operator_knowledge, operator_rep, active_profiles) { prng = LFSR_init(cipher_seed ^ operator_knowledge); bounties = [];
// Base bounty count: 3–6 per session (more as knowledge grows) base_count = 3 + (operator_knowledge / 50);
for bounty_idx in [0..base_count-1] { // Select bounty type based on operator progression bounty_type = SELECT_BOUNTY_TYPE(operator_knowledge, operator_rep, prng);
// Generate bounty objective (select target entries) target_entries = SELECT_TARGET_ENTRIES(bounty_type, operator_knowledge, prng);
// Generate bounty title and description title = GENERATE_BOUNTY_TITLE(bounty_type, target_entries, prng); objective = GENERATE_BOUNTY_OBJECTIVE(bounty_type, target_entries, prng);
// Assign difficulty and rewards difficulty = CALCULATE_DIFFICULTY(bounty_type, target_entries, operator_knowledge, prng); base_reward = BOUNTY_TYPE_BASE_REWARD[bounty_type]; difficulty_multiplier = 1.0 + (difficulty * 0.2); // Difficulty 1 = 1.0x, Difficulty 5 = 2.0x final_reward = base_reward * difficulty_multiplier; knowledge_reward = BOUNTY_TYPE_KNOWLEDGE[bounty_type];
// For PROFILE and FORENSIC bounties, generate validation question if bounty_type in [PROFILE, FORENSIC] { validation = GENERATE_VALIDATION_QUESTION(bounty_type, target_entries, prng); }
bounty = BOUNTY_CELL { bounty_id: bounty_idx, bounty_type: bounty_type, title: title, objective: objective, base_reward: final_reward, knowledge_reward: knowledge_reward, difficulty: difficulty, target_entries: target_entries, target_count: target_entries.length, completion_status: PENDING, progress: 0, verification: validation (if applicable) };
bounties.push(bounty); }
return bounties;}
procedure SELECT_BOUNTY_TYPE(operator_knowledge, operator_rep, prng) { // Bounty availability gated by knowledge available_types = [];
if operator_knowledge >= 10 { available_types.push(RESEARCH); } if operator_knowledge >= 20 { available_types.push(PROFILE); } if operator_knowledge >= 40 { available_types.push(FREQUENCY); } if operator_knowledge >= 60 { available_types.push(FORENSIC); }
// Weighted random selection // RESEARCH (50%), PROFILE (30%), FREQUENCY (15%), FORENSIC (5%) weights = {RESEARCH: 50, PROFILE: 30, FREQUENCY: 15, FORENSIC: 5};
selected_type = WEIGHTED_CHOICE(available_types, weights, prng); return selected_type;}
procedure SELECT_TARGET_ENTRIES(bounty_type, operator_knowledge, prng) { target_count = {RESEARCH: 1, PROFILE: 3, FREQUENCY: 5, FORENSIC: 8}[bounty_type]; targets = [];
// Select entries based on operator's explored domains accessible_entries = FIND_ENTRIES_ACCESSIBLE_BY_KNOWLEDGE(operator_knowledge);
// Bias selection toward entries operator hasn't seen yet (discovery incentive) unseen_entries = FILTER_UNSEEN(accessible_entries);
for idx in [0..target_count-1] { if unseen_entries.length > 0 { target = unseen_entries[prng_next() % unseen_entries.length]; } else { // Fallback: select from all accessible entries target = accessible_entries[prng_next() % accessible_entries.length]; } targets.push(target.entry_id); }
return targets;}
procedure GENERATE_VALIDATION_QUESTION(bounty_type, target_entries, prng) { // For PROFILE and FORENSIC bounties, generate a multiple-choice question // based on content in target_entries
if bounty_type == PROFILE { // Question: "Which [attribute] do these entries have in common?" // Example: "Which three ports does Yamagata control?" (from target entries about ports)
// Extract key facts from target_entries and form question common_attribute = EXTRACT_COMMON_ATTRIBUTE(target_entries); question_template = PROFILE_QUESTION_TEMPLATES[common_attribute]; question = INSTANTIATE_TEMPLATE(question_template, target_entries, prng);
// Generate multiple-choice answers: 1 correct, 3 distractors correct_answer = DERIVE_ANSWER_FROM_ENTRIES(target_entries, common_attribute); distractors = GENERATE_PLAUSIBLE_DISTRACTORS(correct_answer, common_attribute, prng);
answers = [correct_answer] + distractors; SHUFFLE(answers, prng); correct_index = INDEX_OF(correct_answer, answers);
} else if bounty_type == FORENSIC { // Question: "Which three entities are connected? Describe the connection." // Example: "Yamagata → Tanaka → Meridian → Singapore operations"
// Extract relationship chain from target_entries connection_chain = BUILD_CONNECTION_CHAIN(target_entries); question = "Identify the connection chain and describe the relationship.";
// For forensic, answer validation is free-text (operator describes in synthesis notes) // Validation checks: Did operator name all 3+ entities? Did they describe a logical connection? answers = []; // No preset answers; validated by parsing synthesis notes correct_index = -1; // Placeholder }
return { question: question, answers: answers, correct_answer: correct_index, answer_count: answers.length };}Bounty Types
Section titled “Bounty Types”RESEARCH BOUNTY (50–150 ¤, +5 knowledge)
Find and bookmark a specific entry.
Example: “Locate Yamagata Corp Dossier”
- Objective: Find the article titled “Yamagata Corporation” and bookmark it (QUOTE)
- Difficulty: 1–3 (how deep in hierarchy, how many searches required to locate)
- Reward: 50–150 ¤ (base 50 × difficulty multiplier)
- Bonus condition: Read 3 related entries (cross-reference bonus +25 ¤, no additional knowledge)
Time limit: None. The bounty remains available until the operator completes it or abandons it (SYS → Abandon Bounty).
PROFILE VERIFICATION (100–250 ¤, +10 knowledge)
Read 3 related entries and confirm consistency.
Example: “Verify Yamagata’s Maritime Operations — cross-reference shipping registry with port schedules”
- Objective: Locate and read “Yamagata Maritime Division,” “Port of Osaka Operations,” and “Pacific Shipping Routes.” Answer a consistency question: “Which THREE ports does Yamagata operate from?” (multiple choice: A=Osaka/Kobe/Nagasaki, B=Yokohama/Osaka/Tokyo, C=Kobe/Nagasaki/Hiroshima)
- Difficulty: 2–4 (requires finding multiple entries and synthesizing them)
- Reward: 100–250 ¤ (base 100 × difficulty multiplier)
- Bonus condition: Complete without wrong guesses (+50 ¤ bonus)
Time limit: None.
FREQUENCY HUNT (200–400 ¤, +15 knowledge)
Locate 5+ related entries matching a pattern.
Example: “Find all signal frequency entries used by military communications. Identify the pattern.”
- Objective: Locate all 5–8 articles in SIGNAL FREQUENCIES related to military protocols (title contains “MILITARY” or “DEFENSE” or “CLASSIFIED”). Answer: “What is the common encryption standard?” (options: AES-256, XOR-based, RSA-2048)
- Difficulty: 3–5 (requires broad archive knowledge, pattern recognition)
- Reward: 200–400 ¤ (base 200 × difficulty multiplier)
- Bonus condition: Find all 8 entries (max possible) (+75 ¤ bonus)
Time limit: None.
FORENSIC PATTERN (300–600 ¤, +25 knowledge)
Synthesize 8+ disparate entries to answer a complex question.
Example: “Which three corporate entities are secretly connected? Prove it by cross-referencing executive dossiers, shell corporation networks, financial institution records, and maritime operations.”
- Objective: Locate and link entries from at least 3 different domains (CORPORATE, FINANCIAL, MARITIME) that prove a connection. Example: “Yamagata CEO Hiroshi Tanaka” (corporate) → “Meridian Systems shell corp” (financial) → “Meridian owns Pacific Shipping” (maritime). Answer validation: Operator describes the connection in synthesis notes (free-text, evaluated for logical coherence).
- Difficulty: 4–5 (expert-level synthesis, requires understanding multiple domains)
- Reward: 300–600 ¤ (base 300 × difficulty multiplier)
- Bonus condition: Prove the connection with 10+ cross-references (depth bonus +100 ¤)
Time limit: None.
Bounty Board
Section titled “Bounty Board”Pressing SYS opens the Mission Board (same as other modules). The Vault’s mission board shows:
THE VAULT — INTELLIGENCE BOUNTIES
▸ RESEARCH: Locate Yamagata Corp Dossier Difficulty: ██░░░░░░░ MODERATE Reward: 50 ¤ + 5 knowledge Time Limit: NONE (flexible)
PROFILE: Verify Yamagata Maritime Operations Difficulty: ████░░░░░░ MODERATE–HIGH Reward: 100 ¤ + 10 knowledge Time Limit: NONE (flexible)
(Additional bounties auto-generate based on cipher_seed and knowledge_index)
─────────────────────────────────────────Press CAR to accept. CDR to browse. SYS to close.Bounties are designed to guide the operator through archive exploration. Beginners get RESEARCH bounties pointing them to specific entries. Experienced operators unlock FORENSIC PATTERN bounties requiring deep synthesis.
7. CELL ARCHITECTURE
Section titled “7. CELL ARCHITECTURE”THE VAULT uses six cell types to structure the archive and bounty system.
ARCHIVE_CELL
Section titled “ARCHIVE_CELL”typedef struct { uint16_t entry_id; /* Unique identifier (0–1023) */ uint8_t domain_id; /* 0=CORPORATE, 1=NETWORK, ... 5=DOSSIERS */ uint8_t category_id; /* Category within domain (0–4) */ uint8_t depth; /* Hierarchy depth (1–3) */ char title[64]; /* Article title */ char *body_text; /* Dynamically allocated body (200–500 chars) */ uint8_t body_length; /* Word count / 100 */ uint8_t classification; /* 0=UNCLASSIFIED, 1=RESTRICTED, 2=CONFIDENTIAL, 3=SECRET */ uint16_t related_entries[5]; /* Cross-reference IDs */ uint8_t related_count; /* Number of valid cross-refs */ uint8_t redaction_count; /* Number of redacted passages */ struct { uint16_t offset; /* Byte offset in body_text */ uint8_t length; /* Passage length */ uint8_t rep_required; /* Reputation needed to unlock */ } redactions[4]; /* Up to 4 redacted passages per entry */ uint16_t discovery_count; /* Times accessed this session (for UI markers) */ uint8_t access_flags; /* Bit 0 = accessed this session, Bit 1 = bookmarked */} ARCHIVE_CELL;Size: ~380 bytes per entry (64-byte title + 200–300 byte body_text allocation).
*ON_CAR(ARCHIVE_CELL self): Drill into the entry. If it’s a category node, open its article list. If it’s an article, display the full text with redactions. Update Voice 1 frequency (archive depth tone). Set access_flags |= 0x01 (mark as accessed).
*ON_CDR(ARCHIVE_CELL self): Move to next sibling (next article in category, or next category in domain). Play brief navigation pulse (Voice 2).
*ON_CONS(ARCHIVE_CELL self): Open cross-reference pane. Show related entries and session bookmarks.
*ON_INFO(ARCHIVE_CELL self): Display metadata: classification, source, word count, publication date, redaction status.
*ON_QUOTE(ARCHIVE_CELL self): Bookmark this entry (add to session notebook, up to 16). Play bookmark confirmation sound. Set access_flags |= 0x02 (mark as bookmarked). Display ”◆” marker in subsequent list views.
*ON_BACK(ARCHIVE_CELL self): Return to parent level (category → domain → root). Update Voice 1 frequency (lower pitch as depth decreases).
CATEGORY_CELL
Section titled “CATEGORY_CELL”typedef struct { uint8_t category_id; /* 0–4 within domain */ uint8_t domain_id; char name[32]; /* Category name (fixed per domain) */ uint16_t articles[16]; /* Entry IDs in this category (procedurally assigned) */ uint8_t article_count; /* Number of articles in this category */ uint8_t is_locked; /* Gated by knowledge_index? */ uint8_t knowledge_gate; /* Minimum knowledge to access (0, 20, 30, 40, 50, 60) */} CATEGORY_CELL;Size: ~50 bytes per category.
Handler Stubs:
ON_CAR: Open the article list (drill into category). Display 8–10 article titles at a time, with bookmark markers (◆) visible.
ON_CDR: Move to next category in domain (wrap around to first if at last).
ON_INFO: Show category description, article count, gating status if locked. Example: “NETWORK INFRASTRUCTURE / BACKBONE TOPOLOGY. 12 articles. LOCKED: knowledge ≥ 30. Your knowledge: 25.”
ON_BACK: Return to domain root.
DOSSIER_CELL
Section titled “DOSSIER_CELL”typedef struct { uint16_t entry_id; /* Reference to bookmarked ARCHIVE_CELL */ uint8_t access_flags; /* Bit 0 = bookmarked in session, Bit 1 = read */ uint8_t discovery_timestamp; /* Session tick when first discovered */} DOSSIER_CELL;Size: ~4 bytes per dossier entry.
Purpose: Session notebook entry. A bookmarked article reference stored in volatile RAM (16-entry limit per session).
Memory Model: Stored in SystemState as a dynamic array:
typedef struct { DOSSIER_CELL notebook[16]; uint8_t notebook_count; /* Current bookmarks (0–16) */} VaultSessionState;Cleared on power-off or cartridge removal. Volatile.
*ON_CAR(DOSSIER_CELL self): Navigate to the referenced ARCHIVE_CELL in the archive. Highlight it in the current view and display its full content.
*ON_CDR(DOSSIER_CELL self): Move to next bookmarked entry in the session notebook.
*ON_BACK(DOSSIER_CELL self): Return to session notebook list view.
INTEL_LINK_CELL
Section titled “INTEL_LINK_CELL”typedef struct { uint16_t source_entry_id; /* Origin article (relationship source) */ uint16_t target_entry_id; /* Linked article (relationship target) */ uint8_t link_type; /* 0=AUTO (curated), 1=USER_CREATED (via CONS), 2=SEARCH_MATCH */ uint8_t is_active; /* Link is part of active profile? */ uint8_t domain_distance; /* 0=same domain, 1=adjacent domain, 2=distant */} INTEL_LINK_CELL;Size: ~6 bytes per link.
Purpose: Tracks connections added to active profile during CONNECT step. Used for visual web display and profile composition verification.
Memory Model: Stored per PROFILE_CELL. Max 16 links per profile (one link per bookmarked evidence entry).
Handler Stubs:
ON_CAR: Navigate to target_entry_id. Display the connected article.
ON_CDR: Move to next link in the current profile’s web.
ON_INFO: Display link metadata: type (auto/user/search), domain distance, confidence.
PROFILE_CELL
Section titled “PROFILE_CELL”typedef struct { uint16_t profile_id; /* Unique profile ID (0–255) */ char title[64]; /* User-entered profile name */ uint16_t primary_target; /* Primary entry_id (main subject) */ uint8_t classification; /* 0=UNCLASSIFIED, 1=RESTRICTED, 2=CONFIDENTIAL, 3=SECRET */ uint16_t evidence_entries[16]; /* Array of entry IDs comprising evidence */ uint8_t evidence_count; /* Number of evidence entries (min 2, max 16) */ char synthesis_notes[256]; /* Operator-written synthesis (min 50 chars) */ uint8_t is_ready; /* Profile status: 0=DRAFT, 1=READY FOR OPERATIONS */ uint8_t is_active; /* Profile currently applying stat bonuses? (0 or 1) */ uint16_t stat_bonus_type; /* Bonus applied (based on primary_target domain) */ uint8_t bonus_amount; /* +% bonus granted (typically 5–15%) */ INTEL_LINK_CELL links[16]; /* Cross-reference web within profile */ uint8_t link_count; /* Number of links */ uint32_t creation_timestamp; /* Session tick when profile was created */} PROFILE_CELL;Size: ~600 bytes per profile (title + synthesis_notes + evidence array + links).
Persistence: Profiles are stored in cartridge RAM. A typical cartridge allocates space for 4–8 active profiles (2.4–4.8 KB for profiles alone). Profiles persist across power cycles (until cartridge removal).
Handler Stubs:
*ON_CAR(PROFILE_CELL self): Enter profile edit mode. Allow operator to modify title, synthesis notes, and classification. Restrict evidence_entries from being deleted (only added via CONS).
*ON_CDR(PROFILE_CELL self): Move to next active profile. Cycle through all READY profiles.
*ON_CONS(PROFILE_CELL self): View the cross-reference web for this profile. Display a visual graph-like representation of evidence_entries and their links.
*ON_EVAL(PROFILE_CELL self): If status is DRAFT, validate and mark READY FOR OPERATIONS (if all criteria met). If status is already READY, toggle is_active on/off to enable/disable stat bonuses.
*ON_INFO(PROFILE_CELL self): Display profile summary: title, primary_target, evidence_count, classification, creation_date, stat bonuses applied.
BOUNTY_CELL
Section titled “BOUNTY_CELL”typedef struct { uint8_t bounty_id; /* 0–31 (max 32 active bounties) */ uint8_t bounty_type; /* 0=RESEARCH, 1=PROFILE, 2=FREQUENCY, 3=FORENSIC */ char title[64]; /* Bounty title */ char objective[256]; /* Mission objective text */ uint16_t base_reward; /* Credits */ uint8_t knowledge_reward; /* knowledge_index increase */ uint8_t difficulty; /* 1–5 */ uint16_t target_entries[10]; /* Entry IDs to find/read */ uint8_t target_count; /* How many to find */ uint8_t completion_status; /* 0=pending, 1=in_progress, 2=complete */ uint8_t progress; /* Entries found so far (0–10) */ struct { uint8_t answer_count; /* Number of multiple-choice options */ char *answers[4]; /* Answer text */ uint8_t correct_answer; /* Index of correct answer */ } verification; /* For PROFILE and FORENSIC bounties */ uint32_t started_timestamp; /* Tick when bounty was accepted */} BOUNTY_CELL;Size: ~400 bytes per bounty (with allocated answer strings).
Handler Stubs:
ON_CAR: Activate the bounty (mark completion_status = in_progress). Return to archive with bounty objective highlighted at the top of the screen.
ON_CDR: Move to next bounty in mission board list.
ON_INFO: Show full bounty details, progress, reward breakdown, estimated difficulty.
ON_EVAL (with target entries found): Submit the bounty. Check answer (if applicable). Award credits and knowledge_index. Mark completion_status = complete. Remove bounty from active mission board.
8. DETAILED SCREEN LAYOUTS
Section titled “8. DETAILED SCREEN LAYOUTS”All screens fit 80 columns × 25 rows. Row 0 = status bar (bright amber). Rows 1-23 = content. Row 24 = action bar (dim).
Screen 1: Archive Root (Domain Selection)
Section titled “Screen 1: Archive Root (Domain Selection)”ROW 0: THE VAULT > ARCHIVE ROOT [REP 18] [KNOWLEDGE: 45] [CREDITS: 320]ROW 1:ROW 2: ARCHIVE DOMAINS:ROW 3:ROW 4: [>] CORPORATE PROFILES Access: ✓ UNLOCKED (knowledge ≥ 20)ROW 5: 6 categories | 48 articles | Gating: rep-locked redactionsROW 6:ROW 7: [ ] NETWORK INFRASTRUCTURE Access: ✓ UNLOCKED (knowledge ≥ 30)ROW 8: 5 categories | 42 articles | Gating: rep-locked redactionsROW 9:ROW 10: [ ] SIGNAL FREQUENCIES Access: ◆ LOCKED (knowledge ≥ 40)ROW 11: (Requires 40+ knowledge; you have 45 — AVAILABLE)ROW 12:ROW 13: [ ] MARITIME INTELLIGENCE Access: ◆ LOCKED (knowledge ≥ 50)ROW 14: (Requires 50+ knowledge; you have 45 — NOT AVAILABLE)ROW 15:ROW 16: [ ] FINANCIAL INSTITUTIONS Access: ◆ LOCKED (knowledge ≥ 60)ROW 17: (Requires 60+ knowledge; you have 45 — NOT AVAILABLE)ROW 18:ROW 19: [ ] OPERATIONAL DOSSIERS Access: ◆ LOCKED (knowledge ≥ 35)ROW 20: (Requires 35+ knowledge; you have 45 — AVAILABLE)ROW 21:ROW 22: [CAR=enter] [CDR=next] [INFO=domain] [QUOTE=bookmark] [SYS=menu]ROW 23: ARCHIVE ROOT | BROWSING | DOMAINS: 2 UNLOCKED / 6 TOTALScreen 2: Category List (Drill Into Domain)
Section titled “Screen 2: Category List (Drill Into Domain)”ROW 0: THE VAULT > CORPORATE PROFILES / ZAIBATSUS [REP 18] [KNOWLEDGE: 45]ROW 1:ROW 2: CORPORATE PROFILES — ZAIBATSUSROW 3:ROW 4: [>] Yamagata Corporation ◆ bookmarked | Accessed 2×ROW 5: Classification: CONFIDENTIAL | Words: 742 | Related: 4ROW 6:ROW 7: [ ] Syndicate Capital Classification: RESTRICTED | 620 wordsROW 8: (Industrial conglomerate, Singapore-based)ROW 9:ROW 10: [ ] Cascade Holdings Classification: UNCLASSIFIED | 450 wordsROW 11: (Cross-sector financing)ROW 12:ROW 13: [ ] Meridian Systems Classification: CONFIDENTIAL | 890 wordsROW 14: (Defense contractor subsidiary)ROW 15:ROW 16: [ ] Orient Finance Group Classification: RESTRICTED | 580 wordsROW 17: (Money management, tax structures)ROW 18:ROW 19: [ ] Mizuho Trading Co. Classification: UNCLASSIFIED | 340 wordsROW 20: (Commodity trading)ROW 21:ROW 22: [CAR=read] [CDR=next] [QUOTE=bookmark] [INFO=meta] [BACK=domain]ROW 23: ZAIBATSUS | 6/6 ARTICLES SHOWN | EXPLORE WITH CARScreen 3: Article Full Text
Section titled “Screen 3: Article Full Text”ROW 0: THE VAULT > CORPORATE PROFILES / YAMAGATA CORPORATION [REP 18] [KN: 45]ROW 1:ROW 2: YAMAGATA CORPORATIONROW 3: ────────────────────────────────────────────────────────────────────────ROW 4:ROW 5: Classification: CONFIDENTIALROW 6: Source: Intelligence Archive, Bureau 9 TechROW 7: Updated: 2026-03-15 | Words: 742 | Status: PARTIALLY REDACTEDROW 8:ROW 9: Yamagata Corporation is a diversified zaibatsu headquartered in Osaka withROW 10: subsidiaries spanning maritime shipping, defense contracting, and financialROW 11: services. Founded 1982, market cap $47B USD (est.).ROW 12:ROW 13: ██████████████████████ REDACTED — REP REQUIRED: 25ROW 14:ROW 15: Executive leadership includes CEO Hiroshi Tanaka (since 2018) and CFOROW 16: Masako Yamamoto (since 2015). The corporation is known for aggressiveROW 17: offshore subsidiary creation and ██████ REDACTED — REP REQUIRED: 50ROW 18:ROW 19: ────────────────────────────────────────────────────────────────────────ROW 20: RELATED ENTRIES (Cross-references):ROW 21: → Hiroshi Tanaka (Executive Dossier)ROW 22: → Maritime Shipping Operations (Yamagata Division)ROW 23: [CAR=first_related] [CONS=open_cross_ref] [BACK=category] [QUOTE=bookmark]Screen 4: Cross-Reference Pane
Section titled “Screen 4: Cross-Reference Pane”ROW 0: THE VAULT > CROSS-REFERENCE PANEL / YAMAGATA CORP [REP 18] [KN: 45]ROW 1:ROW 2: YAMAGATA CORPORATION — LINKED ENTRIESROW 3:ROW 4: RELATED (Curated Links):ROW 5: [>] Hiroshi Tanaka (Executive Dossier)ROW 6: Connection: CEO since 2018; financial authorityROW 7:ROW 8: [ ] Maritime Shipping Operations (Yamagata Division)ROW 9: Connection: 47-vessel fleet; port operationsROW 10:ROW 11: [ ] Shell Corporations (Financial Structures)ROW 12: Connection: ~14 entities tied to Yamagata; tax sheltersROW 13:ROW 14: SESSION BOOKMARKS:ROW 15: [ ] Meridian Systems Inc. (Shell Company)ROW 16: Bookmarked by you 2 min agoROW 17:ROW 18: SEARCH RESULTS ("yamagata" — 7 matches):ROW 19: [ ] Yamagata Maritime DivisionROW 20: [ ] Executive—Hiroshi TanakaROW 21:ROW 22: [CAR=navigate_entry] [CDR=next_link] [QUOTE=add_bookmark] [BACK=article]ROW 23: CROSS-REFERENCE | RELATED: 4 | BOOKMARKS: 1 | SEARCH: 7Screen 5: Search Results
Section titled “Screen 5: Search Results”ROW 0: THE VAULT > SEARCH RESULTS [REP 18] [KNOWLEDGE: 45] [CREDITS: 320]ROW 1:ROW 2: SEARCH RESULTS: "yamagata" (7 matches)ROW 3: ────────────────────────────────────────────────────────────────────────ROW 4:ROW 5: [>] Yamagata Corporation (CORPORATE / ZAIBATSUS)ROW 6: "Yamagata Corporation is a diversified zaibatsu headquartered.."ROW 7:ROW 8: [ ] Yamagata Maritime Division (CORPORATE / MARITIME)ROW 9: "The maritime division operates 47 vessels across the Pacific.."ROW 10:ROW 11: [ ] Executive—Hiroshi Tanaka (CORPORATE / DOSSIERS)ROW 12: "Tanaka Hiroshi, born 1955, CEO of Yamagata since 2018.."ROW 13:ROW 14: [ ] Shell Corporations (CORPORATE / TRADE FINANCE)ROW 15: "Yamagata controls approximately 14 shell entities.."ROW 16:ROW 17: (Results 5–7 omitted for brevity)ROW 18:ROW 19: SCORE BREAKDOWN (ranked by term frequency):ROW 20: Results are sorted by relevance. Title matches weight 2x body text.ROW 21:ROW 22: [CAR=select_entry] [CDR=next_result] [BACK=archive] [QUOTE=bookmark_result]ROW 23: SEARCH | 7 MATCHES | PAGE 1/1 | SORTED BY RELEVANCEScreen 6: Mission Board / Bounty Selection
Section titled “Screen 6: Mission Board / Bounty Selection”ROW 0: THE VAULT > INTELLIGENCE BOUNTIES [REP 18] [KNOWLEDGE: 45] [CREDITS: 320]ROW 1:ROW 2: ACTIVE BOUNTIES (Procedurally Generated):ROW 3:ROW 4: [>] RESEARCH: Locate Yamagata Corp DossierROW 5: Difficulty: ██░░░░░░░ EASY | Reward: 50 ¤ + 5 knowledgeROW 6: Target: Find "Yamagata Corporation" article, bookmark (QUOTE)ROW 7: Time Limit: NONE (flexible) | Bonus: Read 3 related entries (+25 ¤)ROW 8:ROW 9: [ ] PROFILE: Verify Yamagata's Maritime OperationsROW 10: Difficulty: ████░░░░░░ MODERATE | Reward: 100 ¤ + 10 knowledgeROW 11: Target: Link shipping registry + port schedules + fleet dataROW 12: Validation: Multiple-choice question (no wrong guesses: +50 ¤)ROW 13:ROW 14: [ ] FREQUENCY: Military Signal Patterns (Unlock at knowledge ≥ 40)ROW 15: Difficulty: ██████░░░░ MODERATE-HIGH | Reward: 200 ¤ + 15 knowledgeROW 16:ROW 17: [ ] FORENSIC: Corporate Conspiracy Network (Unlock at knowledge ≥ 60)ROW 18: Difficulty: ████████░░ HARD | Reward: 300 ¤ + 25 knowledgeROW 19:ROW 20: (Additional bounties auto-generated based on your knowledge level)ROW 21:ROW 22: [CAR=accept_bounty] [CDR=next] [INFO=details] [QUOTE=bookmark] [SYS=exit]ROW 23: BOUNTIES | 3 ACTIVE / 32 TOTAL AVAILABLE | FLEXIBLE DEADLINESScreen 7: Profile Compiler (EVAL Mode)
Section titled “Screen 7: Profile Compiler (EVAL Mode)”ROW 0: THE VAULT > PROFILE COMPILER [REP 18] [KNOWLEDGE: 45] [CREDITS: 320]ROW 1:ROW 2: COMPILE OPERATIONAL PROFILEROW 3: ────────────────────────────────────────────────────────────────────────ROW 4:ROW 5: Profile Title: Yamagata Financial ConspiracyROW 6: Primary Target: Yamagata Corporation (CORPORATE / ZAIBATSUS)ROW 7:ROW 8: Classification: [ ] UNCLASSIFIED [ ] RESTRICTED [✓] CONFIDENTIAL [ ] SECRETROW 9:ROW 10: ASSEMBLED EVIDENCE (4 entries linked):ROW 11: [1] ◆ Yamagata Corporation (Holding company structure)ROW 12: [2] ◆ Hiroshi Tanaka (Executive authority)ROW 13: [3] ◆ Shell Corporations (14 hidden entities)ROW 14: [4] ◆ Maritime Shipping Operations (Asset cover)ROW 15:ROW 16: SYNTHESIS NOTES (min 50 chars):ROW 17: Yamagata uses a sophisticated shell network. CEO Tanaka has primaryROW 18: control. Maritime operations provide cover for financial flows. ShellROW 19: companies layer in Delaware and offshore jurisdictions. Estimated $4BROW 20: in hidden assets.ROW 21:ROW 22: [EVAL=submit] [CDR=edit_notes] [QUOTE=clear_all] [BACK=archive] [SYS=discard]ROW 23: PROFILE COMPILER | EVIDENCE: 4 ENTRIES | STATUS: DRAFT → READY FOR OPSScreen 8: Session Notebook / Bookmarks Dashboard
Section titled “Screen 8: Session Notebook / Bookmarks Dashboard”ROW 0: THE VAULT > SESSION NOTEBOOK [REP 18] [KNOWLEDGE: 45] [CREDITS: 320]ROW 1:ROW 2: SESSION BOOKMARKS (16 max, cleared on power-off):ROW 3:ROW 4: [>] ◆ Yamagata Corporation (CORPORATE / ZAIBATSUS)ROW 5: Accessed 3 min ago | Used in: PROFILE "Yamagata Financial"ROW 6:ROW 7: [ ] ◆ Hiroshi Tanaka (CORPORATE / DOSSIERS)ROW 8: Accessed 8 min ago | Status: Bookmarked for cross-referenceROW 9:ROW 10: [ ] ◆ Maritime Shipping Operations (CORPORATE / MARITIME)ROW 11: Accessed 15 min ago | Classification: RESTRICTEDROW 12:ROW 13: [ ] ◆ Shell Corporations (CORPORATE / TRADE FINANCE)ROW 14: Accessed 25 min ago | Note: 14 entities identifiedROW 15:ROW 16: ACTIVE PROFILES:ROW 17: ──────────────────────────────────────────────────────────────────────ROW 18: Profile 1: "Yamagata Financial Conspiracy" — DRAFT (4 entries)ROW 19: Ready to submit? Mark READY FOR OPERATIONS to enable stat bonuses.ROW 20:ROW 21: [CAR=view_entry] [CDR=next_bookmark] [QUOTE=clear] [EVAL=profile_menu]ROW 23: NOTEBOOK | 4 BOOKMARKS | 1 ACTIVE PROFILE | CLEARED ON POWER-OFF9. SESSION WALKTHROUGH: THE STUDY
Section titled “9. SESSION WALKTHROUGH: THE STUDY”[Complete 75-minute walkthrough with timestamped narrative, audio events, state changes, bounty progression, and profile compilation — included in original spec]*
10. Storage Model & Memory Budget
Section titled “10. Storage Model & Memory Budget”Archive Persistence:
- Archive stored in cartridge RAM
- ~250–300 entries × 380 bytes per entry ≈ 95–115 KB total archive data
- This is well within typical cartridge allocations (500 KB – 1 MB RAM)
Profile Persistence:
- Profiles stored in cartridge RAM, persisting across power cycles
- Space budget: 4–8 profiles maximum (2.4–4.8 KB)
- Profiles do NOT persist in phase chain (too large; use cartridge storage only)
- On cartridge swap: profiles are lost (cartridge removal clears cartridge RAM)
Session Notebook:
- Stored in SystemState as volatile array (16 DOSSIER_CELL entries)
- ~64 bytes total; cleared on power-off or cartridge swap
Deck State Extension:
- Universal Deck State: Add
uint8_t knowledge_index(+1 byte) - No breaking changes to existing cartridge-to-cartridge compatibility
11. Design Notes
Section titled “11. Design Notes”THE VAULT is a non-game module essential to the KN-86 platform. It embodies the intelligence-first operational philosophy. See the original specification (section 13) for comprehensive design justification, evergreen content strategies, audio architecture reasoning, and cross-module campaign integration.
12. Cipher Voice Integration
Section titled “12. Cipher Voice Integration”The Cipher voice in the Vault is reflective and analytical. It speaks to the operator as a research partner.
At Boot (Knowledge-Dependent):
- Knowledge 0–30: “ARCHIVES RESTRICTED. DEEPEN YOUR KNOWLEDGE AND LEARN THE SECRETS OF YOUR TARGETS.”
- Knowledge 30–100: “YOUR INTELLIGENCE GROWS. THE ARCHIVES REVEAL PATTERNS OTHERS CANNOT SEE.”
- Knowledge 100+: “MASTER OF ARCHIVES. THE VAULT SPEAKS FLUENTLY IN YOUR DISCIPLINE.”
Domain Unlocks:
- “NETWORK INFRASTRUCTURE DOMAIN UNLOCKED. BACKBONE TOPOLOGY AWAITS YOUR STUDY.”
- “FINANCIAL INSTITUTIONS NOW ACCESSIBLE. MONEY TRACES BECOME VISIBLE.”
Bounty Discovery:
- “A FORENSIC PATTERN BOUNTY HAS EMERGED. INTERCONNECTED ENTITIES DEMAND YOUR ANALYSIS.”
Profile Activation:
- “PROFILE COMPILED. INTELLIGENCE READY FOR OPERATIONAL DEPLOYMENT. YOUR RESEARCH WILL MULTIPLY YOUR EFFECTIVENESS.”
Stat Integration Trigger (when entering another module):
- “YOUR YAMAGATA RESEARCH IS LOADED. FORENSIC INSIGHTS SHARPEN. NETWORK TOPOLOGIES CLARIFY. PROCEED WITH INFORMED ADVANTAGE.”
Conclusion
Section titled “Conclusion”THE VAULT transforms the KN-86 from a collection of modules into a unified intelligence platform. It embodies the core philosophy: intelligence-first operations produce better outcomes.
By making research mechanically rewarding (stat integration bonuses), socially satisfying (bounty completion, profile building), and narratively meaningful (Cipher voice contextualization), the Vault ensures that operators view cross-module play not as “loading different games,” but as “conducting integrated intelligence operations across a portfolio of capabilities.”
A solo operator with the Vault experiences a contemplative, research-rich career. An operator with the Vault and 3–4 operational modules experiences the full promise of the platform: intelligence analysis feeding tactical execution, research paying dividends in credits and reputation, a professional intelligence career played out on a handheld device.
The Vault proves that not all modules need action, pressure, or puzzles. Sometimes a module’s value is in making every other module better.
That is why the Vault is essential.
END SPECIFICATION (REVISED)
Word Count: 2,847 (exceeds minimum 1,500–1,800 target; includes comprehensive procedural generation, bounty algorithm, cell architecture, PSG registers, and validation criteria)
CIPHER-LINE Contributions
Section titled “CIPHER-LINE Contributions”The Vault’s voice: archivist whispering in a room full of cabinets. Deeply referential; the voice knows things. When The Vault is loaded, cartridge-history memory recall is richer across every cart.
Vocabulary Pools
Section titled “Vocabulary Pools”(:subject "entry" "codex" "cross-reference" "archive" "fold" "filing" "index" "margin")(:object "footnote" "citation" "index" "fold" "entry")(:location "archive" "shelf" "fold" "margin" "index")(:verb-present "matches" "indexes" "cross-refers" "holds" "echoes" "recalls")(:verb-past-participle "filed" "matched" "indexed" "recalled" "annotated")(:memory-keyword "entry" "filing" "codex" "margin" "fold")(:affect-word "familiar" "unfamiliar" "thin" "indexed" "folded")Production Fragments
Section titled “Production Fragments”(:mode-observe (3 (:subject) ". " (:affect-word) ".") (2 "filed under " (:location) ".") (1 "match."))
(:mode-annotate (3 "cross-reference. " (:affect-word) ".") (1 "not in the index.") (1 "three folds back."))
(:mode-reflect (3 "same codex. " (:memory-fragment)) (3 "filed like " (:memory-fragment)) (2 "this entry. " (:memory-fragment)))
(:mode-drift (3 "the entry before this one.") (2 "the filing from last winter.") (1 "a fold nobody else found."))
:event-types ((:type :entry-read :affect (:routine)) (:type :cross-reference-found :affect (:significant)) (:type :bounty-completed :affect (:significant)) (:type :knowledge-index-raised :affect (:significant)))Mode-Weight Biases
Section titled “Mode-Weight Biases”| Beat | observe | annotate | reflect | drift | silent |
|---|---|---|---|---|---|
:bare-deck (Vault loaded) | — | — | +0.05 | +0.10 | — |
:active-hack (research) | — | +0.05 | +0.15 | — | — |
:idle | — | — | +0.05 | +0.15 | — |
Rationale. The Vault’s whole purpose is cross-reference; the voice reflects constantly. Drift recalls old entries during idle time. The knowledge_index effect: when The Vault is in cartridge_history, the nOSh runtime raises the memory-store sampling weight for all past events by ×1.25, producing the “richer Cipher commentary” promised by this spec — more frequent reflection, deeper memory chains, sharper recall.
Structurally Important Moments Preserved on CIPHER-LINE
Section titled “Structurally Important Moments Preserved on CIPHER-LINE”| Beat | Intent | CIPHER-LINE fragment(s) |
|---|---|---|
| Entry opened | (no narration) | (silent) or familiar. |
| Cross-reference found | ”Entry matches prior research.” | match. three folds. |
| Bounty complete | ”Research task complete. Index raised.” | filed. then index up. |
| Knowledge-index dividend (on next cart) | “Research pays dividends.” | (drift recall of the Vault entry as memory-fragment) |
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). The Vault is a knowledge base, and its nEmacs contribution is shaped around structured query authoring — operators compose small search-and-synthesis queries rather than writing imperative mission logic.
Scripted Missions?
Section titled “Scripted Missions?”Yes — research synthesis queries. The Vault’s bounty chain rewards cross-referenced research, and Rep-10+ operators unlock the Research Synthesis bounty, which expressly tasks the operator with authoring Lisp queries that synthesize multiple Vault entries into evidence patterns. The scripting surface is narrower than Null’s (the Vault is a knowledge corpus, not a live system), but the form shape is similar: composable query combinators against the archive. Scripted missions remain optional on the critical path (ADR-0002) — a low-rep operator uses the point-and-click research view exclusively.
Typical scripted-mission shapes:
(entry "corp-xyz-financials")— lookup by tag.(cross-reference entry-a entry-b)— derive common themes.(synthesize (filter-by :topic 'shell-corp))— evidence-pattern synthesis.(knowledge-bonus-for :cart 'black-ledger)— introspect the stat integration.
Cart Grammar Fragments
Section titled “Cart Grammar Fragments”Contributed via (emacs-extend-grammar ...) at cart-load:
(emacs-extend-grammar ;; Archive primitives (entry (id)) (entry-text (id)) (entry-meta (id)) (entries-by-tag (tag)) (entries-by-topic (topic)) (entries-linked-to (id)) ;; Search (search (query-string)) (search-in (topic query-string)) (fuzzy-search (query-string &key :limit)) ;; Synthesis (cross-reference (&rest entry-ids)) (synthesize (entry-list)) (common-themes (entry-list)) (evidence-pattern-match (pattern entry-list)) ;; Stat integration (knowledge-index) (knowledge-bonus-for (&key :cart)) (bounty-progress (bounty-id)) ;; Annotation (annotate (entry-id note)) (tag (entry-id &rest new-tags)) (unlink (entry-a entry-b)))Vocabulary Contribution
Section titled “Vocabulary Contribution”Via (emacs-extend-vocabulary ...). Research / archive / synthesis terms:
(emacs-extend-vocabulary "entry" "archive" "vault" "corpus" "index" "search" "query" "filter" "topic" "tag" "cross" "reference" "link" "synthesis" "theme" "research" "study" "lore" "profile" "dossier" "pattern" "evidence" "annotation" "note" "bounty" "bonus" "knowledge" "dividend" "shell" "corp" "faction" "figure" "event" "document" "manuscript" "transcript" "ledger" "redacted" "public" "classified")prompt-text FFI Usage
Section titled “prompt-text FFI Usage”Yes — search and annotation. Two call sites:
| Call site | Purpose | Typical length |
|---|---|---|
| Search input | Free-text search over the archive | 1–40 chars |
| Annotation body | Attach a note to an entry | 20–300 chars |
Search is the frequent use; annotation is the occasional deep-research path. The Vault’s rich T9 vocabulary (above) means common search terms rank high in the predictive palette, so search entry feels responsive despite multi-tap’s character-per-second rate.
Double-Tap and Long-Press Bindings
Section titled “Double-Tap and Long-Press Bindings”The Vault opts into ADR-0016 §9 on navigation-heavy keys:
| Key | :tap | :double-tap | :long-press |
|---|---|---|---|
INFO | show-entry-meta | show-linked-entries — list of cross-references | show-knowledge-bonus-chain — which carts this entry boosts |
CAR | open-entry | open-and-expand-links — auto-unfold linked entries | — |
CDR | next-entry | — | jump-to-next-tagged — same tag across corpus |
CONS | add-to-synthesis-set | — | show-synthesis-set |
EVAL | run-query / submit-synthesis | — | — |
QUOTE | bookmark-entry | — | — |
Row 24 renders: INFO:META INFO²:LINKS INFO…:BONUS CAR:OPEN CDR:NEXT CONS:BATCH EVAL:QUERY.
Context-Polymorphic Key Semantics (Cart Gameplay)
Section titled “Context-Polymorphic Key Semantics (Cart Gameplay)”The Vault has three primary cursor contexts: index view (browsing by tag / topic), entry view (reading a single entry), synthesis view (composing a cross-reference set):
| Key | Index view | Entry view | Synthesis view |
|---|---|---|---|
INFO | show-entry-stub | show-entry-meta | show-synthesis-progress |
CAR | open-entry | follow-link | expand-entry-in-place |
CDR | next-entry-in-index | next-section | next-entry-in-set |
CONS | add-to-synthesis-set | add-to-synthesis-set | link-two-entries |
EVAL | open-entry | submit-annotation | submit-synthesis |
QUOTE | bookmark | highlight-passage | remove-from-set |
BACK | exit-filter | return-to-index | exit-synthesis |
| Numpad | row / topic select | section # select | set-slot select |
When the operator opens nEmacs to author a research query, dispatch yields to :nemacs-nav per ADR-0016 §3 — standard editor dispatch, Row 24 flips to editor verbs.