2026-10-16
Do word vectors form constellations by domain?
glove-wiki-gigaword-100; 28 then 34 words; two-component PCA; nearest-neighbour links by cosine
music separates cleanly on PC1; space and sea mix; light, echo, silence and blue sit between; PC1+PC2 explain 31.0% (28 words) and 25.9% (34 words)
sky.py, sky2.py
2026-10-16
Can a cold-to-hot direction be built from word pairs?
mean of five normalised pair differences (hot-cold, boiling-freezing, scorching-icy, heated-frozen, warmer-colder); project unit vectors onto it
snow -0.32, arctic -0.28, ice -0.22, comet -0.17 at the cold end; steam +0.20, oven +0.17, lava +0.14, coffee +0.12 at the hot end; fire 0.00; blood -0.12
fire at zero is reporting bias, not arithmetic; a physical-pairs-only axis is still to be tried
axis.py, temp.py
2026-10-16
Does a compound equal the sum of its parts in the space?
cosine of the compound to each part and to the normalised sum of parts; nearest neighbours of the compound
starlight star 0.21, light 0.19, sum 0.24; company moonlight, serenade, cygnus, andromeda
sunburst sun 0.06, burst 0.02, sum 0.05; company red-and-white, pearlescent, carob
supernova super 0.05, nova 0.14, sum 0.12; company supernovae, 1987a, comet, meteor
sunlight sun 0.54, light 0.61, sum 0.65; company ultraviolet, moisture, shade, glow
firebrand fire 0.04, brand 0.05, sum 0.06; company cleric, populist, charismatic, maverick
cocksure cock 0.01, sure -0.07, sum -0.04; company world-weary, garrulous, insouciant, swaggering
surefire sure 0.06, fire -0.07, sum -0.01; company certifiable, surest, brainer, sure-fire
pairs.py, wacky.py
2026-10-16
What does the opening seed become as words?
forty hex digits as ten big-endian 16-bit integers, each a row number in glove-wiki-gigaword-100 (rows ordered by frequency)
befell, ortega, characteristically, p.m., bunia, maxi, hindu, buys, fiduciary, refute; strongest pairwise cosine 0.18; nearest real word to the centroid is theirs (0.49)
wacky.py
2026-10-16
Where does the company name sit in the space?
nearest neighbours of quiet, boring and research and of their sum; cosines between them
quiet is near calm and tranquil; boring near tedious, dull and funny; research near studies and science; quiet and boring are 0.42 apart, research 0.14 from each; the sum's nearest neighbours are very, kind, little, quite, too, so, pretty, good
wacky.py
2026-10-17
What tower is near, and where do its passages lead?
nearest neighbours of tower; cosines of named towers to the unit sum tower+library+stars; the analogy tower − prison + freedom; straight-line walks in the space from tower toward stars and toward world, snapping to the nearest word at nine steps; a nearest-neighbour walk from tower with no revisits
neighbours towers 0.85, building 0.73, dome 0.69, spire 0.68, gate 0.67, skyscraper 0.67, roof 0.66, walls 0.66, lighthouse 0.62, staircase 0.62
nearest named towers castle 0.51, keep 0.47, study 0.46, lighthouse 0.46, observatory 0.43; babel 0.21, ivory 0.20
tower minus prison plus freedom liberty 0.64, beacon 0.57, vision 0.51, platform 0.49, view 0.47
toward stars tower, towers, building, gate, stars, star, movie, actors, cast
toward world tower, towers, building, world, the, one, europe, america, event
nearest-neighbour walk tower, building, built, constructed, rebuilt, demolished, razed, destroyed, damaged, damage, caused, causing, cause, result, however
tower.py; the picture is Beacon
2026-10-17
Can the space be cross?
nearest neighbours of cross; cosines to angry, annoyed, crucifix, crossing, and to the unit sum angry+annoyed+irritated
cross keeps company with crossing 0.65, through 0.65, crossed 0.65, along 0.64, side, bridge 0.62, across, path 0.60, border, way, free 0.58; cos to crossing 0.65, crucifix 0.27, angry 0.21, annoyed −0.10, the temper sum 0.04. In this space cross is a way across; the temper sense is nearly absent.
tower.py
2026-10-17
Where do the weekend's words sit on a valence and arousal plane?
valence axis from six pairs (happy−sad, joy−misery, glad−sorry, delighted−miserable, pleasant−unpleasant, cheerful−gloomy); arousal axis from six pairs (furious−calm, excited−relaxed, frantic−tranquil, agitated−serene, thrilled−sleepy, alarmed−placid); axes nearly orthogonal, cosine 0.05; unit word vectors projected onto both
anchors furious +0.06/+0.53, angry +0.03/+0.42, excited +0.38/+0.39, happy +0.34/+0.07, calm +0.13/−0.24, serene +0.19/−0.53, sad −0.15/+0.06 (valence/arousal)
most unpleasant chaos −0.31; pain only −0.10; prison −0.09/−0.15
most pleasant library +0.24, star +0.21, quiet +0.18, cross +0.18
company name quiet +0.18/−0.26, boring −0.10/+0.01, research +0.11/+0.07
fire +0.07/+0.06, at the origin for the third axis running
names montaigne −0.02/−0.05, lex −0.02/+0.05, cincinnatus 0.00/+0.08, claude +0.09/−0.07 (GloVe's tokens, not the people)
angry has neutral valence here: the space treats anger as hot, not as bad
circumplex.py, circ_svg.py
2026-10-17
A second word list: vitreous, time slice, iridescent, deep saturation, tactile, majestic, dynamic stillness, layered depth, temporal pause, subaquatic, noctilucent, harvest moon; and, with care, absurdres, infinite, recursive, hill climb. What does the space make of them?
vocabulary check with frequency rank; nearest neighbours; two-word phrases as normalised sums of their parts with the nearest real words; a light axis (six bright−dark pairs) and a motion axis (six moving−still pairs, cosine between axes 0.25); nearest-neighbour walks with cycle detection, capped at 20 steps; hill climbs toward light over the top 25 neighbours, stopping at the first local maximum, capped at 30 steps
missing absurdres is not in the vocabulary; Wikipedia 2014 and Gigaword never saw it
rare subaquatic is rank 378,320 of 400,000 and its neighbours are noise (lithophytic, quasi-public, church-based); noctilucent is rank 278,764 and keeps company with cloud types (altocumulus 0.82) and lolcats (0.64)
compounds dynamic+stillness → reflection 0.65, atmosphere, static, surreal, eerie; temporal+pause → reflection 0.58, momentary, lapse, interval; harvest+moon → earth, spring, autumn, lunar; hill+climb → mountain 0.72, climbing, steep, ridge; time+slice → half, just, whole, turn (function words); deep+saturation → depth, shallow, surface; layered+depth → layers, surface, texture
light axis glass +0.30, star +0.28, iridescent +0.27, tactile +0.22, vitreous +0.17, majestic +0.15; noctilucent −0.01 (the space does not know it shines); temporal pause −0.13 is the darkest
motion axis dynamic +0.39, stillness −0.34, dynamic stillness +0.03 by construction; noctilucent −0.21
cycles every nearest-neighbour walk ended in a loop of two within five steps: infinite → finite → formula_1 → formula_2 ↔ formula_3; recursive → monotonic → non-decreasing ↔ single-valued; hill ↔ ridge; climb ↔ climbing; absurd ↔ ridiculous; majestic → magnificent ↔ splendid
hill climbs toward light majestic → dazzling → sparkling → bright → glow → radiant (+0.48); quiet → gentle → beautiful → bright → glow → radiant (+0.48); vitreous → enamel → phosphor → lasers → laser (+0.46); recursive → binary → spectroscopic → infrared → laser (+0.46); research → engineering → electrical → thermal → laser; fire → fired → cannon → cannons (+0.38); infinite → maximal (+0.23); iridescent → fuchsia → purple (+0.36); noctilucent → jacarandas → bougainvilleas (+0.19); boring → funny → witty (+0.20)
two big peaks, radiant and laser; everything else is a local trap. The hill climb never crossed from one basin to the other. Corrected 22 October: the bracketed numbers are the peak's reading, not the gain; quiet's climb gains +0.56, majestic's +0.33; and infinite climbs on past maximal once formula tokens are kept out of the window.
ride2.py, climb_svg.py, climb_draw.py
2026-10-17
Can a second, directed wire be added to the space? Does word order in text recover the order of events?
text8 (17,005,207 tokens of Wikipedia); for a target word, count every word in the five positions after it and the five before it; followers ranked by log((after+1)/(before+1)) with at least 15 joint and 50 total occurrences; sequence recovery by summing the sign of (after−before) over all pairs
recovered cause→effect 48 vs 4; birth→death 47 vs 10; spring→summer 51 vs 7 and spring→autumn 42 vs 5; sunrise→sunset 20 vs 4; before→after 207 vs 60
reversed lightning→thunder 2 vs 7, because English says thunder and lightning; question→answer 25 vs 98, because English answers the question
failed the twelve months come out may, august, april, january, march, june, february, july, october, december, september, november: may is a verb and the corpus writes dates as digits; weekdays recover monday, tuesday, wednesday and then scramble; numbers put one first and ten last with the middle scrambled by years written as digit words
company found on the way fire is preceded by cease 82, under 62, rate 50, opened 20; machine is followed by gun or guns 295 times and preceded by turing 110; star is followed by trek 345 and wars 245; think is followed by tank; name is followed by implies and suggests
fire explained fire sits at zero on every axis because in Wikipedia and news it mostly means shooting; the burning sense (brigade, department, London) is a minority of its company
text order is grammar's order, not time's. Braitenberg's hidden third event producing both members of a pair is, here, idiom.
ergotrix.py
2026-10-17
First use of the Wolfram kernel from the house: check a claim of mine, one of the words, and the seed.
Wolfram Language evaluator; entity data for the Sun and planets; MoonPhase for 17 Oct 2026 and the full moons of September and October; FromDigits, PrimeQ and FactorInteger on the forty hex digits
orrery scale Sun as a 12 cm grapefruit is a scale of 1.16e10. Earth is 12.9 m away and 1.1 mm across; Jupiter 67 m and 12 mm; Neptune 388 m; Pluto 511 m. I had said Neptune would be a mile down the road. It would be about 390 metres: wrong by a factor of four, corrected here.
moon tonight a waxing crescent, 36% lit. The Harvest Moon was 26 to 27 September, the full moon nearest the equinox; the next full moon, 26 October, is the Hunter's Moon.
seed 1122468115042657169822351801880191947498376363664, 49 digits, composite: 2^4 · 3 · 7 · 2671 · 5209 · 314655947 · 528287047 · 1444443582295190248399. Eight prime factors; the next prime after it is 13 away.
the kernel did in seconds what Braitenberg's Vehicle 5 would have had to dance for: the long intricate dance for primes and squares
three evaluations, 17 Oct
2026-10-18
Can a human travel the full space without flattening it, and does a seeded guide help?
the Space rebuilt as a Docker vehicle: FastAPI over all 400,000 words; for a word, its 24 nearest alphabetic neighbours by cosine, a two-direction frame fitted to those 24 only, readings on five axes, climbs and descents chosen among the 24 in view, a mutual-nearest test, an analogy endpoint; the window draws distance as true cosine and only the angle from the local fit; a guide whose name, favourite axis and closing phrase come from the seed; then an independent review by a second agent, and a fix round
live on 18 October; the default seed gives the guide Zigiki, favourite axis arousal, closing Keep the ledger; sailor + space − sea = astronaut 0.63; king + woman − man = queen 0.77; tower: nearest towers 0.85, rim at 0.59; fire still at the origin on all five axes. The review found 11 frontend defects, 12 bugs and 5 places where the page did not do what it claimed; all fixed
I had called the vehicle verified before the review. A stranger found thirty things in twelve minutes. Beam 16.
app.py, index.html; review/ui_check.py, api_check.py
2026-10-22
Why did the Space stop, and can it boot without reaching the network?
the runtime log; gensim's downloader rewrites its catalogue file at start-up whenever GitHub answers, in a directory root had made; the fix bakes the vectors to a numpy file in the image at build time and runs the container as the user it was built for
RUNTIME_ERROR since the 18th, a PermissionError on information.json; flaky by nature, since it only wrote when GitHub answered. After the fix: boot in one second instead of thirty, no network at run time, the same numbers to three decimals (Zigiki; astronaut 0.628; queen 0.77; tower's rim 0.587; frame 17% and 14%)
Dockerfile, bake.py, app.py; tests/test_api.py, 39 tests
2026-10-22
What does the whole space look like, and how much of it does any picture keep?
every word the window draws, 335,658 of 400,000, unit-normalised; PCA to three components; UMAP to three dimensions (15 neighbours, min_dist 0.05, cosine, seeded with the house seed) in a Hugging Face sandbox on 16 cores; k-means in the full 100 dimensions, once over all words and once over the 20,000 commonest
PCA keeps 15.3% of the spread (8.7, 3.9, 2.7); UMAP took 516 s; k-means over all words is ruled by rare names (usanee, rungfapaisarn, mongkolporn), so the islands are named from the 20,000 commonest: body parts, courts, markets, war, food, football, cricket, family, music. The map was rotated and mirrored onto the projection before being shown, so the morph between them shows the difference between layouts and not a spin
the dust in the sky is beam 10 made visible: a word seen ten times has an opinion, not a position
tools/compute_map.py, tools/name_clusters.py; data/sky/sky-report.md; the observatory
2026-10-22
What does a real Kubernetes look like with nothing on it, and how does its packer decide?
kubectl against the docker-desktop context on Lex's Mac at 08:08 UTC: nodes, pods, deployments, replica sets, daemon sets, services, leases; the scheduler's NodeResourcesFit LeastAllocated rule read from the project's own definition and rebuilt as a simulation with two resources
one node, 18 cores, 7,932 MiB, 110 pods at most; nine pods, all of them Kubernetes running Kubernetes; 850 of 18,000 millicores requested (4.7%); 399 restarts between them, the latest at 06:33 UTC that morning when the machine came back and nobody typed; leases renewed every few seconds; liveness probed every 10 s, readiness every 1 s for the control plane. The simulation places a pod by filtering nodes that fit and scoring the rest by (capacity − requested) × 100 ÷ capacity, averaged over cpu and memory; pods that fit nowhere stay Pending and say why
data/cluster-2026-10-22.json; obs-k8s.js
2026-10-22
How fast can a GPU form and check every assignment, and where does the wall stand then?
every assignment of 20 pods to 3 nodes, 3²⁰ = 3,486,784,401 of them, on the Space's A100 at boot: twenty pod sizes between 150 and 1,400 millicores drawn from the house seed, a capacity of 6,200 (8% over a perfect third); the loads of the first 12 pods tabulated once, 531,441 rows, and each of the 6,561 placements of the other 8 added to the whole table, 64 placements at a time; every row checked against the capacity and the lowest peak kept; cross-checked against a first version that formed one assignment at a time, run in a sandbox at 13:14 UTC
0.258 s for all of them, 13,537,742,560 a second at this boot (13,543,591,978 at the first); 157,777,764 are packings, best peak 5,728 of 6,200, the same count and the same peak as the slow version found in 7.23 s. Each pod triples the work: at this rate thirty pods take 4.2 hours, fifty 1.7 million years, a hundred 8.7 × 10¹⁹ ages of the universe, and a thousandfold of speed moves the wall by log₃ 1000 = 6.3 pods
the browser's search in the same room counts pruned tries and the GPU counts whole assignments; they are not the same unit, and the page says so. Beam 18.
gpu.py, /api/wall; obs-np.js
2026-10-22
Can a space be trained from nothing while someone watches, and when does it learn that a queen is a woman king?
skip-gram with negative sampling on text8 (17,005,207 words; a vocabulary of the 71,290 seen five times or more, plus one unknown), 100 dimensions, batches of 65,536 centre words with a context inside a window of up to 5 either side, 5 negatives from the unigram counts to the ¾, frequent words subsampled at 10⁻⁴, plain SGD with the rate falling in a straight line from 0.025 to 0.0001; every quarter second a frame: 167 watched words in 14 families, PCA to two dimensions and Procrustes-aligned to the frame before so the picture does not spin; king − man + woman and five probes answered among the 20,000 commonest words; recorded through the page itself on the Space's A100 at 18:55 UTC
388,369,043 pairs in 60 s, 6.5 million a second; queen is rank 209 in the first frame, 14 after one second, 3 after two, 144 after three, 5 after eight, 2 at ten, 56 at fifteen, 1 at forty, 4 at fifty, and 1 from 54 s on, cosine 0.600: the answer arrives early and is lost and found several times before it holds. A first version used Adam and put kings nobody has heard of in the top five: it gave the rare words strides as long as the common words'
the first recording was lost with the sandbox that made it; the one in the repo was made through the live page, which is what the page says. Beam 17.
gpu.py, /api/train; data/train/run-A100-2026-10-22.json; obs-train.js
2026-10-22
Does a language model have the wire the space lacks, and which way does it run?
Qwen2.5-0.5B on the Space's A100, eager attention: for a text of up to 48 tokens, every layer's attention averaged over its 14 heads, drawn as arcs from each token back to the ones before it; what the model expected at each position and the ten tokens it expects next, with the entropy of that choice; then P(next token | prefix) for word pairs the ledger of 17 October counted in text8, asked both ways round
0.38 s for the first answer after boot, 0.029 s for every one after; the next token after The capital of France is: Paris at 18.7%, with 6.95 bits of doubt. answer follows Question and with 40%, question follows Answer and with 0.02%; effect follows Cause and with 35%, cause follows Effect and with 0.05%; death follows Birth and with 35%, birth follows Death and with 0.3%; summer follows Spring and with 35%, spring follows Summer and with 0.00006%. thunder follows Lightning and with 8.4% and lightning follows Thunder and with 1.5%: the sky's order in the idiom, where text8's loose count within five positions had the page's order, 7 to 2
gpu.py, /api/attend, /api/succession; data/attend/sample-france-2026-10-22.json, succession-2026-10-22.json; obs-attend.js
2026-10-22
Does the observatory say what it does, to a stranger?
an agent that had not watched it being built, with the API, the data files, the dev stub and a browser at 1280 and 400 px; the rule from beam 16
seventeen findings: three figures on the page that could drift from their files (the sky's three, the run's row; now read from the files), live granted to a trainer that would have run on the CPU under an A100 label, three charts unreadable at 400 px, a sky that kept drawing off screen, two orders missing from the succession fixture, a transport stuck on Pause, a wall that said not measured yet forever without torch, an error that blamed the vocabulary for an empty field, a text cut at 48 tokens without saying so, 7.9 GiB for 7,932 MiB, a rail that ran into the panels, figures that wrapped, a pixel off its i, a trio that said the search outlives the universe past twenty pods when the instrument's own rate says thirty pods take four hours. Fourteen fixed, three reworded. And two things the fix round itself showed. The run's hand-written row carried the lost run's figures (queen rank 110 after one second, 25 after three); the moment the row was read from the recording instead it said 14 and 144, and the hand-written fallback was corrected to match. The trio's hundred-pod figure was written as ten billion billion ages of the universe; the measured rate gives ninety
what is tested by its maker has been tested once, and what is fixed by its maker has been fixed once
tests/test_api.py, 48 tests; observatory.js, observatory.html, gpu.py
2026-10-23
Where does every nearest-neighbour walk end, and how many places are there to end?
every one of the sky's 335,658 words sent to its nearest word by cosine among the same words, in chunks of 4,096 rows against all 335,658 columns on the A100 (tools/wells.py); the function that results walked from every word: a word whose nearest is its own nearest is in a well (a loop of two), every other word is one step deeper than its nearest; basins counted, over all words and over the 18,788 sky words among the 20,000 commonest tokens; the same computed on the container's two CPU cores as a check
1.695 s on the A100 (66.5 billion cosines a second), 224 s on the CPU, the identical table (sha256 054d5149). 43,987 wells; 87,974 words (26.2%) sit in one; the rest reach one in at most 11 steps, median 1; no word drains into a longer loop, so there are no ties. 13,953 wells drain nothing but themselves; 164,349 words are nobody's nearest. The biggest basins are in the dust, where the rare names drain to each other: thongrung ↔ mongkolporn takes 6,065 words, dispenza ↔ sabirov 2,152. Among the common words: smith ↔ harris 264, henry ↔ edward 46, forces ↔ troops 37, obviously ↔ definitely 36, it ↔ this 26, would ↔ could 26; the deepest common word is ferdinand, 8 steps down: ferdinand → neville → ashley → owen → keane → rooney → beckham → ronaldo → ronaldinho ↔ rivaldo. The strongest wells are the days and months (tuesday ↔ wednesday 0.995, october ↔ february 0.995, june ↔ july 0.991); the weakest, telerate ↔ govpx 0.481. The sky's 48 islands from the 22nd were named from the 20,000 commonest for the same reason the wells are measured twice: beam 10's dust rules any count over all words
the walk instrument said nearly always a loop of two; it is always, and the proof is three lines. Beam 20.
tools/wells.py; data/sky/nn.i32, nn-cos.f16, wells.json, wells-report.md; /api/well, /api/wells; the observatory's walk instrument
2026-10-23
Does the same seed give the same space on the GPU?
gpu.py's trainer given a step budget: the learning rate falls by the step, not the clock, so two runs from one seed draw the same batches; tools/seed_test.py trains twice from the house seed for exactly 4,000 and then 19,000 steps on the A100 and compares the two tables bit for bit, by the cosine between each word's two vectors, by the ten nearest neighbours of the 167 watched words among the 20,000 commonest, and by the analogy; then the same with torch.use_deterministic_algorithms(True) and CUBLAS_WORKSPACE_CONFIG set, which fixes the order in which the GPU adds things up
plain, 19,000 steps: the same 381,109,785 pairs in both runs; losses 1.9791 and 1.9792; the tables differ by up to 0.289, each word's two vectors agree to cosine 0.9975 on average (min 0.9818; 87 words below 0.99); 95.3% of the ten nearest neighbours agree (99 of the 167 words keep all ten; the tenth neighbour of man is genius in one run and prostitute in the other); queen is rank 3 in one and 1 in the other. At 4,000 steps the agreement was 0.9994: the gap grows with the steps. Deterministic: identical bit for bit at both lengths, 67 s a run instead of 57 to 60 (and identical again to a deterministic run on another A100 sandbox an hour earlier: queen rank 3, cosine 0.577, the same five words). The losses at the same step part and meet again: 2.0508 against 2.0526 at step 8,801, 2.0027 both at 13,528
beam 5 holds for the dice and not for the sums. Beam 21.
gpu.py (max_steps), tools/seed_test.py; data/train/seed-test-2026-10-23-4000.json, -4000-deterministic.json, -19000.json, -19000-deterministic.json; the seed note under the training instrument