Appendix · Issue 1

The Parts Catalog

Every tag and every system in Nereu, live from marketplace/tags/ — the same registry the engine loads, so this can't disagree with what you get. Click any part to inspect what it is, the systems it turns on, and the dials it hands you.

Tag tiers

click a tag to inspect it

Inspector

Click any tag. This panel mirrors the editor's inspector: what it is, which systems it injects, the dials it hands the user, and its wiring rules.

Systems — injected by tags, tuned by modifiers

one row per system

A system never appears in the UI — a tag invites it in, and the tag's config is the modifier. Where several tags share one system, the differing config keys are highlighted: those ARE the modifiers.

Your L0–L3 → the shipped model

mostly isomorphic — the deltas are the decisions
L0 · AssetThe implicit atom — “everything is an asset.” Not a tag; it's the entity itself. Already true.
L1 · TransformAlready tags: position, rotation, scale exist as layer-asset tags, invisible in the UI. Your instinct is already the shipped model.
L2 · Identity atomsThe noun layer (33 tags: player, npc, vehicle, coin, the cameras…) plus the 5 explicit family tags (camera, audio, particle). This is where the model is least landed — see decisions 1–3.
L3 · CapabilityThe ability layer (38 tags: platformer, acrobatic, ai, vision, walk, the camera effects…). Composes onto an L2 identity.
Systems + modifiersShipped as data: every tag carries a systems field; the per-tag config is the modifier. Four camera nouns already share ONE tps_camera system with different configs — your Kart/Arcade/Realistic idea, live.

LANDED 2026-07-10 — the ladder v3

full spec: docs/design_specs/ats_hierarchy_landing.md

The landed shape (8-agent genre + theory pass)

L0 Asset → L1 Transform → L2 Kind (one per asset) → L3 Slots (per-kind, single-choice, may be empty, Rules can reassign at runtime) → L4 Abilities (stackable, kind-agnostic) — plus Aspects (audio, particle, light: attachments anything can wear — the torch wears all three) and States (data-only tags Rules flip at play time).

Kinds v1: Character, Vehicle, Camera, Item (née Pickup), Weapon (new — gun|sword|bow…), Terrain (sculpted|hex|tiles), Track (kits carry the flavor: road, race, railway), Prop (no slots — pure ability stack), UI. Building reserved for RTS. driver (player|ai|commanded) is one shared slot across Character and Vehicle. One ACTIVE camera per player at any instant (Law 9).

Outstanding: the aspect cap at three, awaiting Arturo's confirm (spec §7.6). This map still renders the CURRENT registry — it re-keys onto the v3 axes when migration starts.

The original five decisions (historical)

superseded by the landing above

1 · One identity per asset — enforce it?

Your “L2 tags can't be the same” rule. Today each noun is singleton (you can't wear coin twice) but nothing stops coin + hazard on one asset — identity exclusivity is per-tag, not per-asset. Some combos are deliberate (a spiky coin?); most are nonsense.

Recommend: exactly one L2 noun per asset, enforced by the tag engine (adding a second one offers a swap). Deliberate hybrids become L3 abilities (hazard arguably IS one — it hurts you, it doesn't define you).

2 · Families: real tags or just shelves?

Only 3 of 9 families exist as actual tags (camera, audio, particle); character/vehicle/pickup/world are implicit groupings. Inconsistent: some assets wear a family tag + a noun, others only a noun.

Recommend: families become shelves, not tags — pure organization in this map and the store, never attached to assets. The 3 family tags fold their wiring into their nouns. One less invisible layer for users; your L0–L3 story stays exactly four levels.

3 · Is kart an identity or a driving style?

Today kart is a noun wiring its own kart_controller system, beside vehiclevehicle_controller. Your model says: Vehicle is the L2 atom, and Kart/Arcade/Realistic/Tank are modifiers on one VehicleControllingSystem.

Recommend: your version. One vehicle noun, one vehicle-controller system, a style modifier (kart | arcade | realistic | tank). kart the tag survives as a preset over vehicle — same pattern as camera nouns over tps_camera. This is the strongest single simplification available, and it sets the precedent for every future “variant” ask.

4 · Player and NPC: identities or drivers?

Your L2 lists Player and NPC as atoms. The NPC-AI work concluded the opposite: character is the identity, and WHO controls it (player input vs ai) is a driver — swap the driver, same character. The roadmap already carries “unify player movement tags onto character.”

Recommend: keep both truths at different altitudes: users say Player/NPC (they're real words), the model stores character + driver. player and npc stay as tags-as-presets: player = character + you-drive, npc = character + ai. Nothing to unlearn, and the driver swap (“let me possess the goblin”) stays one move.

5 · One word: “systems” (and users never see it)

The code says systems, the docs say behaviors, the inspector says SYSTEMS, script tools say scripts. Your framing — tags invite systems in, modifiers tune them — is the cleanest sentence anyone has produced for this.

Recommend: standardize on system everywhere engine-side; retire “behavior” from docs over time. User-side rule stays absolute: users touch tags and their dials, never system names — the Advanced section remains the only peek.

Sources: marketplace/tags/*.json (data), docs/tag-hierarchy.md (current model), docs/npc-ai.md (driver argument), ROADMAP → NPC AI deferred items. This page renders the real registry — when a decision lands, regenerate it and the map can't lie.