jonnify·bcs /bcs/ideas/ecs-to-bcs/the-translation-table

B1.4 · dive — the translation table

Both dialects, one convention.

The series speaks ECS and BCS deliberately, with the translation table as the Rosetta line: six terms, each mapped so an entity-systems veteran reads Part II without a glossary. The litmus question names the migration moment; hybrids stay legitimate strictly behind the boundary.

Source: content/bcs1.4.md · Who, When, How, Decisions. The table is the convention of record.

The lookup. Select an ECS term to read its BCS translation and the note that travels with it.
entity an identity component a property in a system’s table system a system, with a hard boundary world the supervision tree + the bus archetype data composition (Part II, 2.4) query across components a message join by identity
readout · Select a term. The full table is rendered statically in §1 below — six rows, the convention of record.
§1

The table

content/bcs1.4.md · Who
ECS termBCS translation
entityan identity
componenta property in some system’s table
systema system — now with a hard boundary
worldthe supervision tree plus the bus
archetypedata composition — Part II, Chapter 2.4’s subject
query across componentsa message join by identity

In the trading vocabulary: the order is an ORD identity; its fills, its risk checks, and its book position are properties in three systems; the matching sweep is a system consuming messages about ORD names — and every one of those names is valid in the save file, on the socket, and in the store, because those are no longer different places to be valid.

§2

The litmus, exercised

content/bcs1.4.md · When

Keep classic ECS where it is the right tool: one process, a frame loop, identities that may die with the run. The litmus is a single question: must this id outlive the process? The first yes — the first save, the first socket, the first row — is the migration moment, and it arrives on day one for anything trading-shaped.

Four cases at the litmus. Select one; a pure function answers from the case’s facts.
case the first save? the layout will not be back the first socket? machine B is listening the first row? a foreign key is a name verdict any yes migrates
readout · Select a case. Static verdicts: a renderer’s particle keeps its handle; an order migrates on day one; a system’s private iteration index is the legitimate hybrid; a world that saves migrates at the first save.
§3

The migration, in code

content/bcs1.4.md · How · Decisions

Elixir. The world is a supervision tree and the component array is the substrate’s private ETS table, keyed by the name itself — at which point the allocator’s whole apparatus disappears. There is no slot to allocate, no free list, no generation to bump: minting is allocation, and reuse is impossible by law rather than improbable by pattern.

# handle era: {index, generation} into a system-private array, valid this run
# name era:   the key is the identity; reuse cannot be expressed
:ok = PropertyStore.put(:positions, EchoData.Snowflake.next_branded("PRT"), position)

Go. Weissflog’s shape survives nearly verbatim — system-private storage, a sole owner, only identities crossing — with two edits from Chapter 1.1: the channel edge replaces the function boundary as the place the gate lives, and the branded string replaces the index-generation pair. Iteration keeps its locality through the owner’s sorted key slice; the cross-component query becomes a message join by identity, and the cost is stated with its mitigation: names that must be read together can be co-placed by the same hash32 both runtimes share, and asks batch.

// handle: uint32(idx) | gen<<20      -> valid in this process, this run
// name:   brandedid.MustEncode("ORD", snow) -> valid everywhere, indefinitely

The decisions carried from the chapter: generation counters are rejected by subsumption — detection of reuse is replaced by prevention of reuse, and a probabilistic guard for an impossible event is deleted weight. The index never rides in the name — placement is hash32’s job, derived on demand. Internal handles are permitted strictly behind the boundary — clause one makes a system’s private indexing nobody’s business; the law forbids handles crossing, not handles existing. And the ECS vocabulary is adopted with translation, so the series speaks both dialects deliberately.

§4

References

sources · related

Sources

Related