Skip to content

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 Composition Grammar declaration — verb vocabulary, affinity tag set, and mission-contributions schema are defined in docs/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.


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.

The operator navigates the Archive, which is a hierarchical knowledge base organized into 6 domains:

  1. CORPORATE PROFILES — Company hierarchies, ownership chains, executive biographies, financial standing (gated by knowledge ≥ 20)
  2. NETWORK INFRASTRUCTURE — ISP maps, telecom relay stations, encrypted routing tables, known defense patterns (gated by knowledge ≥ 30)
  3. SIGNAL FREQUENCIES — Radio bands, satellite uplinks, military communications channels, encrypted protocol specs (gated by knowledge ≥ 40)
  4. MARITIME INTELLIGENCE — Port schedules, shipping vessel registries, coastal defense positions, smuggling route maps (gated by knowledge ≥ 50)
  5. FINANCIAL INSTITUTIONS — Bank routing codes, cryptocurrency exchange hubs, money-laundering conduits, trade finance workflows (gated by knowledge ≥ 60)
  6. 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.

The operator finds a relevant entry. Relevance is contextual — an entry becomes relevant when:

  1. A bounty names it specifically — e.g., “Locate the Yamagata Corp Dossier entry”
  2. The operator’s search reveals it — QUOTE + CONS triggers a keyword search across the archive
  3. 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.

The operator links related entries. CONS on an entry opens a cross-reference panel showing:

  1. RELATED (automatically linked) — The entry’s own cross-references (curated by the Vault’s content design, 2–5 entries)
  2. BOOKMARKED (operator-created) — Entries the operator has flagged with QUOTE in this session
  3. 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.

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 [ ] SECRET
Assembled 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 OPERATIONS

The 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.”


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.

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 Engine
procedure 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

Each article has:

  1. Title — The entry name (e.g., “Yamagata Corporation”)
  2. Classification — UNCLASSIFIED, RESTRICTED, CONFIDENTIAL, or SECRET (affects text rendering and redaction)
  3. Body Text — 3–10 sentences of formatted text. Some sentences may be redacted (shown as ”█████ REDACTED ─ REP REQUIRED: 25”)
  4. Metadata — Publication date, source agency, last updated, word count
  5. Related Entries — 2–5 linked article titles (cross-references)
  6. Redaction Status — Which passages are locked and which reputation threshold unlocks them

Example article:

YAMAGATA CORPORATION
Classification: CONFIDENTIAL
Source: Intelligence Archive, Bureau 9 Tech
Updated: 2026-03-15
Yamagata Corporation is a diversified zaibatsu headquartered in Osaka with
subsidiaries spanning maritime shipping, defense contracting, and financial
services. Founded 1982, market cap $47B USD.
█████ REDACTED ─ REP REQUIRED: 25
█████ REDACTED ─ REP REQUIRED: 35
Executive leadership includes CEO Hiroshi Tanaka (since 2018) and CFO
Masako Yamamoto (since 2015). The corporation is known for aggressive
offshore 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 INTELLIGENCE

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 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 search

Search 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.


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.

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.

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:

  1. Visual marker — Bookmarked entries show a ◆ marker in the archive display
  2. 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.”

Pressing CONS on an article opens the Cross-Reference Pane. This shows:

  1. RELATED (pre-curated links) — Articles the Vault’s content specifies as related (2–5 per article)
  2. SESSION BOOKMARKS — Articles the operator has QUOTE’d in this session
  3. 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).


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.

The Universal Deck State includes a new 8-bit stat: knowledge_index (0–255). It increases when:

  1. Bounty completion — Completing a RESEARCH BOUNTY grants +5 knowledge. PROFILE VERIFICATION grants +10. FREQUENCY HUNT grants +15. FORENSIC PATTERN grants +25.
  2. 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.

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).

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.


The Vault’s audio design is contemplative, ambient, research-oriented. There is no threat, no pressure, no alarm. Sound is about depth and discovery.

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.

The Vault uses 14 registers of the YM2149F PSG (AY-3-8910 compatible). Register configuration:

RegisterPurposeValue RangeTHE VAULT Usage
R0–R1Voice 1 Tone Frequency (12-bit)0–4095Archive depth tone (55–440 Hz mapped to register values)
R2–R3Voice 2 Tone Frequency0–4095Discovery chime (C–E–G arpeggio, ~262–330 Hz)
R4–R5Voice 3 Tone Frequency0–4095Connection sound (E–G♯ major third, ~330–415 Hz)
R6Noise Frequency0–31Bounty completion sweep (freq 12–16 for filtered noise)
R7Enable Register0–255Channel control: Bit 0=V1 tone, Bit 1=V2 tone, Bit 2=V3 tone, Bit 3=noise enable
R8–R10Voice 1–3 Amplitude (4-bit + envelope)0–31Volume control for each voice (typically 20–28 for moderate volume)
R11–R12Envelope Frequency (12-bit)0–65535Envelope decay rate for discovery and connection sounds
R13Envelope Shape0–15Shape 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 ≈ 142

These 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 byte
R1 = 0x04 (1136 >> 8) → Voice 1 at 55 Hz, high byte
R2 = 0x1C (880 & 0xFF) → Voice 2 at ~262 Hz (C note), low byte
R3 = 0x03 (880 >> 8) → Voice 2 at ~262 Hz, high byte
R4 = 0x8C (650 & 0xFF) → Voice 3 at ~330 Hz (E note), low byte
R5 = 0x02 (650 >> 8) → Voice 3 at ~330 Hz, high byte
R6 = 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 byte
R13 = 0x0C → Envelope shape (triangle: up-down cycle)
EventR0–R1 / Freq (Hz)DurationEffectEnvelope
CAR (drill in)R0–R1 += tone_increment0.1s slideVoice 1 rises +2 semitonesNone (continuous tone)
CDR (move sibling)Brief Voice 2 pulse0.1sNavigation confirmationR13 = 0x08 (decay down)
BACK (return)R0–R1 -= tone_increment0.1s slideVoice 1 falls -2 semitonesNone
First-time accessVoice 2 C–E–G–C arpeggio0.5sDiscovery chimeR13 = 0x0C (triangle)
QUOTE (bookmark)Voice 3 stab (E, 330 Hz)0.15sBookmark confirmationR13 = 0x08 (decay)
CONS (open cross-ref)Voice 2+3 harmonic swell0.4sPanel openR13 = 0x0C
CAR on related entryVoice 3 major third resolve0.6s totalConnection made (E 0.3s, G♯ 0.3s)R13 = 0x0C
Search result foundVoice 2 short pulses0.1s × nFeedback (one per result)R13 = 0x08
Redacted reachedVoice 1 spike to 440 Hz0.2s alertClassified alertR13 = 0x08
Bounty discoveredAll 3 voices major chord1.0sMission availableR13 = 0x0C
Profile readyVoice 1+2+3 major 7th0.6sReady confirmationR13 = 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.


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.

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
};
}

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.

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.


THE VAULT uses six cell types to structure the archive and bounty system.

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).

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.

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.

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.

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.

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.


All screens fit 80 columns × 25 rows. Row 0 = status bar (bright amber). Rows 1-23 = content. Row 24 = action bar (dim).

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 redactions
ROW 6:
ROW 7: [ ] NETWORK INFRASTRUCTURE Access: ✓ UNLOCKED (knowledge ≥ 30)
ROW 8: 5 categories | 42 articles | Gating: rep-locked redactions
ROW 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 TOTAL

Screen 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 — ZAIBATSUS
ROW 3:
ROW 4: [>] Yamagata Corporation ◆ bookmarked | Accessed 2×
ROW 5: Classification: CONFIDENTIAL | Words: 742 | Related: 4
ROW 6:
ROW 7: [ ] Syndicate Capital Classification: RESTRICTED | 620 words
ROW 8: (Industrial conglomerate, Singapore-based)
ROW 9:
ROW 10: [ ] Cascade Holdings Classification: UNCLASSIFIED | 450 words
ROW 11: (Cross-sector financing)
ROW 12:
ROW 13: [ ] Meridian Systems Classification: CONFIDENTIAL | 890 words
ROW 14: (Defense contractor subsidiary)
ROW 15:
ROW 16: [ ] Orient Finance Group Classification: RESTRICTED | 580 words
ROW 17: (Money management, tax structures)
ROW 18:
ROW 19: [ ] Mizuho Trading Co. Classification: UNCLASSIFIED | 340 words
ROW 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 CAR
ROW 0: THE VAULT > CORPORATE PROFILES / YAMAGATA CORPORATION [REP 18] [KN: 45]
ROW 1:
ROW 2: YAMAGATA CORPORATION
ROW 3: ────────────────────────────────────────────────────────────────────────
ROW 4:
ROW 5: Classification: CONFIDENTIAL
ROW 6: Source: Intelligence Archive, Bureau 9 Tech
ROW 7: Updated: 2026-03-15 | Words: 742 | Status: PARTIALLY REDACTED
ROW 8:
ROW 9: Yamagata Corporation is a diversified zaibatsu headquartered in Osaka with
ROW 10: subsidiaries spanning maritime shipping, defense contracting, and financial
ROW 11: services. Founded 1982, market cap $47B USD (est.).
ROW 12:
ROW 13: ██████████████████████ REDACTED — REP REQUIRED: 25
ROW 14:
ROW 15: Executive leadership includes CEO Hiroshi Tanaka (since 2018) and CFO
ROW 16: Masako Yamamoto (since 2015). The corporation is known for aggressive
ROW 17: offshore subsidiary creation and ██████ REDACTED — REP REQUIRED: 50
ROW 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]
ROW 0: THE VAULT > CROSS-REFERENCE PANEL / YAMAGATA CORP [REP 18] [KN: 45]
ROW 1:
ROW 2: YAMAGATA CORPORATION — LINKED ENTRIES
ROW 3:
ROW 4: RELATED (Curated Links):
ROW 5: [>] Hiroshi Tanaka (Executive Dossier)
ROW 6: Connection: CEO since 2018; financial authority
ROW 7:
ROW 8: [ ] Maritime Shipping Operations (Yamagata Division)
ROW 9: Connection: 47-vessel fleet; port operations
ROW 10:
ROW 11: [ ] Shell Corporations (Financial Structures)
ROW 12: Connection: ~14 entities tied to Yamagata; tax shelters
ROW 13:
ROW 14: SESSION BOOKMARKS:
ROW 15: [ ] Meridian Systems Inc. (Shell Company)
ROW 16: Bookmarked by you 2 min ago
ROW 17:
ROW 18: SEARCH RESULTS ("yamagata" — 7 matches):
ROW 19: [ ] Yamagata Maritime Division
ROW 20: [ ] Executive—Hiroshi Tanaka
ROW 21:
ROW 22: [CAR=navigate_entry] [CDR=next_link] [QUOTE=add_bookmark] [BACK=article]
ROW 23: CROSS-REFERENCE | RELATED: 4 | BOOKMARKS: 1 | SEARCH: 7
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 RELEVANCE

Screen 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 Dossier
ROW 5: Difficulty: ██░░░░░░░ EASY | Reward: 50 ¤ + 5 knowledge
ROW 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 Operations
ROW 10: Difficulty: ████░░░░░░ MODERATE | Reward: 100 ¤ + 10 knowledge
ROW 11: Target: Link shipping registry + port schedules + fleet data
ROW 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 knowledge
ROW 16:
ROW 17: [ ] FORENSIC: Corporate Conspiracy Network (Unlock at knowledge ≥ 60)
ROW 18: Difficulty: ████████░░ HARD | Reward: 300 ¤ + 25 knowledge
ROW 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 DEADLINES
ROW 0: THE VAULT > PROFILE COMPILER [REP 18] [KNOWLEDGE: 45] [CREDITS: 320]
ROW 1:
ROW 2: COMPILE OPERATIONAL PROFILE
ROW 3: ────────────────────────────────────────────────────────────────────────
ROW 4:
ROW 5: Profile Title: Yamagata Financial Conspiracy
ROW 6: Primary Target: Yamagata Corporation (CORPORATE / ZAIBATSUS)
ROW 7:
ROW 8: Classification: [ ] UNCLASSIFIED [ ] RESTRICTED [✓] CONFIDENTIAL [ ] SECRET
ROW 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 primary
ROW 18: control. Maritime operations provide cover for financial flows. Shell
ROW 19: companies layer in Delaware and offshore jurisdictions. Estimated $4B
ROW 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 OPS

Screen 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-reference
ROW 9:
ROW 10: [ ] ◆ Maritime Shipping Operations (CORPORATE / MARITIME)
ROW 11: Accessed 15 min ago | Classification: RESTRICTED
ROW 12:
ROW 13: [ ] ◆ Shell Corporations (CORPORATE / TRADE FINANCE)
ROW 14: Accessed 25 min ago | Note: 14 entities identified
ROW 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-OFF

[Complete 75-minute walkthrough with timestamped narrative, audio events, state changes, bounty progression, and profile compilation — included in original spec]*


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

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.


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.”

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)


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.

(: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")
(: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)))
Beatobserveannotatereflectdriftsilent
: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”
BeatIntentCIPHER-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)

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.

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.

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)))

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")

Yes — search and annotation. Two call sites:

Call sitePurposeTypical length
Search inputFree-text search over the archive1–40 chars
Annotation bodyAttach a note to an entry20–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.

The Vault opts into ADR-0016 §9 on navigation-heavy keys:

Key:tap:double-tap:long-press
INFOshow-entry-metashow-linked-entries — list of cross-referencesshow-knowledge-bonus-chain — which carts this entry boosts
CARopen-entryopen-and-expand-links — auto-unfold linked entries
CDRnext-entryjump-to-next-tagged — same tag across corpus
CONSadd-to-synthesis-setshow-synthesis-set
EVALrun-query / submit-synthesis
QUOTEbookmark-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):

KeyIndex viewEntry viewSynthesis view
INFOshow-entry-stubshow-entry-metashow-synthesis-progress
CARopen-entryfollow-linkexpand-entry-in-place
CDRnext-entry-in-indexnext-sectionnext-entry-in-set
CONSadd-to-synthesis-setadd-to-synthesis-setlink-two-entries
EVALopen-entrysubmit-annotationsubmit-synthesis
QUOTEbookmarkhighlight-passageremove-from-set
BACKexit-filterreturn-to-indexexit-synthesis
Numpadrow / topic selectsection # selectset-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.