DEPTHCHARGE — Gameplay Specification
Operational Sonar & Submersible Capability Module — KN-86 Deckline
v2.0 | 2026-07-29
CIPHER-LINE revision note (2026-04-24): Every reference in this spec to “Cipher voice” narration, sonar commentary, or threat warning now describes output that renders on the CIPHER-LINE OLED above the keyboard, not on the main 128×75 grid. Where a Cipher line is quoted as a full sentence (e.g., “Sonar shows two contacts bearing northeast…”), read it as the intent of that beat; the actual CIPHER-LINE rendering is a clipped fragment pair honoring the voice heuristic: Depthcharge’s voice is tactical drone pilot, increasingly mystical about the depths. The sonar ping, hull groan, and acoustic signal design remain on the PSG main-audio channels and are not affected by this revision. See the CIPHER-LINE Contributions section at the end of this spec for Depthcharge’s vocabulary, production fragments, and mode-weight biases. Canonical engine specification:
docs/software/runtime/cipher-voice.md.
Tier 1 — Treatment
Section titled “Tier 1 — Treatment”Re-anchor note (2026-07-25, gate: draft). This Tier 1 replaces the previous treatment, which framed the cart as a real-time “meditation on tactical patience.” Two things changed. Josh named the cart’s actual shape: the capability is piloting a submersible drone, and salvage, sabotage, espionage, and AetherNet access are mission families that ride it. And the tempo is now turn-based. Tiers 2 and 3 below have since been re-cut against this treatment (GWP-758, 2026-07-29) and are approved; the real-time 10-30 second OODA design they used to carry is the retired one, mapped section by section in Tier 3 Appendix A. Sources: the Ahl BASIC-corpus pass, and
development-document.md§“a job might mean piloting a drone to an underwater AetherNet port on DEPTHCHARGE’s sonar display.”
The hook
Section titled “The hook”You are blind, and the only way to see costs you something.
Depthcharge is the deck’s submersible-drone capability. The operator flies a drone through dark water toward an objective they cannot see, and the entire game is the economy of finding out where things are. Passive listening is quiet and vague. An active ping is precise and loud, and it tells the water where you are as surely as it tells you where the water is. Every ping is a flashbulb in a dark room.
That trade is the cart. Everything else is what you are down there to do.
What the operator does
Section titled “What the operator does”Four mission families ride the same drone:
- Salvage. Find and lift something from the seabed. The classic treasure hunt, and the tutorial shape.
- Sabotage. Reach a structure and break it, with something guarding it.
- Espionage. Reach a target and observe without being detected at all, where a single ping can fail the run.
- AetherNet access. Reach an underwater datajack and connect. This is the one that wires Depthcharge into the rest of the deck: the drone is how you physically reach a port that has no route above water, and what happens after you jack in belongs to whatever cart the mission hands you next.
The same three decisions run under all four: how do I find it, how close do I get, and when do I risk a ping.
Tense and quiet, with spikes. Long stretches of dead reckoning and faint passive contacts, punctuated by the decision to go active. A ping should feel like spending money. Running out of pings with the objective still unlocated should feel like your own fault, because it was.
Turn-based, so nothing happens while the operator thinks. The pressure is scarcity rather than clock.
What the 1978-84 corpus contributes
Section titled “What the 1978-84 corpus contributes”- A ping budget derived from the search volume (Depth Charge). The count comes out of how big the water is, so playing well means halving the uncertainty each time and flailing runs you dry. This is the mechanic that makes the hunt honest, and it only stays honest if a ping returns a direction and a distance band rather than a full picture. That trade is the one real design decision this treatment forces (below).
- Information quality as a function of depth (Seabattle). How much the water tells you passively depends on where you are in it, so position is an information decision and not only a movement one. Renders natively as dither density.
- A moving objective with something shadowing it (Convoy). Sabotage and espionage missions get a guard that stays near what it protects, so the approach problem is threading rather than bracketing.
- A seabed that runs without you (Seabattle). Hazards resolve against each other, not only against the operator, so the map behaves like a place rather than a board.
The one decision this treatment forces
Section titled “The one decision this treatment forces”How much does an active ping reveal? The budget mechanic assumes a ping is a gradient: bearing plus a coarse range band, so two pings from different positions triangulate. The superseded Tier 2 has the ping return range to every contact at once, which is a full reveal and makes any budget generous. Pick one. The treatment recommends the gradient, because it is what makes the scarcity bite and what makes a second ping a real decision rather than a formality.
Feasibility verdict
Section titled “Feasibility verdict”Buildable, and mostly from parts that exist. Turn-based removes the real-time pressure the current implementation carries. The sonar plane is cell rendering with dither for confidence and decay. Bearing-and-band feedback is arithmetic. The guard behavior has a home in the existing pursuit model rather than needing a new one, and depth-gated fog is a lookup.
- Canonical key binding: INFO = observe, so INFO is the ping. EQ = orient, so EQ compares a contact against what the mission is looking for. EVAL = act, so EVAL commits at the objective (lift, break, observe, jack in) and is where the four mission families differ. This follows the ice-breaker and black-ledger OODA precedent.
- No new primitive is required for the core loop. Flagged for the Tier 2 pass rather than assumed: whether AetherNet access hands off to another cart in-session, and what that handoff is.
- Open, deliberately: the ping-fidelity decision above; whether espionage’s “one ping fails you” is a separate mode or a mission modifier; and the numbers, all of which are Tier 3.
Tier 2 — Operator spec
Section titled “Tier 2 — Operator spec”Rewrite note (GWP-758, 2026-07-29, gate: approved). This Tier 2 and the Tier 3 below replace the April-2026 operator spec and detailed design, which the 2026-07-25 re-anchor marked superseded. The retired design was a real-time 10-30 second OODA loop with a wall-clock oxygen timer; the cart is now turn-based, and the capability is piloting a submersible drone with four mission families riding it. Tier 1 above is the authority for this rewrite and is unchanged. The two open decisions the treatment named are resolved here and marked where they land: ping fidelity is the gradient (§2.2), and silent running is a mission modifier rather than a separate mode (§4). Section numbers restart; Appendix A maps the retired sections to their replacements. Hardware values are never restated here: see the Canonical Hardware Specification for the cell grid, the Row 0 / Rows 1-73 / Row 74 ownership contract, the amber phosphor, and the OLED-exclusive CIPHER-LINE.
1. The core loop
Section titled “1. The core loop”The atomic unit is one command. Nothing in the water moves until the operator issues one, and then everything moves once. The operator can take as long as they like between commands. Every command costs something.
A turn resolves in a fixed order:
- The picture. The scope shows what passive listening currently supports: the contacts the drone can hear from where it sits, at the confidence its current depth allows.
- The command. The operator moves, changes depth, pings, classifies, deploys a tool, or commits.
- The cost. The command deducts what it spends: a ping, hull margin, a tool.
- World step. Guards step, a drifting objective drifts, hazards resolve against whatever is standing in them, and noise decays by one step.
- The picture again. The consequence is on the scope before the next command can be issued.
The repeating decision is the one Tier 1 names: how to find it, how close to get, and when to risk a ping.
The smallest closed loop, as beats:
| # | Verb | Visible consequence | Resource change | What it changes about the next decision |
|---|---|---|---|---|
| 1 | LISTEN (implicit) | a smear of possible bearings at the current depth’s confidence | none | whether the picture is good enough to act on |
| 2 | MOVE / DIVE | the passive picture changes, because the listening position changed | 1 turn; hull risk in a hazard cell | whether a better listening position justifies the exposure |
| 3 | PING | one bearing and one coarse range band drawn on the scope | pings −1, noise + | how much budget remains against how much water is left |
| 4 | FIX | two bands intersect into an exact contact | the second ping | whether to approach the objective directly now |
| 5 | CLASSIFY | the contact is named, or excluded | 1 turn | whether this was the objective or a decoy |
| 6 | COMMIT | the family act resolves at the objective | ends the objective | what remains of the run, and the climb out |
Each consequence changes what the operator would choose next.
2. The three systems
Section titled “2. The three systems”2.1 The water: position is an information decision
Section titled “2.1 The water: position is an information decision”Depth is a list and the lateral field is a plane. Depth is also the information dial. Passive hearing is depth-gated: shallow water is loud and confused, deeper water is quieter and carries further, so passive confidence rises with depth. The cost is pressure against the hull and a longer climb out.
Position therefore carries information value as well as movement value. The depth that improves reception is the same depth that costs hull, so descending to improve the picture is a real choice.
2.2 The sonar: the ping economy
Section titled “2.2 The sonar: the ping economy”Passive listening is free, always running, and vague. Active sonar is precise, budgeted, and loud.
A ping returns a gradient. One ping gives a bearing and a coarse range band, which narrows the objective to an arc. A second ping taken from a different position produces a second arc, and the two intersect. That intersection is the FIX. This resolves the decision Tier 1 left open. A ping taken from the same cell as the last one returns a near-identical arc, so the operator has to move between pings to get a usable fix.
The ping budget is granted per contract and derived from the size of the water being searched, so a search that halves its uncertainty each time finishes inside the budget and a scattered one runs dry. An operator who runs out with the objective unlocated lost the run to their own search pattern.
Every ping, and every loud tool, adds noise. Guards detect noise and nothing else.
2.3 The opposition, and hazards that apply to both sides
Section titled “2.3 The opposition, and hazards that apply to both sides”Two guard shapes:
- The shadow stays near what it protects and does not wander. Sabotage and espionage objectives carry one, so the approach problem is threading rather than bracketing.
- The rover patrols a wider circuit and reacts to noise.
Proximity alone does nothing. A quiet drone can sit beside a shadow; a loud drone on the far side of the field gets found. This couples the ping economy to the danger: the operator pays for information in the currency the guards read.
Hazards resolve against whatever occupies them, including guards. A rover that steps into a vent is destroyed. A patient operator can use this, positioning so a pursuing rover’s next step lands in a hazard.
3. The verbs
Section titled “3. The verbs”| Verb | What it does | Key | Cost |
|---|---|---|---|
| LISTEN | the passive picture, at the current depth’s confidence | (always on) | free |
| PING | active sonar: one bearing, one coarse range band, and a noise spike | INFO | 1 ping, noise + |
FIX = CONS(PING, PING) | intersect two ping gradients into an exact contact | CONS | the second ping |
| DIVE | descend one depth level: better hearing, tighter margin | CAR | 1 turn |
| RISE | ascend one depth level | CDR | 1 turn |
| MOVE | lateral step inside the depth plane | numpad | 1 turn |
| MARK | bookmark a contact or a position for later reference | QUOTE | free |
| CLASSIFY | compare a contact against the mission’s target signature | EQ | 1 turn |
| DEPLOY | use a carried tool | APPLY | 1 turn, noise + |
| COMMIT | the family act at the objective: lift, break, observe, or jack in | EVAL | resolves the objective |
| RECALL | replay a recorded approach pattern on a new bearing | LAMBDA / APPLY | free, mastery-gated |
In the verb-partition taxonomy: PING, DIVE, RISE, MOVE, CLASSIFY,
DEPLOY and COMMIT are CORE (one irreducible change each). FIX is the COMPOSITE, and it is
literally CONS(PING, PING): two cores combined with the CONS key, in the same shape Black Ledger’s
CHAIN takes. LISTEN and the contact-class vocabulary are VOCAB-only.
Key justification, following the ice-breaker and black-ledger OODA precedent named in Tier 1: INFO observes, so INFO is the ping. EQ orients, so EQ is the comparison against what the mission is looking for. EVAL acts, so EVAL is the commit, and it is the single place the four families differ. CAR descends and CDR ascends the depth list, which is this cart’s existing canonical reading of the two keys.
4. The four mission families
Section titled “4. The four mission families”All four fly the same drone and run the same three decisions. They differ at COMMIT, and in what the water is doing while the operator works.
| Family | Board class (Tier-3 verb) | What COMMIT does | What makes it distinct |
|---|---|---|---|
| Salvage | EXTRACTION (OBTAIN) | lift the object off the seabed | the tutorial shape: a static objective and a generous budget |
| Sabotage | SABOTAGE (DESTROY) | break the structure | a shadow guards it, and the act itself is loud |
| Espionage | SURVEILLANCE (OBSERVE) | observe from inside an approach band | carries the silent-run modifier by default |
| AetherNet access | PENETRATION (PENETRATE) | jack into the underwater port | the objective is a doorway into another cart |
Each class is an existing member of the closed Tier-3 verb set in mission-type-catalog.md; the catalog already names a “guarded compartment (DEPTHCHARGE)” as a PENETRATE example. No new mission verb is introduced.
Silent run is a mission modifier. This resolves the second question Tier 1 left open. Any family may carry it, and it converts the ping budget from a resource into a tripwire: while it is active, an active ping forfeits the run’s bonus objective, and at the strictest threat band it fails the contract. Espionage carries it by default, so the family plays differently without a second set of rules. Composability is the reason for the choice: a silent salvage is a harder salvage, and it costs nothing to author.
AetherNet access is the family that wires this cart to the rest of the deck. The drone is the only way to physically reach a port with no route above water. What happens after the jack is not this cart’s content: COMMIT resolves the objective and the mission hands off. The shape of that handoff is carried as an open escalation in Tier 3 §11 rather than assumed here.
5. Emergent collisions
Section titled “5. Emergent collisions”Situations the systems produce without an author scripting them.
The wasted second ping. The operator pings, gets an arc, and pings again without moving. The second gradient nearly duplicates the first, the intersection stays wide, and two pings of a small budget are gone. The FIX pays the operator who spent a turn repositioning first.
Hearing better by sitting somewhere worse. The objective is faint. Descending two levels sharpens the passive picture enough to place it without spending a ping, but the deeper cell sits inside a pressure band that costs hull every turn the operator stays in it. The information is free; the margin is not.
Using a hazard on a rover. A rover is closing and the operator has no quiet options left. A decoy would work but is loud. Instead the operator moves so the rover’s next step lands on a vent, which destroys it under the same rule that applies to the drone.
The loud lift. The salvage is found and the objective is directly below, but the lift is loud and the shadow is close. The operator can commit now and run with noise on the board, or spend three quiet turns opening distance first and risk the drift carrying the objective. Both are correct at different budget states.
The silent-run trap. Under the silent modifier the ping budget is intact and unusable. Late in a search, with the objective unplaced, spending one is tempting and carries a stated price.
6. Session shape
Section titled “6. Session shape”A short salvage (about 12 minutes). The board offers a shallow EXTRACTION at low threat. Minutes 0-2: the drone launches and the operator listens, gets two faint bearings, and takes one ping to bracket them. Minutes 2-6: a lateral move of four cells, a second ping, and the FIX resolves one contact as the wreck and excludes the other as terrain. Minutes 6-10: the descent, one hull knock against an unseen ridge, and CLASSIFY confirms the cargo. Minute 11: COMMIT lifts it. Minute 12: the climb out with two pings unspent, which pays a bonus at settlement.
A long sabotage (about 40 minutes). A mid-threat SABOTAGE with a shadow on the structure. Minutes 0-8: passive listening only, mapping the shadow’s circuit from the noise it makes rather than pinging for it. Minutes 8-20: a slow descent, two pings spent from widely separated positions to fix the structure, and a decoy held in reserve. Minutes 20-30: the approach, threading the shadow’s near pass, one hazard cell crossed on purpose to shorten the route and a hull cost taken for it. Minutes 30-36: COMMIT breaks the structure and the noise spikes hard; the shadow converges. Minutes 36-40: the run out, the decoy spent, and the surface reached with the hull low.
Why a failed dive still advances mastery. A run that ends with the drone lost leaves the operator knowing which depths carried sound, where the guard’s circuit ran, and what the objective’s signature sounded like. The economy pays for that separately from the contract (§11).
7. Onboarding: the first five minutes
Section titled “7. Onboarding: the first five minutes”The first contract is always a shallow salvage with a static objective, a wide budget, and one distant rover that never converges.
- Boot and launch. The scope opens on empty water with the drone at the surface. Nothing advances until the operator issues a command, which demonstrates the turn rule before it is stated.
- The first listen. Two passive contacts appear as ambiguous arcs, so the operator sees that passive returns partial information.
- The first ping. INFO spends one of a generous budget and draws a bearing and a band. The budget readout decrements, so the operator sees the cost before scarcity applies.
- The first move, then the second ping. The tutorial withholds the FIX until the operator has moved, so their first intersection is a usable one. The arrangement teaches the core skill without a prompt.
- The first commit. The descent is short, CLASSIFY confirms, EVAL lifts, and the settlement screen pays out the unspent pings.
Tier 3 — Detailed design
Section titled “Tier 3 — Detailed design”0. What Depthcharge is now
Section titled “0. What Depthcharge is now”Depthcharge is the launch library’s submersible-drone capability and its MARITIME anchor. The gameplay is a turn-based grammar over a generated volume of water: the operator flies a drone they cannot see out of, and the entire economy of the cart is finding out where things are.
Four things changed from the retired design:
- Turn-based. One command is one turn is one world tick. The retired 10-30 second OODA windows, the wall-clock oxygen timer, and the continuous threat-proximity tone are gone. The pressure is scarcity: pings, hull, and noise.
- The ping is a gradient. Active sonar returns a bearing and a coarse range band. The retired design returned range to every contact at once, which made any budget generous.
- The cart is Lisp.
depthcharge.lspis KEC Lisp source, tree-walked. This tier carries no C structs and noCELL_DEFINEmacro surface; those predate ADR-0001. - Four mission families, one drone. Salvage, sabotage, espionage, and AetherNet access are mission families over the same capability, and they differ only at COMMIT.
Design principle (project rule): every feature is justified by a gameplay-mechanic addition and reuses the canonical Lisp-primitive key semantics verbatim.
1. Mission Contributions and Capability Registration
Section titled “1. Mission Contributions and Capability Registration”Mission Composition Grammar declaration: verb vocabulary, affinity tag set, and the
mission-contributionsschema are defined indocs/plans/post-v0.1/2026-04-25-mission-composition-grammar.md§1-§3 (deleted 2026-07-29; recover from git history).
(mission-contributions :verbs (PENETRATE OBTAIN OBSERVE DESTROY DELIVER) :affinities (MARITIME PHYSICAL))Reaching a defended underwater port or compartment satisfies PENETRATE; salvage runs satisfy OBTAIN; passive-sonar reconnaissance and observation runs satisfy OBSERVE; breaking a submerged structure satisfies DESTROY; courier handoffs at the dock satisfy DELIVER (the sanctioned MARITIME → PHYSICAL transition). DESTROY is added in this pass to carry the sabotage family; every family resolves onto the existing closed Tier-3 set, and no new mission verb is proposed.
Depthcharge remains the only launch cart pairing MARITIME with PHYSICAL.
Capability Registration
Section titled “Capability Registration”(cart-init) issues the Mission Control capability declaration (authoring contract:
ADR-0028 +
ADR-0030):
(register-capabilities :module :depthcharge :bit 0x08 :provides '(:submersible-piloting :passive-sonar :active-sonar-gradient :salvage-recovery :submerged-sabotage :aethernet-access :dock-handoff) :affinities '(:maritime :physical) :seeds '(dive-topology contact-set acoustic-profile) :supersedes :sonar :threat-cap 5)Two changes from the retired declaration, both consequences of this rewrite: :provides gains
:active-sonar-gradient, :submerged-sabotage and :aethernet-access (the families are what the
board composes against), and the hull-stress-curve seed is replaced by acoustic-profile, because
generation now needs the depth-to-confidence curve (§4) more than it needs a pressure table.
Relationship to baseline
Section titled “Relationship to baseline”Depthcharge supersedes the System-tier :sonar baseline
(sonar.md) per ADR-0030. While inserted, it amplifies the
sonar-sweep domain: the baseline’s surface-only passive ping becomes full submersible piloting, the
active/passive gradient economy, depth-gated hearing, four mission families, and the dock handoff,
and the threat ceiling lifts from the baseline’s training cap of 2 to the cart’s operations ceiling
of 5. Eject the cart and the deck falls back to the bare sweep loop. See
mission-control.md §2.3 (the supersedes mechanic) and §3.2.1
(threat-cap inheritance).
2. The turn contract
Section titled “2. The turn contract”A turn is the interval between two operator commands. The resolution order is fixed, and the cart resolves the whole order before accepting the next key.
| Phase | What resolves | Notes |
|---|---|---|
| 1. Command | the operator’s verb executes | the only player input in the turn |
| 2. Cost | pings, hull, tool charges deduct | a failed command still costs its turn |
| 3. Guards | each guard takes one step against its rule | shadows orbit, rovers patrol or converge |
| 4. Drift | a drifting objective moves | only families that declare drift |
| 5. Hazards | every occupant of a hazard cell resolves against it | applies to guards as well as the drone |
| 6. Noise | the noise meter decays one step | silence is how noise is repaid |
| 7. Render | the scope redraws from the new state | the consequence is visible before the next command |
Implementation seam (GWP-758): the turn is move-driven World Clock, the default mode in
world-engine.md: the world advances on operator moves, and the cart never polls a wall clock. Depthcharge declares no wall-clock heat. The cart drives the tick from itson-keyhandler and emits the typed world events the lenses read; it does not run its own scheduler.
The ABYSSAL SWEEP scope animation is the only thing that moves between turns. It rides the idle timer as a rendering effect and carries no game state. The probe continues to rotate between commands, so the scope keeps a live readout under a turn-based loop. See §6.
3. Ping mathematics
Section titled “3. Ping mathematics”Implementation seam (GWP-758): the whole of this section is arithmetic over the generated world region and needs no primitive that does not exist. Bearings and bands are computed with the pinned host’s
atan2/sqrt; determinism comes from the mission seed throughlfsr-*, never from wall-clock entropy.
The budget. A contract grants PINGS = floor(log2(V)) + 1, where V is the number of candidate
cells in the searchable volume. This is the Depth Charge (1978) rule, ported directly: the budget is
enough to win by halving the uncertainty, and no more, so a tight budget stays fair. V is the balancing variable that sets difficulty, and the per-threat
volumes are [TBD] pending the economy pass.
The return. A ping at operator position P against contact C returns two values:
- Bearing: the compass direction from
PtoC, quantized to a fixed number of sectors. Sector count is a balancing variable[TBD 8-16]; coarser sectors make triangulation harder. - Range band: the distance
|P - C|quantized into coarse bands (near / mid / far / distant), never an exact number.
The pair describes an arc: the set of cells at that bearing within that band.
The fix. FIX intersects the arcs from two pings taken at different positions. The intersection
area shrinks as the baseline between the two ping positions grows, so a wide baseline resolves to a
point and a narrow one resolves to a smear. Movement between pings therefore drives the fix quality,
and it needs no special case: it falls out of the geometry.
Implementation seam: a ping taken from the same cell as the previous one is not blocked. It returns a near-identical arc and the intersection stays wide. The design lets the operator waste the budget, because the waste is legible and teaches the rule in one run.
Noise. Each ping adds a fixed noise increment; loud tools add more; the meter decays one step per
turn (§2). Guards test against the meter. Increment, decay rate, and the
guard threshold are the balancing variables [TBD].
4. Depth-gated passive hearing
Section titled “4. Depth-gated passive hearing”Seabattle’s depth-gated fog, ported as the cart’s information curve. Passive confidence is a function of depth alone, and it renders as dither density rather than as any colour, per the single-amber constraint.
| Depth band | Passive confidence | Renders as | The trade |
|---|---|---|---|
| Surface / shallow | poor: direction only, wide arcs | sparse stipple | safest water, worst ear |
| Mid | usable: direction plus a coarse band | medium dither | the working depth |
| Deep | good: direction plus a tight band | dense dither | pressure grinds the hull each turn |
| Abyssal | best: near-ping quality without a ping | solid block | the hull margin is measured in single turns |
An operator short on pings can trade depth for information and pay the difference in hull. Both are real currencies and the exchange rate between them is the cart’s
difficulty dial. The exact confidence values and per-band hull costs are balancing variables [TBD]
for the economy pass.
5. Generation: a lens on the World Engine
Section titled “5. Generation: a lens on the World Engine”Depthcharge does not own a generator. Per
world-engine.md and
ADR-0051, it touches the engine at exactly
two seams: a world archetype (the generation shape) and a verb-set overlay (the domain
verbs).
Its three declared seeds:
dive-topology: depth extent, the lateral field per level, terrain, and the hazard placement.contact-set: what is in the water. The objective, decoys, guards and their circuits.acoustic-profile: the depth-to-confidence curve of §4 for this body of water, so reception differs between dive sites.
Implementation seam (GWP-758): generation runs off the mission seed through
lfsr-seed/lfsr-next/lfsr-range, so a contract is reproducible fromcipher_seed. Guard circuits are generated as flat vectors and walked with an explicit index, never by recursion, because the Fe GC root stack caps at 256 and deep generation recursion overflows it.
The archetype is a volume with a hidden point and a patrolled approach, which is a shape the engine can serve to other carts. If the engine cannot express it, that is an archetype proposal and an escalation (§11). This cart carries no private generator.
6. Screens
Section titled “6. Screens”Redrawn for the canonical grid. Row 0 is the firmware status bar and Row 74 is the firmware action bar; the cart draws only Rows 1-73 and never writes the firmware rows. Wireframes below are schematic: they indicate region and content, and column counts are indicative.
Screen 1: SONAR SCOPE (the primary view)
Section titled “Screen 1: SONAR SCOPE (the primary view)”The scope is the ABYSSAL SWEEP composition: the polar transform, the eight-second clockwise
probe, exponential phosphor decay through the density ramp, the marching-squares range rings, the
cardinal axes, and the bearing-tick crown. It is specified in
abyssal-sweep-philosophy.md, canonized as the
glyph-cycle worked composition in animation.md, and captured on-glass
at runtime/tools/kn86rec/demos/abyssal.{lsp,rec,gif}. This spec adopts it rather than restating it.
What the cart layers onto the composition:
- Passive contacts render as arcs at the current depth’s dither density (§4).
- Ping gradients render as a bearing ray plus the range band’s ring segment.
- A FIX renders as a resolved point where two gradients intersect.
- Ghost contacts are already part of the composition’s vocabulary and carry the cart’s decoys.
Row 0 [firmware status bar]Rows 1-73 +---------------------------------------------+------------------+ | | PINGS #### | | ABYSSAL SWEEP scope | HULL ###### | | (polar, decaying, ringed) | NOISE ## | | | DEPTH -4 | | . o ◆ |------------------| | | CONTACTS | | | A brg 045 mid | | | B brg 120 far | +---------------------------------------------+------------------+Row 74 [ CAR dive · CDR rise · INFO ping · EQ classify · CONS fix · EVAL commit ]The right-hand rail carries the three run resources and the contact list, so nothing the operator needs to progress lives only in scrolled-off text (there is no scrollback).
Screen 2: DEPTH PROFILE
Section titled “Screen 2: DEPTH PROFILE”A vertical cross-section of the water column: the drone’s level, the depth-to-confidence curve of §4 drawn as dither density per band, hazard bands, and the objective’s depth once fixed. This is the screen that makes “descend to hear better” legible as a trade rather than a stat.
Screen 3: CONTACT CARD
Section titled “Screen 3: CONTACT CARD”One contact at full detail: its acoustic signature rendered as a small waveform strip, its bearing history across pings, its classification state, and what CLASSIFY compared it against. Reached by INFO on a selected contact.
Screen 4: DIVE BRIEFING (pre-launch)
Section titled “Screen 4: DIVE BRIEFING (pre-launch)”Family, board class, threat, the granted ping budget with the search volume it was derived from (stating the derivation teaches the rule), the tool loadout, and the modifiers in force (silent run, drift).
Screen 5: SETTLEMENT (post-dive)
Section titled “Screen 5: SETTLEMENT (post-dive)”Outcome, the objective’s disposition, pings unspent, hull remaining, noise peak, and the payout breakdown. Unspent pings pay, which is where restraint becomes an economic fact rather than advice.
7. The cart model
Section titled “7. The cart model”The cell model is the Fe cart model. Cells carry their fields in the sidecar alist and handlers are Lisp lambdas over the tagged-union contract.
| Cell type | Role | Keys it handles |
|---|---|---|
DIVE | the run root: holds the water, the resources, and the turn counter | CAR, CDR, INFO, EVAL |
LEVEL | one depth plane: terrain, hazards, and the occupants at that depth | numpad, INFO |
CONTACT | a heard or fixed thing: signature, bearing history, classification | EQ, QUOTE, INFO |
OBJECTIVE | the thing the family acts on | EVAL |
GUARD | a shadow or a rover, with its circuit and its noise threshold | (engine-stepped) |
TOOL | a carried consumable | APPLY |
Implementation seam (GWP-758): cart cells are Lisp lambdas registered against the cell contract; field access is
(@ cell field)/(!@ cell field v)over the sidecar alist. The cart draws through the constrainedcell-*tier only (cell-set,cell-print, the half-block canvas, and its cart-local soft-glyph slots). The privilegedrender/*system tier is not reachable from a cart context, by design.
8. Key mapping
Section titled “8. Key mapping”| Key | DIVE (scope) | CONTACT selected | Briefing |
|---|---|---|---|
| CAR | dive one level | (n/a) | expand a section |
| CDR | rise one level | next contact | next section |
| INFO | PING | open the contact card | (n/a) |
| EQ | (n/a) | CLASSIFY against the target signature | (n/a) |
| CONS | FIX from the two most recent gradients | fix on this contact | (n/a) |
| QUOTE | mark the current position | mark the contact | (n/a) |
| EVAL | COMMIT when at the objective | (n/a) | launch |
| APPLY | DEPLOY a tool | (n/a) | select loadout |
| LAMBDA | record an approach pattern | (n/a) | (n/a) |
| BACK | leave the scope for the depth profile | back to the scope | back to the board |
| NIL | abort the dive and surface | dismiss the card | decline the contract |
| ATOM | test whether the current cell is terminal | test contact class | (n/a) |
| numpad 8/2/4/6 | lateral MOVE | (n/a) | (n/a) |
Implementation seam (ADR-0031 / ADR-0044): the physical layout is the 34-key Ferris Sweep split. LAMBDA is the key ADR-0031 labels FN, with its semantics unchanged. EQ’s authoring insert binds KEC’s identity word
is, so CLASSIFY is(is contact-sig target-sig). A 14-branchon-keycondoverflows the Fe GC root stack on expansion, so key dispatch is a static(key . thunk)alist; acondchain of that width overflows on expansion.
9. Mission templates
Section titled “9. Mission templates”Four generation-parameter blocks, one per family. Payout formulas and threat ranges name their balancing variables; magnitudes live in the economy simulator, never here.
SALVAGE (class EXTRACTION, verb OBTAIN) threat_range: 1-3 volume: shallow-to-mid; static objective ping_budget: floor(log2 V) + 1 guards: 0-1 rover, wide circuit modifiers: none by default reward: credits (salvage converted at the dock) + unspent-ping bonusSABOTAGE (class SABOTAGE, verb DESTROY) threat_range: 2-4 volume: mid; fixed structure objective ping_budget: floor(log2 V) + 1 guards: 1 shadow on the structure, 0-1 rover modifiers: loud_commit (the break spikes noise hard) reward: credits + reputation; bonus for surfacing with the shadow unalertedESPIONAGE (class SURVEILLANCE, verb OBSERVE) threat_range: 2-5 volume: mid-to-deep; objective may drift ping_budget: floor(log2 V) + 1 ; present but tripwired guards: 1 shadow, 1 rover modifiers: silent_run (default) reward: reputation + DOSSIER facts; credits are secondaryAETHERNET ACCESS (class PENETRATION, verb PENETRATE) threat_range: 3-5 volume: deep; the port is fixed and defended ping_budget: floor(log2 V) + 1 guards: 1 shadow at the port modifiers: handoff (COMMIT resolves the objective and the mission continues elsewhere) reward: the handoff itself; settlement resolves in the receiving phase10. Audio, re-cut for turns
Section titled “10. Audio, re-cut for turns”The retired audio state machine ran a continuous threat-proximity tone whose frequency tracked distance in real time. A turn-based cart has no continuous threat, so audio becomes per-turn feedback and the PSG carries four events rather than three running voices:
| Event | Sound | What it tells the operator |
|---|---|---|
| Ping outgoing | a short high transient | the budget was spent |
| Ping return | a tone whose delay encodes the range band | the band, by ear, before the scope draws it |
| Passive texture | a low bed whose density tracks depth confidence | how good the current ear is |
| Noise spike | a rising figure on the noise channel | the noise meter rose; guards test against it |
Reading the range band by ear from the return delay is the cart’s audio skill, and it is the turn-based descendant of the retired design’s intent that an expert could navigate by sound.
Implementation seam: PSG only. Carts have no runtime PCM path today, SFX and music share the three channels, and SFX preempts music on its channel.
11. Failure, recovery, and the economy
Section titled “11. Failure, recovery, and the economy”Failure states. Following the roguelike First Law, no single event ends a run under reasonable play. Hull absorbs damage; a hazard changes the passive texture and the scope before it applies its cost; and RISE is always available as the escape verb.
- Dry search (budget spent, objective unfound): the operator surfaces empty. Partial phase failure: a small fee, the chain preserved, and the water’s shape learned.
- Detected (noise crossed the guard threshold under a silent modifier): the bonus forfeits, or at the strictest band the contract fails.
- Drone lost (hull to zero): complete phase failure. Reaching it requires ignoring a hull readout and an audio bed that both degrade for several turns first.
The economy. Classified per economy-model.md:
| Element | Class | Role |
|---|---|---|
| Pings | resource (per-run) | the information currency; the run’s scarce input |
| Hull | resource (per-run) | the survival margin; the second thing depth is paid for with |
| Noise | meter (per-run) | not spent by the operator; accumulates against them |
| Salvage | resource → converter at the dock | lifted cargo converts to credits at settlement |
| Credits | currency | the pooled wallet, written once at mission resolution |
| Reputation | standing | success and clean runs; espionage pays here rather than in credits |
| DOSSIER facts | resource | observation runs deposit typed keys that de-risk later contracts |
The faucet is the contract payout and the salvage conversion; the paired sinks are tool loadouts,
hull repair between dives, and the dock’s cut. Unspent pings pay a bonus at settlement, which is
what gives restraint an economic return. Balancing magnitudes belong in the economy simulator and are
[TBD] here.
12. Open questions and escalations
Section titled “12. Open questions and escalations”- The AetherNet handoff (escalation). What COMMIT hands to the receiving cart is undefined. The
mission-context capability calls that would carry it (
load-capability,complete-mission) are ratified in ADR-0005 but are not yet implemented inruntime/src, so this tier cites them as the contract and no slice may depend on them. Whether the handoff is an in-session cart swap or a phase boundary is a decision for the campaign pass. - Archetype fit. Whether the World Engine can express “a volume with a hidden point and a patrolled approach” as an archetype, or whether that is an archetype proposal, is open pending the engine’s archetype list.
- Sector count and band count (§3) are balancing variables that change how hard triangulation feels. They need the economy pass and a playtest; this spec does not pin them.
- Linked play (the retired asymmetric hunter mode) is not carried into this rewrite. It was designed against the real-time loop and needs a fresh treatment against turns.
- A second capability declaration exists and disagrees with §1 (flagged for decision).
launch-titles-capability.md(deleted in the 2026-07 corpus prune; recover from git history) carried its own DEPTHCHARGEregister-capabilitiesblock. The:bitagrees (0x08); the rest does not. That copy declares:affinities '(:maritime :spatial :acoustic)against this spec’s'(:maritime :physical), a different:provideslist,:seeds '(seafloor-topology contact-pattern depth-profile pressure-budget), and the retired SONAR SWEEP / SALVAGE / EVASION / RELAY ACCESS template set. The divergence predates this pass. The affinity set in particular is product content rather than a mechanical index, so it is surfaced here as a decision rather than resolved in this rewrite.
Appendix A — Mapping from the retired v1.2 Tier 2 and Tier 3
Section titled “Appendix A — Mapping from the retired v1.2 Tier 2 and Tier 3”| Retired section | Disposition |
|---|---|
| §1 THE OODA LOOP (real-time, 10-30 s) | Replaced by Tier 2 §1, the turn contract |
| §2 THE DIVE ENVIRONMENT | Replaced by Tier 2 §2.1 and Tier 3 §5 (generation as a World Engine lens) |
| §3 SONAR & DETECTION | Replaced by Tier 2 §2.2 and Tier 3 §3 (the gradient and the budget) |
| §4 EQUIPMENT & RESOURCE MANAGEMENT | Replaced by Tier 3 §11; the oxygen timer is retired outright |
| §5 / §6 SOUND DESIGN and the audio state machine | Replaced by Tier 3 §10, re-cut for turns |
| §7 EMERGENT COLLISIONS | Replaced by Tier 2 §5, re-derived from the new systems |
| §7 SESSION SHAPE (the duplicate §7) | Replaced by Tier 2 §6 |
| §8 ONBOARDING | Replaced by Tier 2 §7 |
| §9 PROFICIENCY & HIDDEN METRICS | Retired: the hidden acoustic-signature stat is superseded by the visible noise meter |
| §10 LINKED PLAY | Not carried; see §12 |
| §11 DETAILED SCREEN LAYOUTS (80×25 canvas) | Replaced by Tier 3 §6 on the canonical grid |
| §12 CELL ARCHITECTURE (C structs) | Replaced by Tier 3 §7 (the Fe cart model) |
| §13 KEY MAPPING | Replaced by Tier 3 §8 |
| §14 / §14.5 MISSION TEMPLATES | Replaced by Tier 3 §9 (four families) |
| §15 HOT SWAP INTEGRATION (fixed 256-byte layout) | Retired: the phase chain is runtime-owned and variable-length; the handoff question moves to §12 |
| §16 CROSS-MODULE INTEGRATION | Folded into §1 (the verb declaration) and §12 (the handoff) |
| §17 CIPHER VOICE INTEGRATION | Superseded by the preserved CIPHER-LINE Contributions section below |
Glossary
Section titled “Glossary”- Arc: the region a single ping describes: one bearing sector inside one range band.
- Band: a coarse range quantum returned by a ping. Never an exact distance.
- COMMIT: the family act at the objective (lift, break, observe, jack in), on EVAL.
- FIX: the intersection of two ping arcs taken from different positions. The COMPOSITE verb,
CONS(PING, PING). - Gradient: a ping’s return: a bearing plus a range band.
- Hull: the run’s survival margin, spent against hazards, pressure, and guards.
- Noise: the accumulating meter guards test against. Raised by pings and loud tools, decays one step per turn.
- Ping budget: the active-sonar allowance,
floor(log2 V) + 1for a searchable volumeV. - Rover: a guard patrolling a wide circuit, reacting to noise.
- Shadow: a guard that stays near what it protects.
- Silent run: a mission modifier that turns the ping budget into a tripwire.
- Turn: the interval between two operator commands, resolved in the fixed order of §2.
CIPHER-LINE Contributions
Section titled “CIPHER-LINE Contributions”Depthcharge declares the following cipher-grammar block, merged into active tables at cart-load. Tone target: tactical drone pilot, increasingly mystical about the depths. Clipped on ascent, colder at depth.
Vocabulary Pools
Section titled “Vocabulary Pools”(:subject "contact" "wreck" "sonar" "hull" "drone" "whale" "predator" "current" "thermal" "signal" "return" "cargo" "pressure")(:object "compartment" "cargo" "cable" "rig" "relic" "shell" "reef" "vent" "rib")(:location "depth" "deep" "shallow" "thermocline" "surface" "sector" "vent" "column")(:verb-present "pings" "hums" "holds" "drifts" "creaks" "descends" "ascends" "groans" "listens")(:verb-past-participle "extracted" "salvaged" "lost" "flooded" "pressed" "torn" "reached")(:memory-keyword "wreck" "whale" "thermocline" "vent" "predator" "surface" "hull" "depth")(:affect-word "quiet" "cold" "deep" "thin" "heavy" "bright" "wrong" "watched")Production Fragments
Section titled “Production Fragments”(:mode-observe (3 (:subject) ". " (:heading?)) (2 (:location) ". " (:affect-word) ".") (2 (:depthcharge/depth-marker) ". " (:subject) ".") (1 "pressure up."))
(:mode-annotate (3 (:affect-word) " at " (:location) ".") (2 "that one. " (:affect-word) ".") (1 "the water holds.") (1 "too deep."))
(:mode-reflect (3 "same pressure. " (:memory-fragment)) (2 "this current. " (:memory-fragment)) (1 (:memory-fragment) ". still there."))
(:mode-drift (2 "the wreck at three-fifty.") (2 "whale. sector nine.") (1 "salvage before the vent.") (1 "something that didn't ping back."))
(:depthcharge/depth-marker (3 "shallow.") (3 "mid.") (2 "deep.") (1 "abyss."))
:event-types ((:type :sonar-contact :affect (:tense)) (:type :sonar-contact-organic :affect (:routine)) (:type :hull-stress :affect (:tense)) (:type :hull-breach :affect (:tense :significant)) (:type :salvage-acquired :affect (:significant)) (:type :depth-change :affect (:routine)) (:type :predator-warning :affect (:tense :anomalous)))Mode-Weight Biases
Section titled “Mode-Weight Biases”| Beat | observe | annotate | reflect | drift | silent |
|---|---|---|---|---|---|
:active-hack (= active dive) | — | +0.05 | — | — | +0.15 |
:high-tense (predator near) | — | — | — | — | +0.20 |
:phase-transition (depth change) | — | — | +0.10 | +0.05 | — |
:cart-swap-lull | — | — | — | +0.15 | — |
:debrief | — | +0.10 | +0.05 | — | — |
Rationale. Silence is doctrine. Active dive leans on silence so the PSG’s passive sonar can fill the space. Predator events maximize silence: the operator is holding breath. Depth changes encourage reflection (“we were here before”). Cart-swap-lull drifts about whales and wrecks because the ocean is a memory space.
Style Deltas
Section titled “Style Deltas”((:active-hack (:terseness +40 :certainty -24 :temporal-blur +16)) (:high-tense (:terseness +56 :certainty -48)) (:cart-swap-lull (:temporal-blur +48)) (:debrief (:temporal-blur +16)))Depth is uncertain. The voice hedges. Under the thermocline, past and present mingle.
Structurally Important Moments Preserved on CIPHER-LINE
Section titled “Structurally Important Moments Preserved on CIPHER-LINE”| Beat | Intent | CIPHER-LINE fragment(s) |
|---|---|---|
| Sonar classification uncertainty | ”Sonar classification uncertainty — network encryption detected.” | bearing. uncertain. then something metal. |
| Active sonar engaged | ”Sonar scope active. No threats.” | (silent) for 1–2 ticks, then quiet. nothing near. |
| Rival drone detected | ”Rival drone detected in sector. Passive only.” | contact. not ours. |
| Hull breach warning | ”Hull breach. Initiating emergency ascent.” | breached. climbing. (tense + significant) |
| Cargo extraction complete | ”Cargo manifest: 3 items, 180 credits.” | three. up. (observe after silent beats) |
| Capability-gap prompt (encrypted relay) | “Encryption: unknown cipher. Decryption capability not loaded.” | locked. not us. |
| Surface reached | ”Surface reached. Mission complete.” | surface. then dry. |
| Predator strike | (tense escalation) | (silent) while PSG hunter-theme rises; operator feels it without words |
The silence-heavy bias is the whole point: Depthcharge’s PSG design already fills the acoustic space with meaningful sound, and Cipher staying quiet under the thermocline makes the occasional spoken fragment land like a real voice.
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). Depthcharge’s slow OODA tempo favors lightweight scripting: the operator authors depth-coordination helpers and sonar classification shortcuts, but the bulk of play is direct real-time primitive input.
Scripted Missions?
Section titled “Scripted Missions?”Maybe: depth-coordination scripting. The cart provides a thin scripting surface for depth-and-bearing coordination, but it is secondary to the cart’s real gameplay loop (listening + reacting). Rep-10+ operators unlock Salvage Routing contracts that can be streamlined by pre-authored descent sequences and cargo-manifest helpers, but even advanced players tend to operate the drone in real-time because the live sonar picture is the signal. Scripted missions remain optional on the critical path (ADR-0002); Depthcharge is designed to be fully playable without touching nEmacs.
Typical scripted-mission shapes:
(descend-to depth)— sequences a multi-step descent with hull-pressure checks.(classify-contact bearing :passive)— sonar helper.(on-hull-stress-rise (ascend 10))— defensive reactive.(cargo-manifest)— introspection helper.
Cart Grammar Fragments
Section titled “Cart Grammar Fragments”Contributed via (emacs-extend-grammar ...) at cart-load. Depthcharge’s grammar is deliberately small: the operator’s mental model is already saturated with the live sonar picture:
(emacs-extend-grammar ;; Drone state (depth) (bearing) (heading) (hull-integrity) (oxygen-remaining) (cargo) ;; Sonar (passive-scan) ; current passive contacts (active-ping) ; costs detection risk (classify-contact (bearing &key :mode)) (sonar-history (&key :n)) ;; Movement (descend-to (depth)) (ascend-to (depth)) (set-heading (bearing)) (ahead-slow) (ahead-full) (silent-running) ; mode toggle ;; Event binders (on-hull-stress-rise (&body handler)) (on-contact-detected (&body handler)) (on-predator-strike (&body handler)) ;; Salvage (cargo-manifest) (recover (contact-id)) (surface) ;; Diagnostic (thermocline-depth))Vocabulary Contribution
Section titled “Vocabulary Contribution”Via (emacs-extend-vocabulary ...). Submersible / sonar / salvage terms:
(emacs-extend-vocabulary "depth" "bearing" "heading" "pitch" "roll" "hull" "integrity" "pressure" "oxygen" "ballast" "passive" "active" "ping" "sonar" "scope" "contact" "bearing" "signature" "classify" "silent" "noise" "cavitation" "thermocline" "descend" "ascend" "surface" "trim" "cargo" "salvage" "wreck" "manifest" "recover" "predator" "hunter" "drone" "threat" "metal" "wreckage" "relay" "buoy" "anchor")prompt-text FFI Usage
Section titled “prompt-text FFI Usage”No. Depthcharge is primitive-and-numpad. Bearing and depth are entered via numpad (three-digit bearing in degrees, two-digit depth in hundreds-of-meters). Contact classification is a menu. The cart declares nothing via prompt-text.
Double-Tap and Long-Press Bindings
Section titled “Double-Tap and Long-Press Bindings”Depthcharge opts into ADR-0016 §9 on INFO and EVAL to surface richer sonar views:
| Key | :tap | :double-tap | :long-press |
|---|---|---|---|
INFO | scope-summary — current passive scan | scope-history — last 30s of sonar | acoustic-signature-library — match current against known signatures |
EVAL | commit-action — active ping / dive / fire | — | commit-slow — same action, silenced variant (higher cost, lower detection) |
QUOTE | mark-contact | — | mark-and-classify — pins with best-guess classification |
Row 74 renders: INFO:SCOPE INFO²:HIST INFO…:LIB EVAL:COMMIT EVAL…:SILENT QUOTE:MARK.
Context-Polymorphic Key Semantics (Cart Gameplay)
Section titled “Context-Polymorphic Key Semantics (Cart Gameplay)”Depthcharge has two primary cursor contexts: conn (piloting the drone) and sonar (studying the scope):
| Key | Conn | Sonar |
|---|---|---|
INFO | show-drone-status | show-contact-metadata |
CAR | descend-one-layer (100m) | drill-into-contact |
CDR | ascend-one-layer | next-contact |
CONS | link-to-cargo-manifest | compare-signatures |
EVAL | commit-helm-action | ping / classify |
QUOTE | mark-waypoint | mark-contact |
BACK | exit-to-surface-map | return-to-conn |
| Numpad | bearing / depth entry | contact index select |
When the operator opens nEmacs to script a descent sequence, dispatch yields to :nemacs-nav per ADR-0016 §3 (standard editor dispatch). Depthcharge’s slow tempo means the editor hand-off rarely interrupts a high-stakes moment.
Batch 10 mechanics to fold in
Section titled “Batch 10 mechanics to fold in”Mechanics from the Batch 10 vintage set that fit this cart’s sonar motif and fill gaps in it. Candidates for a future build or spec pass, aligned to the economy model (credits spend; reputation gates offers; a mission resolves as a small mystery whose facts lock into DOSSIER).
- Power budget across systems (from Trek-80): a single reserve split across drive, sensors, weapons, and hull, with an over-allocation fail state, folding §4’s separate hull-integrity, stealth-credit, and oxygen tracks into one shared allocation the operator apportions each dive.
- Coarse-plus-detail dual scanner (from Trek-80): a numeric long-range summary of neighboring cells sits above the detailed local SONAR SCOPE (§2, §3), so the operator reads a compressed wide view and the fine sweep together.
Migration notes
Section titled “Migration notes”Tier 2 / Tier 3 re-derivation, 2026-07-29 (GWP-758). This pass rebuilds the two tiers the
2026-07-25 re-anchor marked superseded, against the Tier 1 treatment. Tier 1 is unchanged: it is
the authority this rewrite was derived from, and its gate stays draft as its author set it.
- Tempo. The retired Tier 2 was a real-time OODA loop (5 s observe, 5-10 s orient, 5-10 s decide, with the water advancing while the operator thought) under a wall-clock oxygen limit of 20-35 minutes. Both are retired. The cart is turn-based: one command is one turn is one world tick, with a fixed seven-phase resolution order (Tier 3 §2) riding the move-driven World Clock. Pressure moved from the clock to scarcity: pings, hull, and noise.
- The ping-fidelity decision, resolved. Tier 1 named this as the one decision it forced. Resolved
in favor of the gradient (bearing plus a coarse range band), the treatment’s own
recommendation. The retired §3 returned range to every contact at once; that full reveal is gone,
and with it the reason the budget felt generous.
FIXis the new COMPOSITE verb, literallyCONS(PING, PING), intersecting two gradients taken from different positions. - The silent-run question, resolved. Espionage’s one-ping-fails rule is a mission modifier rather than a separate mode, so any family can carry it and a silent salvage costs nothing to author.
- Mission families. Salvage, sabotage, espionage, and AetherNet access replace the retired
SONAR SWEEP / SALVAGE / EVASION / RELAY ACCESS / ENCRYPTED CACHE template set. Each resolves onto
the existing closed Tier-3 verb set (OBTAIN / DESTROY / OBSERVE / PENETRATE); DESTROY is added
to the cart’s
mission-contributionsto carry sabotage. No new mission verb is proposed. - Grid and canvas drift corrected. The retired §11 screens were drawn on the 80×25 canvas the previous migration pass flagged and left standing. Tier 3 §6 re-cuts them on the canonical grid with the Row 0 / Rows 1-73 / Row 74 ownership contract, and adopts the ABYSSAL SWEEP composition as the SONAR SCOPE by reference rather than restating it.
- C surface removed. The retired §12 cell architecture (C structs,
CELL_DEFINE,CAPABILITY_DECLARE) predates ADR-0001. Tier 3 §7 is the Fe cart model: Lisp lambdas over the tagged-union cell contract, drawing through the constrainedcell-*tier only. - Phase-chain layout removed. The retired §15 fixed 256-byte Hot Swap byte layout conflicted with the shipped Universal Deck State (the phase chain is runtime-owned and variable-length). The AetherNet handoff that replaces it is carried as an open escalation in Tier 3 §12. No replacement format is invented here.
- Hidden stats replaced by a visible meter. The retired §9 hidden
acoustic_signature(which also conflicted with the shared-economy rule for deck-state fields) becomes the noise meter, rendered on the scope rail, so the value guards test against is on screen. - Linked play not carried. The retired §10 asymmetric hunter mode was designed against the real-time loop. It is out of this rewrite and owes a fresh treatment against turns (§12).
- Preserved unchanged: the CIPHER-LINE Contributions, nEmacs Contributions, and Batch 10 sections below, and the Inspirations table. CIPHER remains OLED-exclusive; the 2026-04-24 revision note in the header still governs every full-sentence Cipher line as beat intent.
- Gates. T2 and T3 move from
supersededtoapprovedon merge of this pass (the PR review is the acceptance). T1 staysdraft. - Impl is still
partial. The shippeddepthcharge.lspimplements the retired real-time subset (depth-list navigation, the lateral grid, a sonar loop, six cell types). It does not implement the turn contract, the gradient ping, the budget, the noise meter, or the four families. Bringing the cart to this spec is a separate engineering story, and the vertical slice that would prove the loop (one dive, PING, FIX, COMMIT, with a test and an on-glass recording) is not part of this docs pass.
Inspirations
Section titled “Inspirations”Assigned by Josh in the kn86-inspo workbench. Full map: cart-inspiration-map.md.
| Source | Category |
|---|---|
| Depth Charge (1978) | sub hunt |
| Seabattle (1979) | sub hunt |
| cava | visual effect |