Skip to content

CORE / COMPOSITE / VOCAB — the cart action-verb partition


1. What this partitions (and what it doesn’t)

Section titled “1. What this partitions (and what it doesn’t)”

This partitions Tier-2 verb-tools — the cart-contributed actions an operator invokes during a capability (the right-hand context palette, DeckRunner §10). It does not touch:

  • Tier 1 — the Lisp primitive keys (CAR/CDR/CONS/EVAL/…), fixed firmware.
  • Tier 3 — mission types (PENETRATION / EXTRACTION / …); those are the mission-type catalog.

Every Tier-2 verb a cart contributes falls into exactly one of three buckets:

BucketWhat it isOn the deck
COREan atomic verb-tool — one irreducible change to deck/run state (≈ one NoshAPI call)declared in the cart grammar; the archetypes you select + EVAL
COMPOSITEa verb-tool that orchestrates ≥2 cores via CONSbuilt by pressing CONS and pairing; the matrix tools
VOCAB-onlyno Fe surface, no state change — CIPHER lexicon / T9 ranking / action-bar labelswords the operator and the voice can use; never a callable form

2. The cleavage criterion — state-mutation footprint

Section titled “2. The cleavage criterion — state-mutation footprint”

The bucket is decided by what the verb does to the world, not by how it’s implemented or how it’s discovered. The operational test:

Does it make one irreducible change to deck/run state?CORE Does it orchestrate two or more cores?COMPOSITE Does it change nothing but the voice/UI?VOCAB-only

Why this axis (and not FFI-dependency or discoverability): it is semantic and universal. It reads the same for every cart, and it makes cost and discoverability per-cart properties, not the definition (§6) — so ICE BREAKER’s consumable, surprise-combo model is one instance of the pattern, and a cart with no scarcity (NeonGrid) partitions exactly the same way. FFI-dependency corroborates (a CORE usually binds one NoshAPI primitive) but does not define; discoverability and cost are downstream.


An atomic Fe verb-tool that performs one irreducible deck/run-state mutation — reveal a node, move position, defeat a lock, plant a payload, erase a trace. Declared in the cart’s grammar; available when its palette is live. A CORE typically maps to a single NoshAPI call. CORES are the archetypes — the alphabet the rest is spelled in.

A verb-tool that orchestrates two or more cores. Composition is binary CONS — you pair exactly two operands — and composites nest: a composite may itself be an operand of a further CONS, giving N-ary depth without a new operator (Lisp-native). Deeper combos cost more, because each CONS consumes its operands under the cart’s cost model (§6). Composites are declared in the cart grammar, with an optional :discoverable flag that hides a combo until the operator finds it (the ICE BREAKER surprise-combo pattern, §7).

A term with no Fe form and no state change — it flavors the CIPHER voice, seeds T9 token-prediction, or labels the action bar. It gives the operator and the voice a lexicon without inflating the Fe grammar. VOCAB-only is a lexicon layer, not a slice of the action arc — see the §8 finding.


  • Binary CONS. Each combination pairs exactly two operands. This preserves ICE BREAKER’s “pick two” tension and keeps the matrix legible.
  • Composites nest. A composite is itself a valid operand for a further CONS. So LOOP = CONS(GHOST, timing-window) where GHOST = CONS(MASK, JUMP) — depth-2 nesting, no new syntax. Effective N-ary combos emerge from nesting.
  • Cost escalates with depth. Each CONS consumes its operands per the cart’s cost model; a nested composite consumes a composite (which already cost its constituents) plus another operand. Deep combos are powerful and expensive.
  • Cross-cart composites are out of scope (v0.x). A composite combines cores within one cart’s set. Cross-cart combos (an ICE BREAKER core × a Black Ledger core) are deferred — Hot Swap and the opaque load-capability boundary make them a separate problem.

5. Declaration, discoverability & the script view

Section titled “5. Declaration, discoverability & the script view”
  • Declared by default. Composites are declared in the cart grammar so the engine and the legal-form filter know them.
  • :discoverable opt-in. A cart may flag a composite hidden-until-found; it surfaces only after the operator stumbles on the CONS pairing (ICE BREAKER’s REWRITE / SHADOW / LAUNDER). Default off — carts without surprise design don’t pay for it.
  • The script view. In nEmacs / the Mission Runner, a composite is a named token the operator can invoke; under the hood it expands to its CONS expression. Per the legal-form filter (ADR-0009), a composite inherits its constituents’ legality — it needs no separate filter entry, and a :discoverable composite stays out of token-prediction until found.
  • Privilege. Carts contribute all of this through the DeckRunner interface (DeckRunner §7) — never binding into the player’s hands directly.

The partition is universal; the cost of using a verb is the cart’s choice. ICE BREAKER consumes both operands of a CONS (scarcity → tempo tension). Black Ledger runs a move-economy. NeonGrid has no resource scarcity. None of that changes what is CORE vs COMPOSITE — it’s a property layered on top, consistent with the §2 cleavage. Per-cart cost numbers/feel are deferred to gameplay tuning.


7. Relationship to the ICE BREAKER CONS matrix

Section titled “7. Relationship to the ICE BREAKER CONS matrix”

ICE BREAKER is the precedent, now generalized — it is instance #1 of this pattern:

ICE BREAKERThis partition
the 6 archetypes (CRACK / MIRROR / SPIKE / CLOAK / SIPHON / GHOST)CORES
the 6×6 matrix tools (QUICKCOPY / PHANTOM / GRIND)COMPOSITES (declared)
the surprise combos (REWRITE / SHADOW / LAUNDER)COMPOSITES with :discoverable
”using a combo consumes both archetypes”ICE BREAKER’s per-cart cost model (§6)

Nothing about ICE BREAKER changes; the doc just names the general shape its matrix was a specific case of.


8. The 30-verb arc, partitioned (the test set)

Section titled “8. The 30-verb arc, partitioned (the test set)”

Applying the §2 test to the netrun runner arc. Finding: the action arc is almost entirely CORE + COMPOSITE; none of the 30 is VOCAB-only — capturing, erasing, and revealing are all mutations, so they are CORES. This refines the earlier chat proposal (which had SNIFF / PURGE / TRACE-back as vocab-only): under the state-footprint test they are CORES. VOCAB-only is reserved for the lexicon (“ghosted,” “burned,” “flatlined” as voice words), not for these actions.

#VerbBucketComposed of (if composite)Home cartNote
1SCANCOREICEBreveal surface state
2PROBECOREICEBactive reveal + attention
3MAPCOREICEBrecords topology (borderline — could be repeated-SCAN)
4SNIFFCOREICEBdeposits captured traffic (was “vocab” in chat)
5JACKCOREframeworkopen the link / enter the grid
6MASKCOREICEBscrub signature
7SPOOFCOREICEBpresent forged creds → gate state
8BURNCOMPOSITEMASK + one-time tokenICEBauthenticate clean by spending a token
9JUMPCOREframeworkmove to adjacent node
10PIVOTCOMPOSITEJUMP + trust-edgeICEBlateral move via a trusted relationship
11GHOSTCOMPOSITEMASK + JUMPICEBtraverse below the logging threshold
12LOOPCOMPOSITEGHOST + timing-windowICEBnested composite — the worked nesting example
13CRACKCOREICEBdefeat an encryption layer
14SLICECOREICEBcut a path through ICE (folds into ICEB break-ice)
15EXPLOITCOREICEBfire a known vulnerability
16INJECTCOREICEBdrop a payload into a process
17FETCHCOREICEBpull a specific asset
18PARSECOREICEB/BLinterpret a pulled asset → buffer state
19FORGECOREBLwrite false records
20ECHOCOMPOSITESNIFF/MIRROR + replayICEBreplay captured creds/signals
21SHIELDCOREICEBraise countermeasures
22DECOYCOREICEBspawn a false target
23TRACE-backCOREBL/DCreveal a hostile process’s origin (no satisfier yet — gap)
24FLIPCOMPOSITEcapture + redeployICEBturn an attacker’s tool against them
25STASHCOREICEBcache data in a dead-drop node
26DUMPCOREICEBcommit the haul to safe storage
27PURGECOREICEBerase fingerprints (was “vocab” in chat)
28PATCHCOREICEBclose the holes you came in through
29EJECTCOREICEBclean, sequenced unjack
30FLATLINECOREICEBemergency dump + burn the deck

Tally: 24 CORE · 6 COMPOSITE · 0 VOCAB-only (from this arc). The 6 composites — BURN, PIVOT, GHOST, LOOP, ECHO, FLIP — each genuinely orchestrate ≥2 cores; LOOP demonstrates nesting. Grammar surface stays tight: a cart ships ~20 cores and a handful of declared composites, while the operator’s mental vocabulary covers the whole arc.


9. ADRs to spawn / update (flagged, not written)

Section titled “9. ADRs to spawn / update (flagged, not written)”
  • Cart-grammar ADR — the Tier-2 verb-tool declaration form (how a cart declares its CORES + COMPOSITES + :discoverable flags), and the CONS-nesting rule. Likely extends ADR-0006 (cart grammar) and the mission-contributions form (ADR-0028).
  • NoshAPI note — CORES bind NoshAPI primitives; confirm the surface is sufficient or enumerate additions (ADR-0005).
  • Legal-form filter — confirm composites inherit constituents’ legality with no new filter entries (ADR-0009).

These become downstream tasks; this design doc does not write them.


  • Borderline verbs — MAP (record vs. repeated-SCAN), SLICE (folds into break-ice), BURN/GHOST (composite vs. atomic). A cart may fold a borderline CORE into a sibling core or promote it to a composite — the criterion gives the default; per-cart authoring makes the final call.
  • Per-cart cost numbers — consumable vs. move-economy vs. free, and the depth-cost curve.
  • Cross-cart composites — deferred (v0.x out of scope, §4).
  • VOCAB-only registry — whether the lexicon layer needs its own declaration surface (it overlaps the CIPHER vocabulary + T9 pools already contributed by carts).
  • TRACE-back has no cart satisfier yet — a real coverage gap (candidate: Black Ledger or Depthcharge signature analysis).