JavaScript, indexed by the behaviour rather than the syntax.
Scope, coercion, prototypes and the event loop — the parts of the language that decide what your code actually does — beside the operations that exercise them. You declare where you are standing, and the rows around you come back.
The model holds the domain; your org holds its own light on it.
A Hue Model is the world model of a domain — its rows, the positions they stand in, the two sides they fall on, and, where the domain has one, the source of truth that settles a row. There are no people in it. It is a model of the world, not of anyone in it, and it has no cutoff — only a last-visited state. You stand somewhere in it and it answers by position.
Stand somewhere, and the rows come to you
You copy a position out of the chamber's own map and send it back. No words are matched and nothing is guessed on your behalf — the door reads structure the index already carries, and answers with the neighbourhood you are standing in.
The rows below arrived with no search term at all, by position alone.
SCOPE AND CLOSURES › Declarations & Hoisting
placed
8
observed
0
unobserved
8
reached
8
the room you named
hoisting
declarations lifted to the top of scope
feature
temporal dead zone
let/const pre-init access error region
feature
var
function-scoped, hoisted declaration
feature
let
block-scoped declaration
feature
const
block-scoped immutable binding
feature
the rest of its floor
closure
a function plus its captured lexical environment
feature
lexical scope
scope fixed by source position
feature
captured binding
the variable binding a closure holds
feature
COERCION AND EQUALITY
placed
7
observed
0
unobserved
7
reached
7
the rest of its floor
type coercion
implicit type conversion
feature
strict equality
=== identity without coercion
feature
loose equality
== with abstract coercion
feature
NaN
not-a-number, unequal to itself
feature
truthy
values coercing to true
feature
falsy
values coercing to false
feature
nullish coalescing
?? defaulting only null/undefined
feature
A position the chamber does not hold comes back as a question
NOT A REAL ROOM→UNKNOWN_CATEGORY
19 rooms
The door never substitutes a nearby name. An unknown position returns the map instead, so the next thing you send is a place that exists rather than a guess that looked close.
Every row arrives already knowing its state
The reading is not a ranked list. Each row comes back in one of three states, and the state is the useful part — it tells you whether to build on the row, to go and look, or to honour it before you do either.
Zero point
The contract the work must implement. It is present whether or not anyone went looking for it, and it constrains the answer rather than decorating it.
Observed
Rows your org has already returned on. A lit row carries your org's reading as well as the chamber's.
Unobserved
Reached, and your organisation has not returned on it yet. This is the invitation, and it is where a return is worth the most — every one of them is a row you can light.
Two sides, and an ask lands on one of them
JavaScript is indexed as how the language behaves and as what you do with that behaviour. The two sides never share a room: COERCION AND EQUALITY is why == does what it does, and EQUALITY AND COERCION OPERATIONS is the comparison you are about to write.
The behaviour
SCOPE AND CLOSURES8
COERCION AND EQUALITY7
EVENT LOOP AND SCHEDULING5
PROTOTYPES AND INHERITANCE5
ASYNC AND PROMISES4
VALUES AND MODULES4
NUMERIC PRECISION3
THIS BINDING3
SPREAD AND DESTRUCTURING2
PROMISES1
The operations
CLOSURE OPERATIONS
3
EQUALITY AND COERCION OPERATIONS
3
EVENT LOOP OPERATIONS
3
PROTOTYPE OPERATIONS
3
THIS BINDING OPERATIONS
3
ASYNC OPERATIONS
2
COPYING AND DESTRUCTURING
2
NUMERIC OPERATIONS
2
MODULE OPERATIONS
1
Most JavaScript surprises are not syntax errors. They are the language behaving exactly as specified in a room you were not standing in — which is why this chamber is cut by behaviour.
Seat levels
A Hue Models seat opens every Hue Model — the domains here today, and the ones that follow them.
Per seat, per month, pooled across the org — so one busy week never costs a quiet colleague their work. Lighting a row — returning what you observed — is the Observer's Index.
Before you compare two models
A hue identifies a row within a model, and never across them.
Bands are allocated per model and some overlap, so one hue can appear in more than one model. Each model is its own coordinate system, so two rows sharing a hue in different models are not related.