bb9decb484
8 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
bb9decb484 |
The philes: 200 of 200, written and placed
The writing job, done. 89 new philes takes the store to 200, and every one
of them is now reachable in play — which turned out to be the harder half.
Where they live follows from the voice rule. Each phile is written by
somebody, in the year it happened, who did not know they were in a game —
so the board is 1991 and the board cannot carry a file about WannaCry.
the board seven read-online areas: g-philes, the law, the scene,
v i r u s, the iron, telephony, unix. Reading online is free
and downloading costs MTU, which is how a board actually
worked, and is the only way ~60 files fit inside an economy
built to make you choose.
the climb everything after 1992, because the climb is the only level
that travels forwards in time. Thirty-six years bolted to the
shaft wall going past at speed. You get the file for having
been there whether or not you turned your head.
the shell man(1) and cat(1) on kruuna, for the unix and network ones.
ctx.phile(id, ..., quiet) collects without a toast — thirty-six
notifications in fifty seconds is a wall, not a level. The count lands once
at the top of the climb.
Two real bugs found on the way:
handshake exit() guarded .tone instead of .b, and there is a window
between S.i++ and enter() where a boss is current but its
state does not exist. Leave via the traceroute map during a
title card and unmount throws. Async continuations now bail
on a dead level too.
the climb the camera does not travel, the shaft does. The new signs
were nailed to the origin and never came into view. They also
needed dark ink for the one zone whose walls are white.
tools/philecheck.mjs: duplicate ids in an object literal overwrite
silently, and that cost an hour. It also reports anything written but not
placed. 200/200 written, 200/200 findable.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
||
|
|
cb22239363 |
The soundtrack is built out of the signal
The last structural promise in the design doc. No level gets a chord any
more. Every bed in the game is derived from a real number belonging to the
era it plays under, and src/score.js says which one and why in a comment
above each line.
coldboot/stack 1000 Hz, the reference tone every piece of telecoms test
gear on earth agrees on. The fortress is tuned to a
calibration signal.
timewait 50 Hz mains and its harmonics. The room's own hum was
always the entire score; now the bed agrees with it.
war the 1800 Hz V.32 carrier folded down, with dial-up hiss
under it, because everybody on EFnet was on a modem.
smash 0x90 is the NOP. Read as a number it is 144, so the sled
has a pitch and the level is tuned to the byte you slide
down.
worm seven partials, and the seventh one is detuned. One in
seven, as a chord.
cuckoo 45.45 baud — the Model 33 rate, 22 ms a bit. Fifty of
them in a basement is what he actually heard all night.
board the 1200 Hz V.22bis carrier folded four times, which is
the doc's exact phrase: a modem carrier detuned into a
pad.
shell the 750 Hz terminal bell over Helsinki's 50 Hz mains.
handshake silence. The fight is the score; anything underneath is
noise competing with the only thing in this game that
has to be listened to.
copper 20 Hz ringing current, 50 Hz mains, and Strowger stepping
at ten pulses a second. Three real clocks, and the
cathedral is the beat they make against each other.
bluebox the six MF tones at once. That is literally what is
inside a blue box.
climb all of it, layered.
root 2600 Hz folded six times until it is a low room tone.
The number the whole game turns on, finally at rest.
ESTABLISHED gets its own cue rather than a bed: 350 and 440, which is the
dial tone the handshake arena opened on and called the sound a line makes
when nothing is happening — with something finally on it.
Fixed while building: the pulse gate was driven by a bare square
oscillator swinging -1..+1, so its off half was not silence, it was the
same tone phase-inverted. Tremolo where a clock was wanted. DC offset now.
All 14 hops swept clean, and no voices leak between them.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
||
|
|
4554bfcd2d |
He stops arguing and edits the program, and the line changes its mind
The uname escalation. rms does not get angrier, he gets tireder — each interjection shorter and flatter and typed faster than the last, down to "GNU/linux.", then "...", then "no. i am not doing this again." And then he stops trying to change your mind and goes and rebuilds uname so that it says GNU/Linux, and installs it, and does not ask anybody. Which is, in fairness, the entire strategy. He never won the argument about naming and was never going to. What he did instead was write a compiler, a linker, a shell, a libc and a debugger, put all of them under a licence that forces everyone downstream to keep them free, and wait. That part worked completely. THE RETRAIN — the last cross-cutting system in the design doc that was not in. Real modems renegotiated mid-call: the copper got wet, somebody picked up an extension, the exchange rerouted you through a worse pair, and the two ends stopped and did the whole handshake again in the middle of your download. So now, once per run, somewhere after hop 51, wherever you happen to be standing, the line goes and takes a baud rate off you. The way back is the beat you were taught at hop 47: SPACE on the ANSam phase reversal, 450 ms, four clean ones. Spamming it fails, correctly. Terminal levels opt out with noRetrain, because taking SPACE off somebody mid-sentence is not a mechanic, it is a bug with a story attached. Fixed while testing: the reversal flash was decaying on a setTimeout while the beat it was cueing ran on dt. Two clocks for one event. Frame-based now, which is both more correct and the reason the win path is reachable. 75 philes. All 14 hops swept clean. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> |
||
|
|
e5ecadeab5 |
THE SHELL — the thing that killed the board
Day three of THE BOARD already names what kills it: about a third of you have got shell accounts now and are not calling any more, and i do not blame you, because it is better, it is genuinely better. The player never got to see it. Now they do, immediately afterwards, while the board's ghost is still warm. kruuna.helsinki.fi, 1991. It connects instantly, with no dial tone, no ring and no busy signal, and that silence after eight minutes of the board is the whole opening beat. who(1) shows the people who are on the machine at this second, against a board that had forty-four users in nine years and could hold one at a time. talk(1) puts every character on screen as it is typed, because that is what talk did. And make compiles a kernel in the top four lines while you carry on using the shell underneath it — two things at once, demonstrated rather than stated, which the board could never do. Then the interjection. rms has been on ttyp7 since six in the morning. He waited until the level printed a whole operating system over a build log in which every single line is gcc, and then he opened a talk request, and he is right. If you never answer it he leaves mail instead, because of course he does. The closing speech now credits the compiler, the linker, the shell, make and libc, which were all finished and free years before the kernel was. 74 philes. All 14 hops swept clean. README and STAGES.md brought current. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> |
||
|
|
10b6c8fdf5 |
Seven floors, seven jobs
THE STACK had seven layers that all played identically with a different
colour of danger, which is not a layer, it is a reskin. Each floor now
asks you to do the thing that layer actually does:
7 APPLICATION plain. the only polite floor.
6 PRESENTATION transcode. the same bytes in two encodings, RAW and
BASE64, and only one set of platforms is real at a time.
Q switches representation, in mid-air.
5 SESSION keep it alive. a platform you have stood on begins
closing the moment you leave it. standing still is the
mistake.
4 TRANSPORT reassemble. they arrived out of order; only the next
platform in sequence is solid, and the sequence has
nothing to do with where they are in the room.
3 NETWORK route. every platform is a router and every router costs
a hop out of five. overrun it and the floor ASLR
reshuffles under you.
2 DATA LINK listen before transmit. shared media, each platform busy
on its own cycle, and landing on a busy one collides —
with real exponential backoff, 0.35s then 0.7 then 1.4.
1 PHYSICAL be a signal. no platforms at all: forty-six segments of
a travelling wave you ride, attenuating down the wire.
The canaries and NX floors are retired — the hazard was the only idea each
floor had, and now the verb is.
Fixed in the rebuild: the miss floor was getting a lit edge strip like
every other platform, and it is ninety metres across, so it rendered as a
bright blue disc filling half the screen.
66 philes. All 13 hops swept clean.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
||
|
|
594fd584fa |
An arms race, a cure that cannot get there, and a board that closes
THE WAR — the trojan arms race. WinNuke, Sub7, Smurf, DCC send. Each one works, and then the level patches it seventy seconds after you first use it, with the countdown on screen and a line about how it died: a hotfix went out; the scanners caught up; the amplifiers stopped answering broadcast; the client asks before it accepts now. You cannot finish the level on one tactic. An exploit is not a tool you own, it is a window that is already closing while you are climbing through it. Plus a rival crew who turn up after the first rejoin, who have read the same text files you have, and who will take the ghost crown out from under you during a split. THE WORM — you can try to stop it. An antidote, three seeds, and it travels only over live links while you are killing links. It cures fast and then stops dead with its component severed, while the death count climbs past it. Measured: 4, 12, 18, 19, stall — dead 20 through 30. It works perfectly on everything it can reach. It cannot reach the rest, because you already took the road. The phones ring all night and nobody can send mail to warn anybody, because the broken thing is the thing you would have used. Pacing fix: spread rate now scales with the infection, since every infected host is running a copy. Correct, and the only way the level ever reached its own milestones — before this, nothing died inside ten minutes. THE BOARD — three days. Day one as before, and you post to FidoNet on the way out. Then the 04:00 run dials five nodes across the world while nobody is awake. Day two the board knows you: last on yesterday, calls 2, user #44 of 44 — and the first message is FIDONET quoting what you actually typed, with an answer. Four days, three boards, a long distance call somebody else paid for. Received. Hello. If you over-took on the files, your ratio has been adjusted to 1:1, because he said it would be. Day three is LAST CALL. Not raided, not busted: the second line was never coming, the long distance is forty dollars a month out of a job he does not much like, and a third of them have shell accounts now and are not calling any more, and he does not blame them, because it is better, it is genuinely better. Nine years. Forty-four users. Six real names. Never met one of them. Ratio off, elite board open, the NUP given away because it does not matter now. He asks nobody to say anything sad in the message base. They all ignore him. 65 philes. All 13 hops swept clean. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> |
||
|
|
8e194d677e |
The bridge, the card, and one call followed all the way through
THE BLUE BOX: you are not told the digits any more. The routing card is on the wall — worked out by hand, traded, kept in a pocket, the only documentation the long distance network ever had that was written by the people using it. The objective names a destination and Joybubbles explicitly refuses to give you the code. And 2111 is up. A loop-around somebody left in a switch in Kansas, dialable from anywhere at any point by anyone who knows the number, which was exactly the problem with it. Six voices, no faces, nobody says their name, it loops indefinitely, and holding 2600 drops the bridge. After SS7 there is nothing on it. THE COPPER: start a call at the MDF and follow it. Seven banks of relays down the aisles, each digit counted out at ten pulses a second because that is how a step-by-step switch dials — the wiper steps once per pulse and stops where the pulses stop. It connects. It is a wrong number. The switch does not mind; it does not know what a number is. Also fixed in kit: labelTexture ignored newlines, so any multi-line panel rendered as one enormous single line. The routing card was nine metres wide before this. 51 philes. All 13 hops swept clean. STAGES.md updated with what landed. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> |
||
|
|
ffd58fcebc |
STAGES.md — per-hop direction briefs
One page per hop: what is built, what is thin, what I would add ranked, and a DIRECTION block to write into. Plus a cross-cutting table for directing by system instead of by stage. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> |