B1.1 · dive — the six gates
Six crimes, six refusals.
The rung's check script attempts the architecture's canonical crimes on stage and records each refusal; the committed transcript closes PASS 6/6. This dive reads it line by line.
Source: content/bcs1.1.md, quoting bcs_rung_1_1_check.out; the check script is bcs_rung_1_1_check.exs, committed beside its output.
The transcript
bcs_rung_1_1_check.out · verbatimG1 reach-through ok -- outside lookup -> ArgumentError, insert -> ArgumentError; info reports protection: :private (metadata visible, data refused) G2 traveling-object ok -- map/tuple/integer ids -> FunctionClauseError 3/3; inter-store message carried {:entity, id} only; :burned recorded BRL0NsHLqGoDbd G3 typed ok -- rejects 4/4 as :invalid; GRD id on BRL store -> {:error, :namespace}; raising twin -> NamespaceError G4 ordered ok -- page_desc(2000) == byte-sort desc over 2000 minted ids; store holds no clock G5 placed ok -- placement(USR0KHTOWnGLuC) -> 234878118 G6 canon ok -- self_check! -> {:ok, :native} (init gates on the same check) PASS 6/6
Seven lines, committed beside the check script that produced them. A gate is not a claim about what the substrate would refuse; it is a recording of what it refused, on stage, with the platform's own error in the log.
Reading the lines
content/bcs1.1.md · WhatThe reach-through
An outside process attempts lookup and insert on the store's table; the
VM refuses both with ArgumentError. info returns full metadata —
protection: :private included — to a process that cannot read one row: metadata visible,
data refused.
The traveling object
Map, tuple, and integer ids die in pattern matching — FunctionClauseError 3/3 —
before any store code runs. The inter-store message carried {:entity, id} only; the
receiving store recorded :burned under BRL0NsHLqGoDbd.
Typed
Four malformed inputs reject 4/4 as :invalid; a GRD id presented to the
BRL store is a typed refusal, {:error, :namespace}; the raising twin raises
NamespaceError. Coarser than the wire contract's four atoms by decision — no second
parser.
Ordered
page_desc(2000) equals byte-sort descending over 2000 minted ids; the store holds no
clock. Chronology comes from the keys — the ownership dive reads the mechanism.
Placed
placement(USR0KHTOWnGLuC) → 234878118 — the contract's canonical
vector, reproduced by the store's arithmetic.
Canon
self_check! → {:ok, :native}; init gates on the same check, so a
store that cannot prove its codec refuses to start.
The gate, exercised
a model of the boundary pathThe boundary path runs shape check, parse, namespace check — in that order. The model
below runs that classification as a pure function over five fixed candidates presented to a
BRL store. The first two ids are the transcript's own; the rest demonstrate the refusal
classes. The BEAM speaks everything past the namespace coarsely as :invalid — the
no-second-parser decision.
BRL id is admitted; the canonical
USR vector parses cleanly but refuses as {:error, :namespace}; a tuple dies
as FunctionClauseError; a 14-byte string with a bad charset and an 11-byte string both
collapse to {:error, :invalid}.References
sources · relatedSources
- Erlang/OTP — the ets moduletable protection levels including private — the mechanism behind G1
- The Go Project — Share Memory By Communicatingthe same law in Go's clothing — the third dive's subject
- Chassaing — Functional Event Sourcing Deciderthe decide/evolve pattern the manuscript plans Part VIII to rethink on BCS
Related
- B1.1 — The System Substratethe module hub; the full proof in context
- B1 — Ideas Behindthe chapter landing; the Part I arc
- BCS — the course homethe law, the id anatomy, the chapter map