CORE / COMPOSITE / VOCAB — the cart action-verb partition
../../runtime/deckrunner-engine-architecture.md§10 — the three verb tiers (this doc partitions Tier 2) and §7 (carts contribute via the DeckRunner interface, never to the player’s hands)../design-bibles/verb-taxonomy-map.md— which Tier-2 spine each cart contributes (orthogonal to this doc’s which bucket each verb is)../design-bibles/mission-type-catalog.md— the Tier-3 type layer (don’t confuse a mission type with an action verb)../modules/ice-breaker.md§“THE TOOLKIT” — the CONS matrix this generalizes../../gameplay-framework.md— fills gap B of its ledger- ADRs to consult: ADR-0005 (NoshAPI — what a CORE binds), ADR-0006 (cart grammar / declarations), ADR-0009 (legal-form filter), ADR-0028 (
mission-contributions)
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:
| Bucket | What it is | On the deck |
|---|---|---|
| CORE | an atomic verb-tool — one irreducible change to deck/run state (≈ one NoshAPI call) | declared in the cart grammar; the archetypes you select + EVAL |
| COMPOSITE | a verb-tool that orchestrates ≥2 cores via CONS | built by pressing CONS and pairing; the matrix tools |
| VOCAB-only | no Fe surface, no state change — CIPHER lexicon / T9 ranking / action-bar labels | words 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.
3. The three buckets in detail
Section titled “3. The three buckets in detail”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.
COMPOSITE
Section titled “COMPOSITE”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).
VOCAB-only
Section titled “VOCAB-only”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.
4. Composition mechanics
Section titled “4. Composition mechanics”- 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. SoLOOP = CONS(GHOST, timing-window)whereGHOST = CONS(MASK, JUMP)— depth-2 nesting, no new syntax. Effective N-ary combos emerge from nesting. - Cost escalates with depth. Each
CONSconsumes 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-capabilityboundary 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.
:discoverableopt-in. A cart may flag a composite hidden-until-found; it surfaces only after the operator stumbles on theCONSpairing (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
CONSexpression. Per the legal-form filter (ADR-0009), a composite inherits its constituents’ legality — it needs no separate filter entry, and a:discoverablecomposite 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.
6. Cost model — per-cart
Section titled “6. Cost model — per-cart”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 BREAKER | This 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.
| # | Verb | Bucket | Composed of (if composite) | Home cart | Note |
|---|---|---|---|---|---|
| 1 | SCAN | CORE | — | ICEB | reveal surface state |
| 2 | PROBE | CORE | — | ICEB | active reveal + attention |
| 3 | MAP | CORE | — | ICEB | records topology (borderline — could be repeated-SCAN) |
| 4 | SNIFF | CORE | — | ICEB | deposits captured traffic (was “vocab” in chat) |
| 5 | JACK | CORE | — | framework | open the link / enter the grid |
| 6 | MASK | CORE | — | ICEB | scrub signature |
| 7 | SPOOF | CORE | — | ICEB | present forged creds → gate state |
| 8 | BURN | COMPOSITE | MASK + one-time token | ICEB | authenticate clean by spending a token |
| 9 | JUMP | CORE | — | framework | move to adjacent node |
| 10 | PIVOT | COMPOSITE | JUMP + trust-edge | ICEB | lateral move via a trusted relationship |
| 11 | GHOST | COMPOSITE | MASK + JUMP | ICEB | traverse below the logging threshold |
| 12 | LOOP | COMPOSITE | GHOST + timing-window | ICEB | nested composite — the worked nesting example |
| 13 | CRACK | CORE | — | ICEB | defeat an encryption layer |
| 14 | SLICE | CORE | — | ICEB | cut a path through ICE (folds into ICEB break-ice) |
| 15 | EXPLOIT | CORE | — | ICEB | fire a known vulnerability |
| 16 | INJECT | CORE | — | ICEB | drop a payload into a process |
| 17 | FETCH | CORE | — | ICEB | pull a specific asset |
| 18 | PARSE | CORE | — | ICEB/BL | interpret a pulled asset → buffer state |
| 19 | FORGE | CORE | — | BL | write false records |
| 20 | ECHO | COMPOSITE | SNIFF/MIRROR + replay | ICEB | replay captured creds/signals |
| 21 | SHIELD | CORE | — | ICEB | raise countermeasures |
| 22 | DECOY | CORE | — | ICEB | spawn a false target |
| 23 | TRACE-back | CORE | — | BL/DC | reveal a hostile process’s origin (no satisfier yet — gap) |
| 24 | FLIP | COMPOSITE | capture + redeploy | ICEB | turn an attacker’s tool against them |
| 25 | STASH | CORE | — | ICEB | cache data in a dead-drop node |
| 26 | DUMP | CORE | — | ICEB | commit the haul to safe storage |
| 27 | PURGE | CORE | — | ICEB | erase fingerprints (was “vocab” in chat) |
| 28 | PATCH | CORE | — | ICEB | close the holes you came in through |
| 29 | EJECT | CORE | — | ICEB | clean, sequenced unjack |
| 30 | FLATLINE | CORE | — | ICEB | emergency 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 +
:discoverableflags), and theCONS-nesting rule. Likely extends ADR-0006 (cart grammar) and themission-contributionsform (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.
10. Open / deferred
Section titled “10. Open / deferred”- 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).