% Input: declarative public vocabulary consumed by the language stage and tools.
% Output: environment, command, key, prelude, value-type, and example records.
% Owned state: none; the consumer callbacks own all accumulated registry state.
% Invariants: one canonical record per concept.
% Next stage: tenkz-language.code.tex installs the declared parser front doors.
% SPDX-License-Identifier: Apache-2.0
% Copyright the TNLean project; see LICENSE for the full terms.

\__tenkz_language_registry_environment:nnnn {tenkz}{kernel}{picture}
  {One typed tensor network in one frame.}

\__tenkz_language_registry_command:nnnnn {tn}{atoms}{object}
  {\tn[object keys]{label}}{An atom changes the object record, so it is a command rather than a key.}
\__tenkz_language_registry_command:nnnnn {tnfuse}{atoms}{object}
  {\tnfuse[object keys]{label}}{A fusion atom changes wire arity.}
\__tenkz_language_registry_command:nnnnn {tntree}{atoms}{object}
  {\tntree[keys]{word}}{A fusion tree is one structured atom.}
\__tenkz_language_registry_command:nnnnn {tnset}{setup-extension}{setup}
  {\tnset{setup keys}}{Setup changes document or group policy outside any one picture.}
% The face vocabulary is the whole of it: west and east carry virtual, up and
% down carry physical, and the four skins are the ones the door names.  The
% angle, slot, and label grammar of a port list belongs to the three-argument
% door (LANGUAGE-1.0 section 8); a numeric angle spelled here is
% [TKZ-ATOM-INVALID-PORT].
\__tenkz_language_registry_command:nnnnn {tndeclareatom}{setup-extension}{setup}
  {\tndeclareatom{\command}{skin=dot|box|pill|mpo, ports={west|east:virtual, up|down:physical}}}
  {A declaration adds a typed atom spelling to the grammar. The four face words are its whole port vocabulary; angles, slots, and port labels belong to the three-argument door.}

% command, standalone example, representative failure
\__tenkz_language_registry_example:nnn {tn}{tex/tenkz/examples/api/tn.tex}
  {An unknown object key is a hard error.}
\__tenkz_language_registry_example:nnn {tnfuse}{tex/tenkz/examples/api/tnfuse.tex}
  {A nonpositive span is a hard error.}
\__tenkz_language_registry_example:nnn {tntree}{tex/tenkz/examples/api/tntree.tex}
  {An unbalanced fusion word is a hard error.}
\__tenkz_language_registry_example:nnn {tnset}{tex/tenkz/examples/api/tnset.tex}
  {An unknown setup key or enum value is a hard error.}
\__tenkz_language_registry_example:nnn {tndeclareatom}
  {tex/tenkz/examples/api/tndeclareatom.tex}
  {An unknown face, type, skin, or duplicate command is a hard error.}

% scope, canonical spelling, value type, default, status, meaning
\__tenkz_language_registry_key:nnnnnn {object}{role}{semantic-role}{empty}{kernel}{Semantic theme role.}
\__tenkz_language_registry_key:nnnnnn {object}{species}{declared-name}{empty}{kernel}{Semantic species.}
\__tenkz_language_registry_key:nnnnnn {object}{tree style}{enum(wire|ribbon)}{wire}{kernel}{Fusion-tree strand style.}
\__tenkz_language_registry_key:nnnnnn {atom-declaration}{skin}{silhouette-name}{dot}{kernel}{Declared atom silhouette.}
\__tenkz_language_registry_key:nnnnnn {atom-declaration}{ports}{typed-port-list}{empty}{kernel}{Declared atom ports.}

% No alias rows remain: the last four compatibility spellings were grid
% parses and left with that front end at the S4 surface swap.

% ---- the 1.0 kernel surface (LANGUAGE-1.0.md) ----
%
% Sentenced 2026-07-25 by the nine signed amendments, booked in
% docs/tenkz/SHRINK.md session 1, and struck from the contract's tables.
% Each row below stays kernel until the change that implements its amendment
% removes the parser row; the ledger status moves with the parser and not
% before, which is how every retirement here has been booked since session 0.
%
% kernel-mark:inset and kernel-wire:bend left this list when their parser
% rows were removed (the inert-key retirement, #6194/#6249): their
% tombstone rows stand at the foot of this file, and around=, never
% sentenced but equally inert, left with them.
% The nudge= pair left the same way (#6356): amendment seven's mechanism
% -- extent from counts, labels from ink -- had already landed, so the
% retirement was bookkeeping, and its tombstone rows stand below.
%
% One sentence was overturned by the corpus it was passed on.
% kernel-picture:check stood condemned as an audit switch the author should
% not have; seven benchmark cases then wrote it, each naming a relation whose
% two sides are known, unequal, and equal anyway for a reason the diagram
% does not draw -- a coproduct changing physical arity, a reduction changing
% which sides carry indices, a source decorating each segment with the
% arrowhead of the tensor claiming it.  The contract's elision covers the
% unknown operand and cannot say those things; deleting the key would have
% refused seven figures their own papers draw.  LANGUAGE-1.0 section 7.4 now
% sanctions the recorded opt-out as the audit's spelling, and the row is
% ordinary kernel surface (#4703).
% kernel-wire:via was overturned for the same reason.  Of the 78 authored
% sites surveyed for its retirement, only three respellings survived render
% review; the remaining sites include interior threading, piercing rings,
% and bulge and corner control, none of which an exterior selection hull
% expresses.  Waypoints are therefore ordinary string geometry rather than
% sentenced sugar (#3).
%
% The tombstone for the connection flag `fused` and the retired `weight=`
% key both say that the port type decides the stroke (LANGUAGE-1.0 section 10).
\__tenkz_language_registry_environment:nnnn {tenkzeq}{kernel}{picture}
  {Equation composition and the boundary-signature audit.}
\__tenkz_language_registry_command:nnnnn {tnwire}{connections-closures}{connection}
  {\tnwire[wire keys]{end}{end}}{A wire is one typed index line; bonds and strings are its kinds.}
\__tenkz_language_registry_command:nnnnn {tnmark}{regions-annotations}{picture}
  {\tnmark[mark keys]{target}{label}}{A mark annotates without owning topology.}
\__tenkz_language_registry_command:nnnnn {tngroup}{composition}{picture}
  {\tngroup[picture keys]{body}}{A group transforms a sub-diagram as one object.}
\__tenkz_language_registry_command:nnnnn {tndeclare}{setup-extension}{setup}
  {\tndeclare{class}{name}{keys}}{The one extension door: atom, skin, or species.}
\__tenkz_language_registry_command:nnnnn {tnbond}{connections-closures}{connection}
  {\tnbond[wire keys]{end}{end}}{Sugar: a bond is a wire of kind index.}
\__tenkz_language_registry_command:nnnnn {tenkzkernel}{setup-extension}{setup}
  {\tenkzkernel}{Rebinds the kernel surface; tikz-tensor-networks.sty calls it at load, so a document's own call is inert. Sunset 1.0.}
\__tenkz_language_registry_command:nnnnn {tnprose}{regions-annotations}{picture}
  {\tnprose{text}}{Sugar: prose in place of a diagram. The text enters the record stream and no ink reaches the page.}
\__tenkz_language_registry_example:nnn {tnwire}{tex/tenkz/examples/api/tnwire.tex}
  {A closed wire with positional ends is a hard error.}
\__tenkz_language_registry_example:nnn {tnmark}{tex/tenkz/examples/api/tnmark.tex}
  {An unknown mark form is a hard error.}
\__tenkz_language_registry_example:nnn {tngroup}{tex/tenkz/examples/api/tngroup.tex}
  {An unknown picture key is a hard error.}
\__tenkz_language_registry_example:nnn {tndeclare}{tex/tenkz/examples/api/tndeclare.tex}
  {An unknown declaration class is a hard error.}
\__tenkz_language_registry_example:nnn {tnbond}{tex/tenkz/examples/api/tnbond.tex}
  {An unknown wire key is a hard error.}
\__tenkz_language_registry_example:nnn {tenkzkernel}{tex/tenkz/examples/api/tenkzkernel.tex}
  {The package binds the kernel surface at load; a document's own call rebinds the same meanings.}
\__tenkz_language_registry_example:nnn {tnprose}{tex/tenkz/examples/api/tnprose.tex}
  {Prose on a checked relation without an opt-out is a hard error.}

% class, name, declaration descriptor
\__tenkz_language_registry_prelude:nnn {skin}{mpo}{base=box}
\__tenkz_language_registry_prelude:nnn {skin}{pill}{base=roundrect}

\__tenkz_language_registry_key:nnnnnn {kernel-picture}{rows}{row-list}{{wire}}{kernel}{Chain row topology; non-wire rows populate.}
\__tenkz_language_registry_key:nnnnnn {kernel-picture}{cols}{positive-integer}{3}{kernel}{Cells per row.}
\__tenkz_language_registry_key:nnnnnn {kernel-picture}{frame}{frame-spec}{flat}{kernel}{Closed flat, plane, or circle frame word.}
\__tenkz_language_registry_key:nnnnnn {kernel-frame}{basis}{basis-spec}{origin singleton}{kernel}{Ordered row-kind members at east/north quarter-pitch offsets.}
% A kernel picture grows by declaration: a side exposes indices only when it
% says so, and the frame's grid is a coordinate system rather than a claim
% about which indices exist.  `none' is therefore the default word on every
% side and the explicit spelling of that default.
\__tenkz_language_registry_key:nnnnnn {kernel-picture}{west}{side-policy}{none}{kernel}{West side policy.}
\__tenkz_language_registry_key:nnnnnn {kernel-picture}{east}{side-policy}{none}{kernel}{East side policy.}
\__tenkz_language_registry_key:nnnnnn {kernel-picture}{north}{side-policy}{none}{kernel}{North side policy.}
\__tenkz_language_registry_key:nnnnnn {kernel-picture}{south}{side-policy}{none}{kernel}{South side policy.}
\__tenkz_language_registry_key:nnnnnn {kernel-picture}{trace}{trace-spec}{empty}{kernel}{Cells or physical ports closed to themselves.}
\__tenkz_language_registry_key:nnnnnn {kernel-picture}{open}{cell-set}{empty}{kernel}{Cells opened by declaration.}
\__tenkz_language_registry_key:nnnnnn {kernel-picture}{bonds}{bond-policy}{grid}{kernel}{Frame-generated adjacent contraction.}
\__tenkz_language_registry_key:nnnnnn {kernel-picture}{align}{row}{midline}{kernel}{The wire axis panels align on.}
% The style-to-class mapping.  XeLaTeX will not name the math style, so
% the sensing reads how the surrounding mathematics was entered instead
% (LANGUAGE-1.0 7.2):
%   a line of running mathematics            ->  s, the denser class
%   a display, anything inside a display --
%     a fence, a script, an alignment cell,
%     a braced sub-formula -- and running
%     text                                   ->  m, the base class
% A stated class outranks the sensing, and an equation senses once for
% all of its panels.  The class chooses the size the picture sets its
% inscribed names in; the atom row below chooses one glyph's extent.
\__tenkz_language_registry_key:nnnnnn {kernel-picture}{size}{size-class}{from math style}{kernel}{Size class of the metric context.}
% Extension-gate: #5620 -- math style owns the density profile, but only
% the author knows the page: a picture whose word outruns the text column
% names the compact profile instead of spelling a raw pitch length in its
% body.  The profile scales the one base pitch, so every named ratio
% follows while the print-size floors hold.  Consumer: the ch21
% structure-operator recursion figure (blueprint).
\__tenkz_language_registry_key:nnnnnn {kernel-picture}{metrics}{enum(compact)}{empty}{kernel}{Named metric profile of the picture's pitch.}
% The audit follows the joiner class; what the key states is the audit
% selected, the equivalence the comparison is taken up to, and the
% relations opted out with their written reasons.  Consumers:
% rmp-iii-a-coproduct, rmp-iii-a-pulling-through, rmp-ii-boundary-region,
% rmp-iii-a-commuting-hamiltonian, rmp-ii-mpu-brickwork, and three
% workbench diagrams (#4703).
\__tenkz_language_registry_key:nnnnnn {kernel-picture}{check}{check-spec}{signature}{kernel}{The tenkzeq audit: selection, equivalence, recorded opt-outs.}
\__tenkz_language_registry_key:nnnnnn {kernel-picture}{sandwich}{flag}{false}{sugar(rows={ket,op,bra})}{Ket-over-bra row preset.}
\__tenkz_language_registry_key:nnnnnn {kernel-picture}{boundary}{enum(open|none|periodic)}{none}{sugar(west, east)}{All-side boundary word.}
\__tenkz_language_registry_key:nnnnnn {kernel-picture}{lattice}{pair}{empty}{sugar(rows=, cols=)}{RxC wire-row lattice preset.}
\__tenkz_language_registry_key:nnnnnn {kernel-picture}{ring}{integer}{empty}{sugar(rows=, cols=, frame=circle, west=trace, east=trace)}{Circle-frame ring preset.}
\__tenkz_language_registry_key:nnnnnn {kernel-picture}{surface}{enum(torus)}{empty}{sugar(west=trace, east=trace, north=trace, south=trace)}{Torus closure preset.}
\__tenkz_language_registry_key:nnnnnn {kernel-picture}{planes}{flag}{false}{sugar(frame={plane, basis={ket at (0,0), bra at (2,2)}})}{Plane frame with ket and bra basis members.}
\__tenkz_language_registry_key:nnnnnn {kernel-picture}{physical}{physical-policy}{none}{sugar(rows)}{Expander: frame-owned outward physical port per frame-cell atom; geometric overlays are excluded.}
\__tenkz_language_registry_key:nnnnnn {kernel-atom}{skin}{silhouette-name}{theme default}{kernel}{Declared silhouette.}
\__tenkz_language_registry_key:nnnnnn {kernel-atom}{wide}{positive-integer}{1}{kernel}{Cells spanned.}
\__tenkz_language_registry_key:nnnnnn {kernel-atom}{wires}{positive-integer}{1}{kernel}{Wire rows spanned.}
\__tenkz_language_registry_key:nnnnnn {kernel-atom}{at}{address}{next chain cell}{kernel}{Placement address.}
\__tenkz_language_registry_key:nnnnnn {kernel-atom}{name}{identifier}{none}{kernel}{Addressable name; an unnamed atom answers only to its cell.}
\__tenkz_language_registry_key:nnnnnn {kernel-atom}{ports}{typed-port-list}{from skin}{kernel}{Typed faces and slots.}
\__tenkz_language_registry_key:nnnnnn {kernel-atom}{species}{declared-name}{empty}{kernel}{Semantic species.}
% Extension-gate: #5009 -- crossings with picture-external wires belong to
% each placed atom, while pairings= remains reusable skin topology.
\__tenkz_language_registry_key:nnnnnn {kernel-atom}{pairing~cross}{indexed-crossing-list}{empty}{kernel}{Per-instance crossings of generated skin pairings.}
\__tenkz_language_registry_key:nnnnnn {kernel-atom}{size}{size-class}{m}{kernel}{Per-atom metric size class.}
\__tenkz_language_registry_key:nnnnnn {kernel-atom}{label~pos}{angle}{auto}{kernel}{Label quadrant; auto takes the first free face in the order s, n, e, w, and south when every face carries ink.}
\__tenkz_language_registry_key:nnnnnn {kernel-atom}{void}{void-policy}{unset}{kernel}{Hole or removed site.}
\__tenkz_language_registry_key:nnnnnn {kernel-atom}{physical}{physical-policy}{unset}{kernel}{Site's own answer to the picture's physical policy.}
% Issue 5383: stored but never read by ink passes or the signature fold.
% The directed-signatures question the reservation waited on is answered:
% wire dir= is the contract's one spelling for a space against its dual, and
% no source panel draws a conjugate glyph -- the overline the corpus wants
% is label mathematics, already spelled there.  Sentenced in the shrink
% ledger (2026-08-06); the status moves with the parser row at the 1.0
% freeze, and the corpus rewrite executes with it.
\__tenkz_language_registry_key:nnnnnn {kernel-atom}{conjugate}{flag}{false}{kernel}{Tombstoned; stored, read by nothing. Sunset 1.0.}
\__tenkz_language_registry_key:nnnnnn {kernel-atom}{cluster}{pair}{empty}{sugar(name=, skin=)}{Expander: RxC addressable sub-atom group.}
\__tenkz_language_registry_key:nnnnnn {kernel-atom}{role}{semantic-role}{empty}{sugar(species=)}{Prelude species spelling.}
\__tenkz_language_registry_key:nnnnnn {kernel-wire}{kind}{enum(index|string)}{index}{kernel}{Bond or travelling string; a declared skin's pairing arrives generated, never authored.}
\__tenkz_language_registry_key:nnnnnn {kernel-wire}{route}{route-spec}{straight}{kernel}{straight, orth, arc (honours the ends' faces), or the hull route {<side> of <selector>}.}
\__tenkz_language_registry_key:nnnnnn {kernel-wire}{via}{address-list}{empty}{kernel}{Waypoints of a string; an index bond draws its chord and reads none.}
\__tenkz_language_registry_key:nnnnnn {kernel-wire}{species}{declared-name}{empty}{kernel}{Semantic species.}
\__tenkz_language_registry_key:nnnnnn {kernel-wire}{wind}{pair}{zero}{kernel}{Winding pair on traced frames; no certified quotient geometry.}
\__tenkz_language_registry_key:nnnnnn {kernel-wire}{cross}{crossing-list}{empty}{kernel}{Declared over and under crossings.}
% Extension-gate: #4779 -- crossing= supplies one order for the crossing set
% derived by a hull route.  cross= remains the declaration of a crossing by
% name, and is the only crossing spelling read by a free string.
\__tenkz_language_registry_key:nnnnnn {kernel-wire}{crossing}{enum(over|under|alternate|alternate=over|alternate=under)}{empty}{kernel}{Default order for the crossings a hull route derives.}
\__tenkz_language_registry_key:nnnnnn {kernel-wire}{dir}{direction-policy}{none}{kernel}{Direction mark of a directed index.}
% Extension-gate: #5543 -- the sources draw two non-solid rails and no third:
% a dashed one for an index drawn but not contracted, a dotted one for a
% lattice lying under the sheet being drawn.  The dash lengths are named
% metrics, so a client never spells a length of its own.
% Consumer: rmp-app-toric-dual.
\__tenkz_language_registry_key:nnnnnn {kernel-wire}{stroke}{enum(solid|dashed|dotted)}{solid}{kernel}{Declared stroke pattern of the rail.}
\__tenkz_language_registry_key:nnnnnn {kernel-wire}{name}{identifier}{generated}{kernel}{Addressable name.}
\__tenkz_language_registry_key:nnnnnn {kernel-wire}{closed}{flag}{false}{kernel}{A closed cycle, smooth unless route=orth squares its turns, which a wind= cycle ignores; takes no ends.}
% The form alphabet closes on the three words that put ink on the page, plus
% the recording `prose` row the sugar ledger keeps (SHRINK 2026-08-11).  The
% four spellings struck from it are the tombstone rows at the foot of this
% file, which are where a dead spelling lives and the only place it lives.
\__tenkz_language_registry_key:nnnnnn {kernel-mark}{form}{enum(bracket|enclosure|label|prose)}{label}{kernel}{Mark form; the prose form records its text and draws nothing.}
\__tenkz_language_registry_key:nnnnnn {kernel-mark}{species}{declared-name}{empty}{kernel}{Semantic species.}
\__tenkz_language_registry_key:nnnnnn {kernel-mark}{label~pos}{angle}{auto}{kernel}{Label bearing: a compass word or a degree value.}
\__tenkz_language_registry_key:nnnnnn {kernel-mark}{name}{identifier}{generated}{kernel}{Recorded name; no address grammar resolves a mark yet.}
% Extension-gate: #5570.  The flag reads the way the corpus draws: a mark is
% a contour, and a region that carries paper under it says so.
\__tenkz_language_registry_key:nnnnnn {kernel-mark}{tint}{flag}{false}{kernel}{Interior tint under an enclosure's contour; a bracket takes none.}
\__tenkz_language_registry_key:nnnnnn {kernel-setup}{pitch}{length}{11mm}{kernel}{Base metric; the default is a fixed length, not an em-relative one.}
% Nothing in the benchmark or in a workflow turns the flag on, and 51 of the
% 130 benchmark cases spell physical= alone, which it refuses.  The five
% refusal fixtures tests/tenkz/kernel/negative/n_strict_*.tex are the only
% sources that enable it; r_false_flags spells strict=false, which is the
% default restated.  What holds the sugar contract is the kernel probe
% instead: eleven sugar spellings pinned byte-identical to their expansions
% in events and in pixels.
\__tenkz_language_registry_key:nnnnnn {kernel-setup}{strict}{flag}{false}{kernel}{Rejects sugar; only five refusal fixtures enable it.}
\__tenkz_language_registry_key:nnnnnn {kernel-declare}{hue}{hue-source}{house cycle}{kernel}{Species ink; the source: prefix records provenance and strips to the colour it names.}
\__tenkz_language_registry_key:nnnnnn {kernel-declare}{base}{identifier}{empty}{kernel}{Skin the declaration extends.}
\__tenkz_language_registry_key:nnnnnn {kernel-declare}{pairings}{port-pair-list}{empty}{kernel}{Skin-internal wires between own ports.}

% ---- tombstones (LANGUAGE-1.0 section 10) ----
%
% scope, dead spelling, migration.  A retired spelling is recorded once, here,
% and everything that must refuse it reads these rows: the source lint builds
% its rejection from them, and the language check requires every spelling the
% parser refuses by name to carry one, with the same migration in both places.
%
% A spelling written `key=value' is a word struck from a live key's alphabet.
% The key survives, so the parser refuses the word through a branch of its own
% and names the migration there.  A bare spelling is a key that no longer
% exists: nothing survives to branch on, the unknown-key error answers it, and
% the row is what tells a reader of an old document where the meaning went.
% A spelling beginning with a backslash is a command that no longer exists,
% and takes the scope `command'.
%
% Write a multi-word key the way the rest of the registry does, with ~ for the
% space, and wrap a long migration to keep the line short.  Both are read out
% before anything compares or matches a row, so what a document writes is what
% is matched.
\__tenkz_language_registry_tombstone:nnn {kernel-picture}{periodic}
  {use boundary=periodic}
%
% The two atom face-label keys retired with the typed-port landing
% (2026-08-03): each hung a physical label on a page direction.  The face
% belongs to ports= now and the label rides the port; the physical= policy
% grows the unlabelled port per cell.
\__tenkz_language_registry_tombstone:nnn {kernel-atom}{up}
  {use ports={90:physical:<label>}; the outward physical face is the row's
    own normal}
\__tenkz_language_registry_tombstone:nnn {kernel-atom}{down}
  {use ports={270:physical:<label>}, exactly as up above}
%
% The three inert keys retired 2026-08-22 (#6194, #6249): each recorded a
% value in the event stream and moved no ink, compile-verified with and
% without the key at 400dpi.
\__tenkz_language_registry_tombstone:nnn {kernel-mark}{inset}
  {no successor: concentric contours take their order from containment,
    ties from declaration order, and each rank stands one clearance out}
\__tenkz_language_registry_tombstone:nnn {kernel-wire}{bend}
  {no successor: the key recorded a factor and bent nothing, so delete
    it; a curve an author intends is route=arc, which leaves and enters
    along its ends' faces}
\__tenkz_language_registry_tombstone:nnn {kernel-wire}{around}
  {no successor: the key recorded a list and detoured nothing, so delete
    it; a detour an author intends is route={<side> of <selector>}, a
    side of a selection whose crossing set answers the claim}
%
% The sentenced nudge= pair, retired 2026-08-22 (#6356): amendment seven's
% replacement doctrine was already landed, so nothing displaces by hand.
% One row carries both scopes, as the contract's section 10 states it,
% because the ledger holds one spelling per row for the lint to match.
\__tenkz_language_registry_tombstone:nnn {kernel-atom}{nudge}
  {no successor, on either scope: an off-cell atom is a basis member or
    an address, and a mark's label takes its station against measured
    ink -- label pos= names a bearing, and auto stands on the first
    free face}
%
% The inert setup sizes= key retired 2026-08-23 (#6888): it stored a table
% that no metric or render pass read.  Size class belongs to the picture or
% atom whose extent it controls.
\__tenkz_language_registry_tombstone:nnn {kernel-setup}{sizes}
  {use size= on the picture or atom; the bundled metric table is fixed}
%
% The inert setup theme= key retired 2026-08-23 (#6889): it stored an
% identifier that no ink or render pass read.  The house palette is load-time
% policy; a source-tagged literal colour belongs to its species declaration.
\__tenkz_language_registry_tombstone:nnn {kernel-setup}{theme}
  {the house theme binds at load; source-tagged literal ink is declared by
    \tndeclare{species}{<name>}{hue=source:<colour>}}
%
% The sentenced wire weight= key retired with its zero-demand bundle audit
% branch on 2026-08-23 (#6897).  It never changed the drawn rail; index type
% already owns the stroke, and multiplicity belongs to the mathematical label.
\__tenkz_language_registry_tombstone:nnn {kernel-wire}{weight}
  {no successor: the port type decides the stroke, and multiplicity is
    mathematics carried by the index label}
%
% The deferred half of the net-zero exchange executed 2026-08-25: a mark
% gained species= long ago, and the five region words are prelude species
% with the hues the slot key gave them, the complement's dashed contour
% included.
\__tenkz_language_registry_tombstone:nnn {kernel-mark}{slot}
  {species= carries the region word; selected, secondary, complement,
    collar, and neutral are prelude species}
%
% The four mark forms below took a record and drew nothing.  What the sources
% brace, the benchmark already brackets (rmp-ii-spectrum-transfer); what they
% cut, it encloses; what they shade, a tinted enclosure carries.  Each row is
% wrapped where its parser branch wraps, so the two read line for line.
\__tenkz_language_registry_tombstone:nnn {kernel-mark}{form=brace-above}
  {use form=bracket with label pos=90; a bracket speaks from the side its
    label sits on}
\__tenkz_language_registry_tombstone:nnn {kernel-mark}{form=brace-below}
  {use form=bracket, which speaks from the south when it names no side}
\__tenkz_language_registry_tombstone:nnn {kernel-mark}{form=cut}
  {no successor: the sources' cut is the contour of what it separates,
    so use form=enclosure over that selection}
\__tenkz_language_registry_tombstone:nnn {kernel-mark}{form=band}
  {use form=enclosure with tint, which lays ink over the paper its contour
    encloses}
%
% The commands the sugar surface lost.  None of the eight is defined anywhere
% in tex/, so an undefined control sequence is what answers a document that
% still spells one, and the row is what tells its reader where the meaning
% went.  The migrations are section 10's, which is where these were recorded
% before the registry could hold them; the disposition audit reads its list of
% dead commands from these rows.
\__tenkz_language_registry_tombstone:nnn {command}{\tnput}
  {use \tn[at=(r,c)], which places the atom at the address the put named}
\__tenkz_language_registry_tombstone:nnn {command}{\tnsite}
  {use \tn[at=(r,c)]}
\__tenkz_language_registry_tombstone:nnn {command}{\tnghost}
  {no successor: an address references an empty cell directly}
\__tenkz_language_registry_tombstone:nnn {command}{\tnjoin}
  {use \tnwire}
\__tenkz_language_registry_tombstone:nnn {command}{\tnedge}
  {use \tnwire}
\__tenkz_language_registry_tombstone:nnn {command}{\tnarrow}
  {use \tnwire[dir=to]; a directed index is the wire's own direction}
\__tenkz_language_registry_tombstone:nnn {command}{\tncut}
  {use \tnmark[form=enclosure] over the selection a cut separates; the cut
    form is retired with it}
\__tenkz_language_registry_tombstone:nnn {command}{\tnregion}
  {use \tnmark[form=enclosure]}
