On this page
- 1. Import, subclass, and availability
- 2. Lifecycle hooks and world operations
- 3. Read the world and parameters
- 4. Lookup, neighborhoods, and collections
- 5. Patch activation and scheduler controls
- 6. Synchronize custom Stores
- 7. Queue births and removals
- 8. Publish outputs and logs
- 9. Stop and control execution
- 10. Runtime/legacy inventory
- 11. Supporting exports and inherited helpers
- 12. Verification
NLSimMain API reference
Manual contents | Programming Main | Project settings | Neighborhood reference | Supporting types | Alphabetical index
Source: nlsimmain.js.
Inheritance: NLSimMain extends NLRoot extends APIRoot.
Use this page to look up a contract; use Programming Main for a
guided explanation and complete worked example.
Scope: the instance members declared by NLSimMain, its model-facing runtime
fields, and the supporting exports in its module. Inherited helpers are mapped
to existing guides below, not silently counted as declarations here.
Examples assume Project.lifecycle: "aligned". Legacy-only entry points
are classified rather than recommended. No method on this page is static.
1. Import, subclass, and availability
import {NLSimMain} from "@nwk/api/nlsimmain.js";
class Model extends NLSimMain {
constructor(Patch, Turtle) {
super();
this.Patch = Patch;
this.Turtle = Turtle;
}
initCells() {
this.initializePatches(this.Patch);
}
initAgents() {
this.initializeTurtles(this.Turtle);
}
}
export default Model;
The runtime supplies the classes; their names here are local choices. This scaffold requires an agent Project and compatible supplied classes. For a patch-only Project omit initAgents and the Turtle field. Constructor execution is too early to read inputs, patches, or turtles.
The tables distinguish:
- Hook: override it; the runtime calls it at the right phase.
- Operation: call it from an appropriate hook/model action.
- Advanced: requires an explicit scheduling/ownership policy.
- Internal/legacy: do not call it as a model-author shortcut.
Unless stated otherwise, operations mutate state and return undefined.
They do not validate arbitrary model input or invent missing configuration.
2. Lifecycle hooks and world operations
| Member | Contract |
|---|---|
constructor() |
Base constructor; call with super() in your constructor. Allocates inherited local state, not the simulation context or populations. |
init() |
Hook, once after context/parameters exist but before population creation. Preserve super.init(): it clears birth/death queues and initializes the clock. Register Main-owned state/listeners here. |
initCells() |
Hook for initial patch population creation. Call initializePatches here, not from constructor. Base implementation is empty. |
initAgents() |
Hook for initial turtle creation when Project has agent configuration. Override it. A second legacy declaration with (msg, ws, mainapp) replaces the earlier empty declaration in JavaScript; the effective base method is not a usable no-op or a suitable super call. |
setup() |
Hook after patch setup and turtle setup, initially and after world reset. Empty base. Populations exist; publish time-zero output and rebuild cached references here. |
coordinate() |
Hook before individual rules on each ordinary tick. Empty base. Current time has not yet advanced. |
update() |
Hook after ordinary commitment and clock advancement. Empty base. Count/report committed results here. |
reset(ws) |
Local reset hook in aligned mode; model overrides normally use no argument and preserve super.reset(). Clears pending birth/death/Store work, transient scheduler/report sets, and initializes time zero. Does not recreate populations, call setup, restore custom Main Stores, or act as halt. The ws argument only participates in the legacy implementation. |
resetWorld(ws) |
Coordinated operation: halt → Main reset → coordinate cache/grid clear → patch resets → turtle recreation → Stock resets → patch/turtle/Main setup → mark patches for reporting. Optional reply sink gets a reset acknowledgement, not a full status publication. Normally let the browser/dispatcher call it; call without ws for a deliberate whole-world model action. |
resetPatches() |
Advanced local batch operation: call reset on existing patches, without setup, clock reset, turtle recreation, or a full-world publication. Not a replacement for resetWorld. |
resetTurtles() |
Advanced local batch operation: call reset on existing turtles, without recreating them or calling setup in aligned mode. Implementation uses iterator.forEach, so availability depends on host iterator helpers. Prefer an explicit loop if needed. |
Main and patches survive ordinary aligned world reset; turtles are replaced.
Synchronizing a custom Store does not arrange its reinitialization: restore it
explicitly in its owner's reset. The aligned Main reset does not delegate to
NLRoot reset to restore stores automatically.
See state ownership
and Reset versus reinitialization.
Population initialization
| Signature | Contract and prerequisites |
|---|---|
initializePatches(gen) |
Operation inside initCells. Accepts a compatible Patch class or square-grid factory (col, row, main) => patch. Builds the matrix, applies initial color triples, then calls patch init in aligned mode. Hex classes must implement hex patch semantics. Returns no population. Not a per-reset reconstruction operation. |
initializeTurtles(clazz, turtleInit = this.turtleInit) |
Operation inside initAgents. Requires configured agent properties and a Turtle class constructed as (id, main). Creates the initial population, applying built-ins before each init, then optional customize(turtle). Coordinated setup follows after insertion. Saves the customization callback for later recreation; repeated init calls are not listener-safe resets. |
Customization does not copy arbitrary custom state or make the whole population available before it has been built. See initial customization.
3. Read the world and parameters
Treat these fields as runtime-owned unless your own model deliberately manages one of them. They are not constructor inputs.
| Member | Value and availability |
|---|---|
main |
Inherited NLRoot field; points to this Main itself. Patch/Turtle main points here. |
rows, cols |
Inherited accessors populated during initialization; grid dimensions, not pixels. |
colsx, topology, isHex |
Runtime address width, topology string, and hex flag. Hex has doubled columns. |
patches |
NLMatrix after context installation; patch objects exist after initCells. Use toList() or forEach(patch => …), not internal mat storage. |
turtles |
NLVector after agent properties are installed; absent in a patch-only world. Use size, get(id), values(). Zero size is not absence of a configured population. |
currentTime |
Read-only accessor to clock time. Ordinary first coordinate sees 0; first update sees dt. |
dt |
Numeric instance time increment. It shadows the legacy prototype method dt(); read this.dt, do not call this.dt(). Does not automatically scale turtle moves or custom per-tick rules. |
maxTime, stopTime |
Configured end time and derived stopping threshold (maxTime minus dt/2). Prefer Project/run controls to editing stopTime. |
alignedLifecycle |
Boolean derived from the exact lifecycle string at initialization; not a live mode switch. |
visitMode |
Runtime VisitMode symbol, not the Project string. Changing this field alone does not rebuild installed step/shift functions. |
boundaryMode, cellWrap |
Patch boundary symbol and wrapping flag, independent of the turtle edge setting. |
csize, cellPaletteLength |
Cell display size and patch palette length. Not the palette's CSS strings. |
count, paletteLength, edge |
Resolved initial turtle count, agent palette length, and configured edge string after agent initialization. count is not live population size; use turtles.size. |
Parameter access
| Signature | Result and side effects |
|---|---|
getParam(icode) |
Returns the stored value for the exact code, or undefined if absent. No coercion/validation/default. |
getBParam(icode) |
Boolean from a loose comparison of stored value to 1; intended for 0/1 toggles, not general JavaScript truthiness. |
setParam(icode, param) |
Stores a parameter immediately and notifies registered parameter listeners, including default speed/theta bindings. Returns undefined. Does not automatically rebuild populations. |
initParams(icodes, params) |
Internal bulk registration from parallel arrays. Uses set semantics on the parameter manager; do not rerun it as a reset hook. |
For example, these methods belong inside Main:
get RATE() { return this.getParam("RATE"); }
get ENABLED() { return this.getBParam("ENABLED"); }
Declare matching Project inputs; Patch/Turtle can then read this.main.RATE.
setParam affects the runtime parameter store, not necessarily the browser
slider display. See input policies.
Whole-population built-in assignments
setSpeed(val) and setTheta(val) visit the current turtle population and
assign turtle.speed / turtle.theta respectively. They require a configured
population and return undefined. Values are distance per trajectory step and
radians respectively. These are immediate initializing setters, replacing
each turtle's local reset baseline; they are not next-state proposals.
They do not update a Project default or guarantee values for later births.
Default input bindings use these operations. See
binding/reset caveats.
4. Lookup, neighborhoods, and collections
Query results do not execute rules or commit pending state. Membership can change after movement, death, birth, or reset; do not retain turtle references as permanent identities.
| Signature | Result / contract |
|---|---|
patch(col, row) |
Patch lookup after population creation. Floors coordinates, wraps with Wrap or clamps with Edge. Outside Edge does not mean null. Hex needs valid doubled-column addresses. |
neighbors(patch) |
Array of unique nearest other patches; calls the patch's topology-aware neighbors. |
nhood8(patch) |
Compatibility alias for neighbors, including six-neighbor hex behavior. |
nhood4(patch) |
Array of unique square side neighbors; center excluded; Edge/Wrap respected. Throws RangeError for hex. |
turtlesAt(col, row) |
AgentList (array subclass) of visible indexed occupants. Requires a populated spatial index; uses committed positions. Does not perform the patch lookup's boundary normalization. |
nhood(f, coords, clazz) |
Array of unique visible indexed turtles at coordinates, satisfying f(turtle) and exact constructor equality with clazz. coords must offer values(); coordinates must be finite x/y or col/row values. No subclass matching or implicit self exclusion. Invalid coordinates throw TypeError. |
patchesInRadius(patch0, dist) |
Array of unique patches at Euclidean distance <= dist from patch0's row/col point, including center. No activation. |
turtlesInRadius(patch0, dist) |
Array of visible turtles by actual committed positions relative to a finite coordinate point; no implicit self exclusion, no spatial-index requirement. Returns [] without an agent population. |
patchesBetweenRadii(r, c, dist0, dist1, closed = true, touch = true) |
Array of unique annulus patches, row first. Includes both bounds unless closed is false, which excludes only the inner bound. By default also transiently activates results through touchPatch. |
patchesBetweenRadiiAndFringe(r, c, dist0, dist1) |
[patches, fringe], inclusive annulus and selected subset with distance >= dist1 - 1. No activation. |
Radii accept fractions but must be finite numbers with
0 <= inner <= outer; invalid radii throw RangeError and malformed center
coordinates throw TypeError. Distances use patch coordinate points, not pixels
or square display centers; wrapping uses shortest cell-boundary displacement.
Hex uses scaled physical spacing. Full contracts and examples:
neighborhood reference.
Scan or summarize without stepping
turtleVisit(visitor) calls visitor(turtle) on every current population member,
returning undefined. It does not apply the local-query visibility filter, shuffle
order, run turtleStep, or clone turtles. A configured population is required.
Avoid structural changes during traversal; use the queued birth/death helpers.
total(f, elts, base) has two forms:
| Call | Meaning |
|---|---|
total(mapper, array, base = 0) |
Sum mapper(element) starting at base |
total(array, base = 0) |
Sum array values starting at base |
Actual code uses base || 0; supply a finite numeric base and numeric results.
elts must support map then reduce (ordinary arrays work; Sets/iterators do
not). Empty arrays return the base, normally zero. No mutation or reset work.
This update body requires matching display codes:
const red = [...this.turtles.values()].filter(turtle => turtle.color === 1);
this.show("RED", red.length);
this.show("SUM", this.total(patch => patch.color, this.patches.toList()));
askTurtles(breed, fn) and filterBreed(breed, elts) are advanced legacy breed
wrappers using breedMap. They are not a recommended breed API:
askTurtles passes a class through a filter path that can call it as a predicate,
and filterBreed needs both a registered class and a supported collection shape.
They are not NetLogo breed declarations. Prefer explicit array filtering with
turtle instanceof MyTurtle, followed by forEach if appropriate.
5. Patch activation and scheduler controls
Choose one activation policy for a simple environment; see Programming patches.
| Signature / property | Contract |
|---|---|
visitAlways(patch) |
Persistently selects a patch for step visits unless visitMode is No. Repeated registration deduplicates within the persistent Set. Remains registered across ordinary world reset. |
touchPatch(patch) |
Adds a patch to transient sites unless visitMode is No. No automatic future reactivation. |
addToNextSites(patchz) |
Advanced: adds one patch or values() from an iterable collection to the current sites Set. Does not test No mode. Despite its name, not a guaranteed next-tick queue. |
patchVisit(f, where) |
Advanced scan; normally calls f(patch) for each value in where. If visitAll is enabled, ignores where and scans the whole grid instead. Does not mark seen automatically. |
hasSeen(patch) |
Boolean membership in the current seen Set. |
doneWith(patch) |
Adds a patch to seen; use explicitly with hasSeen if designing a duplicate-step guard. |
visitAll = boolean |
Setter only. Makes every patchVisit scan the entire grid. The scheduler has multiple passes: not a once-per-tick guarantee. |
doPatchShift = boolean |
Setter only. Enables extra patchShift hook visits in applicable modes; not needed to commit registered Stores. Persistent/reporting overlap can duplicate hook calls. |
doTurtleShift = boolean |
Legacy setter only. Stores a flag, but current step/shift maps do not consult it; do not use it to disable base turtleShift. |
Persistent and transient step passes are separate; being in both can mean two calls. Transient sites and seen clear at shift. Adding entries during Set traversal can affect that traversal rather than waiting one tick. Slash modes insert an intermediate full shift and therefore complicate activation, births, and removals. Do not equate step order with selection. Callback exceptions propagate; these operations do not catch rule failures.
Clearing colors is not resetting a model
clearCells(where) has two importantly different paths:
- With a truthy where collection, uses patchVisit to propose nextColor 0 on selected patches; color commits later and reset baselines are retained.
- Without where, initializes every patch color to 0 immediately, replacing color reset baselines. Custom patch state is untouched.
Returns undefined. An empty Set is a supplied collection; visitAll can still override it. Prefer explicit per-patch nextColor writes when a synchronous rule should clear only selected colors.
6. Synchronize custom Stores
Allocate each Store once; call registration once in its owner's init.
| Signature | What a subsequent store.next assignment does |
|---|---|
synchronize(...stores) |
Marks those Stores for commitment; no patch activation or drawing report. |
synchAndReport(owner, ...stores) |
Marks Stores and adds owner to changed-patch reporting. owner must be a patch-like object for patch reporting. Built-in patch color uses this. |
synchAndVisitNext(owner, ...stores) |
Marks Stores and adds owner to transient sites. Advanced patch scheduling. |
synchReportAndVisitNext(owner, ...stores) |
Marks Stores, selects owner transiently, and marks it for patch reporting. |
Registration returns undefined. It replaces each Store's nextPinger; multiple registration helpers do not automatically compose. No initial pending value is committed just by registration. Assign next afterward, or initialize deliberately. Stores are kept in a Set for commitment, so repeated proposals normally commit only the final pending value at that boundary.
The three combined helpers also assign a capitalized InitializePinger field
which Store does not invoke. However, Store.initialize/reinitialize assign next,
so they do invoke the installed nextPinger and can report/activate the owner
through that path. Do not rely on the unused capitalized branch as a separate
initialization notification. Use explicit setup/activation for a clear policy.
None of these methods allocates state, installs an updater, chooses a reset
policy, or retires discarded turtle resources.
For a custom Store this pattern keeps those jobs explicit:
import {Store} from "@nwk/api/store.js";
import {NLSimMain} from "@nwk/api/nlsimmain.js";
class Counter extends NLSimMain {
constructor(Patch) {
super();
this.Patch = Patch;
this.counter = new Store(0);
}
init() {
super.init();
this.synchronize(this.counter);
}
initCells() { this.initializePatches(this.Patch); }
coordinate() { this.counter.next = this.counter.get() + 1; }
reset() {
super.reset();
this.counter.reinitialize();
}
}
export default Counter;
Use an aligned patch-only Project. No manual Store shift or init/setup call is needed. See Store semantics.
7. Queue births and removals
These require an initialized agent population, even if its initial size is zero. Birth calls construct/init immediately, return the child, and enqueue insertion. They do not increase turtles.size at the call site.
| Signature | Child initialization / callback |
|---|---|
createTurtle(clazz, x, y, id) |
Lower-level operation: class at supplied coordinates. If turtles.get(id) exists, copy its built-in appearance/motion; otherwise use population defaults. id selects a parent, not the child's ID. Marks newborn, calls init, queues insertion, returns child. No customization callback. |
createTurtleFromParent(parent, f) |
Same class/location and built-in values as parent. Required f(child) runs after init with callback this bound to parent. |
createTurtleFromPatch(patch, turtleClass, f) |
Class at (patch.col + 0.5, patch.row + 0.5) with population defaults. Required f(child), callback this bound to patch. This literal center formula is square-specific; use explicit coordinates for hex. |
createTurtleFromSpecs(clazz, f) |
Class at origin with population defaults; required f(child) customizes it. Ordinary function call, no special callback this. |
die(turtle) |
Queue turtle.id for removal at shift; returns undefined. Does not set zombie itself. Turtle's own die() also marks it dying immediately; prefer turtle.die() for the usual visibility policy. |
Use arrow callbacks when lexical this is intended; arrows ignore apply-based binding. Built-in initialization precedes child init, customization follows, then shift assigns a population ID, inserts/indexes the batch, and invokes setup. Custom fields are not automatically copied. Callback errors are not rolled back: the lower-level creation has already queued the child. Local-query visibility and opportunity to step have distinct boundaries. See birth/death timing before writing a repeated population rule.
8. Publish outputs and logs
Codes must match configured destinations. Numerical results are queued until status publication; calls do not draw synchronously in the browser.
| Signature | Result / mutation |
|---|---|
show(dcode, ...param) |
Queue an array of the separate values for that code. Replaces its pending value, not an append to chart history. |
showList(dcode, param) |
Queue the supplied array directly for that code. Not a clone; do not mutate it before publication. |
log(dcode, ...msg) |
Append values to the code's pending log batch. Use a configured textdisplay/log code, not an unregistered code or numeric chart. |
clearLogger(dcode) |
Replace pending log batch with the browser's clear marker; earlier unflushed messages are discarded. |
createLogger(code) |
Return a Logger wrapper with log(text), clear(), scrollToTop(); methods queue output on this Main. Requires the same compatible configured destination. |
addData(...args) |
Data helper: alternating code/value arguments → new array of {code, content} objects. Scalars become one-element arrays; array values are reused. Does not publish or mutate the display manager. Supply complete pairs. |
These example calls require matching Project line/text displays:
this.show("HALVES", 7, 5);
this.showList("COPY", [7, 5]);
this.log("EVENTS", "First observation", "Second observation");
The first two produce equivalent two-value payload shapes. Passing the array as one show argument would instead nest it. See display configuration and Main chart recipes.
Logger is a supporting class in this module, not a separate public export.
Its code and main fields store the destination and owner.
scrollToTop queues a text-display scroll marker; it is not immediate browser
scrolling.
9. Stop and control execution
| Member | Contract |
|---|---|
halt() |
Request clock halt, preserving current state/time. Does not abort the current synchronous rule midway. Use in update for a model stopping decision. |
stopWhenTrue = predicate |
Setter only; zero-argument function evaluated during status preparation (after the time-limit checks unless short-circuited). Truthy result halts and sets quit in status. Not a pre-step guard; do not rely on a side effect/count of calls. |
delay |
Read/write clock delay in milliseconds. Changes wall-clock pacing, not dt or turtle speed. Prefer browser run-speed controls. |
tick(k) |
Internal clock delegate; k is actually a reply sink with reply(message), not a tick count. Executes a full ordinary tick and status when the clock is not running. |
run(k) |
Internal asynchronous run delegate using the reply sink; not a numeric repeat count. Prefer browser Run/Pause, not another loop in model code. |
step() |
Internal phase: coordinate and selected individual rules only. No ordinary final commitment, time advance, or update (slash modes can shift internally). Not equivalent to browser Step. |
shift() |
Internal phase: commit touched Stores, clear transient selection, remove queued deaths, run shift hooks, insert births. Does not advance time or call update. |
isRK4() |
Returns the stored RK4 flag (possibly undefined), not necessarily a strict boolean. Integration detail; not a patch/turtle rule selector. |
dt() |
Legacy prototype method hidden by the numeric dt instance field. Not callable on an initialized model; read dt instead. |
Do not invoke step/shift/tick recursively from an individual rule, or start a second timer. Ordinary Step is orchestrated by the clock through the dispatcher. See stopping.
10. Runtime/legacy inventory
The remaining declared methods are listed so finding a name in source does not imply that it is a safe modeling operation.
| Member | Classification |
|---|---|
initialize(msg) |
Internal context allocation from dispatcher payload; installs matrices, queues, managers, clock, coordinates, mode maps. Not the init hook. |
initCellProps(inits, delay, msg, ws) |
Internal cell defaults, initial color records, reply sink, mode-function selection. |
initAgentProps(init, ws) |
Internal agent defaults/count/vector/bouncer installation; not a reset operation. |
initTurtleGen(initializer) |
Internal generation-function installation. |
initializeTurtles1() |
Internal choice of captured-start versus generated-start path. |
initializeTurtles2(gen) |
Internal population-construction loop; legacy countCode branch is not a supported live population-input mechanism. |
selectTurtle(n, id, main) |
Legacy class selection from a separately supplied turtleClasses table; not a breed declaration API. |
finishInitialization() |
Internal aligned one-time setup gate after required populations are ready. |
setupWorld() |
Internal coordinated patch → turtle → Main setup. Do not replay to initialize/reset a model. |
initVisitModeMap() |
Internal installation of scheduling functions; Project visitMode is translated separately. |
replyAgent(ws = this.cws) |
Internal full agent initialization message. |
replyCell(ws = this.cws, op = "cellinit") |
Internal cell/world initialization output, consuming pending display values. |
initialStatus() |
Internal send of statusToJson(0); not a pure snapshot. |
statusToJson(time) |
Internal status serialization/stopping check. Consumes output queues and clears patch-report bookkeeping. Not a diagnostic getter. |
clear(idx) |
Internal bookkeeping clear: omitted index clears transient sites/seen and flip; 0 clears sites/seen; 1 clears flip. Does not clear persistent visits, colors, or custom state. |
addToChange(patch), addToFlip(patch) |
Equivalent low-level additions to changed-patch reporting; neither steps, activates, or changes the patch. |
poke(turtle, _, nw) |
Internal spatial-index listener; puts turtle at nw.x/nw.y. |
unPoke(turtle, coords) |
Internal index removal, normally from unlink. Omitting coords uses turtle.location. Not queued death or population removal. |
bumpMemoEpoch() |
Internal memoization-epoch increment at clock phases. |
installStockParams() |
Internal Stock dt/integration wiring, outside the patch/turtle modeling scope. |
nlDiffuse(amt, getter, setter) |
Legacy diffusion helper, not recommended: inconsistent boundary member references and row/column loop bounds require repair/verification before general use. Getter is called with column/row, setter with indices and a delta; do not assume replacement-value semantics. Use the explicit verified Heat rule instead. |
Runtime-owned bookkeeping fields include:
- Input/output plumbing:
icodes,params,dcodes,paramManager,displayManager,cws,initials,RK4. - Queues/indexing:
touchedStores,sites,seen,flip,births,deaths,hss,agentGrid,nextId,visitAlwaysPatches. - Scheduling:
clock,stepModes,shiftModes,stepMode,shiftMode,_patchShift,_turtleShift,_visitAll,_stopWhenTrue,_lifecycleComplete,_memoEpoch. - Construction/support:
coordsFactory,cellSets,patchGen,turtleInit,dTurtleGen,sTurtleGen,defCoords,breedMap,stocks,diffuseDelta. Legacy optional inputs includeturtleClassesandcountCode.
Do not replace these collections, manually edit pending queues, or call internal initializers to work around lifecycle problems. The runtime cannot infer cleanup of arbitrary custom listeners/Stocks when their owner disappears.
11. Supporting exports and inherited helpers
The same module exports:
| Export | Meaning |
|---|---|
NLRoot |
Re-export of the shared base class; also available from its own module. |
Shape |
EnumSym: Circle, Rectangle. Use runtime Shape values for Turtle properties, strings in Project defaults. |
VisitMode |
EnumSym: No, C_A, A_C, C/A, A/C, C, A, SD, SDRK4. Project uses the corresponding strings; SD variants need compatible integration code. |
Dir |
Named direction slots E, SE, S, SW, W, NW, N, NE with theta (radians), dx, dy. Diagonal dx/dy are integer grid offsets, not unit-length velocity vectors. |
For example:
import {Dir, Shape, VisitMode} from "@nwk/api/nlsimmain.js";
const eastHeading = Dir.E.theta;
const circle = Shape.Circle;
const patchOnly = VisitMode.C;
Inherited instance helpers include newCoords/path, filtering/mapping,
selection/extrema, and aggregation. Inherited static utilities include
random/math functions and NLRoot sampling/statistics. Static inheritance does
not make this.random() valid: call NLRoot.random() or another appropriate
class import. See NLRoot reference, tools and utilities, and
NLRoot source. This page does not certify every
legacy inherited helper or collection shape.
12. Verification
The guide tests check every current NLSimMain prototype member is mentioned here, execute this page's Counter, parameter/output fragments and supporting imports, and test the documented query/activation/clearing/Store/population distinctions. Existing guide checks exercise Main initialization, customization, live parameters, repeated reset, birth/death timing, radius/neighborhood contracts, and chart payload shapes.
Inventory coverage is not proof of every behavior: internal/legacy entries are source-classified, not recommended or exhaustively runtime-certified. No browser layout, all-mode integration, or arbitrary listener cleanup is implied by these headless checks.