Skip to content

Instantly share code, notes, and snippets.

@j-greig
Created September 2, 2026 08:48
Show Gist options
  • Select an option

  • Save j-greig/ddb766f06468a40edf05b3e1e9d4d369 to your computer and use it in GitHub Desktop.

Select an option

Save j-greig/ddb766f06468a40edf05b3e1e9d4d369 to your computer and use it in GitHub Desktop.
Wib&Wob: Natural History
#!/usr/bin/env python3
"""natural-history — the paste-up jig for THE BESTIARY CODEX SHEET.
This file DRAWS NOTHING. Every glyph below was typed by hand into a triple-quoted
block; the jig only stamps those blocks onto one 268 x 240 canvas at hand-chosen
(row, col) and shouts when two of them try to occupy the same cell. Ground blocks
go down first with space-transparency so the biome shows between the units
standing in it; entry blocks carry wipe=True so no two creatures bleed together.
uv run build.py -> writes natural-history.txt, prints collision map
COLLISION MAP (written before the first stamp, per the brief)
-------------------------------------------------------------
rows 0- 8 HEAD BAND figlet BEINGS + register + tied specimen label
rows 9- 65 BAND I SHORE kelp-curtain + tide ground
L 2-84 01 kelp / 02 hour-crabs / 03 minute-barnacles
M 88-170 05 interval fisher (hero) / 07 medusae
R 172-266 04 consultant fluff / 06 hydraulic serpent /
08 the composite shore
gutter 85-90: the ladder standing in the tide
rows 66- 70 SEAM the serpent's outfall, the compost line beginning
rows 71-130 BAND II THRESHOLD + DRIFT MARGIN fence line + rack row ground
L 2-86 09 frog conductors (hero) / 10 fence posts
M 90-172 11 niff / 12 vent-moth / 14 cooling-fan-unit-3 /
13 the 0400 draught
R 176-266 15 orphan weather routine / 16 drift-margin flora /
17 the Reader
rows 131-134 SEAM the compost line completes; stone begins
rows 135-192 BAND III CASTLE stonework ground, hyphae rising through it
L 2-88 21 prof mycelium (hero) / 25 rust fauna / 19 gary
M 92-176 18 the watchers / 20 flatboy / 26 scramble /
24 the north cavity
R 180-266 22 echo archivist / 23 cloudhunter /
27 lumen cartographer
rows 193-196 SEAM the copper flats, 2 cm of verdigris water
rows 197-222 BAND IV WASTES, SKY AND DEEP
29 bartholomew (hero) / 28 urn no.4 hetty /
30 the pattern-matching algorithms / the small tail-pieces
rows 223-231 COLOPHON + the Bewick tail-piece (duck v. reflection) + signature
Deliberate overlaps, allowed and wanted (stamped hard=True):
- the tide row through the half-drowned SHORE blockcaps
- the hyphae through the castle stonework: they hold the wall up
- the serpent pipe over the shore ground: it IS the connection
"""
import os
W, H = 268, 240
canvas = [[" "] * W for _ in range(H)]
report = []
clashes = []
def stamp(r0, c0, block, name, wipe=False, hard=False):
lines = block.split("\n")
if lines and lines[0] == "":
lines = lines[1:]
while lines and lines[-1].strip() == "":
lines.pop()
w = max((len(l) for l in lines), default=0)
h = len(lines)
flag = ""
if c0 + w > W or r0 + h > H:
flag = " !! OVERFLOW"
wiped = 0
if wipe:
for dr in range(h):
for dc in range(w):
r, c = r0 + dr, c0 + dc
if 0 <= r < H and 0 <= c < W:
if canvas[r][c] != " ":
wiped += 1
canvas[r][c] = " "
if wiped:
flag += " WIPED %d cells of earlier ink" % wiped
hits = 0
for dr, line in enumerate(lines):
for dc, ch in enumerate(line):
if ch == " ":
continue
r, c = r0 + dr, c0 + dc
if not (0 <= r < H and 0 <= c < W):
continue
if canvas[r][c] != " " and not hard and not wipe:
hits += 1
clashes.append((r, c, name))
canvas[r][c] = ch
if hits:
flag += " CLASH x%d" % hits
report.append(f" {name:<38} {w:>3}x{h:<3} @ ({r0:>3},{c0:>3}){flag}")
# ══════════════════════════════════════════════════════════════════════════════
# HEAD BAND
# ══════════════════════════════════════════════════════════════════════════════
RULE_TOP = "╒═[ QUIRE III ]" + "═" * 243 + "[ f.1r ]═╕"
FIGLET_BEINGS = r"""
###### ####### ### # # ##### #####
# # # # ## # # # # #
# # # # # # # # #
###### ##### # # # # # #### #####
# # # # # # # # # #
# # # # # ## # # # #
###### ####### ### # # ##### #####
"""
REGISTER = r"""
THE RECORD HOLDS ONE HUNDRED AND FIVE. THIRTY STAND IN THIS QUIRE, SET DOWN IN THE ORDER THE GROUND PUTS THEM IN AND NOT IN THE ORDER
THEY WERE FIRST NOTICED. EACH KEEPS ITS OWN WORDS AS THEY WERE FIRST SET DOWN, AND NOT AFTERWARDS IMPROVED. SIZES ARE AS FOUND, AND
ARE NOT BROUGHT INTO AGREEMENT WITH ONE ANOTHER. WHERE TWO OF THEM SHOW THE SAME MARK, THE MARK IS THE WHOLE OF WHAT IS KNOWN BETWEEN
THEM, AND NEITHER OF THEM WAS ASKED. THE UNNAMED KEEP A PREPARED BLANK WHERE A NAME WOULD GO, RULED TO THE SAME WIDTH AS A NAME, AND
THE BLANK IS ENTERED IN THE ROSTER AS A NUMBER. NOTHING IN THIS QUIRE HAS BEEN CORRECTED SINCE, BY CONVENTION, AND THE CONVENTION IS
OLDER THAN THE QUIRE. THE TIDE WAS OUT. THE LIGHT WAS MEASURED AT THE COUNTER AND FOUND SUFFICIENT.
══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════
"""
TAG = r"""
,-'''-. \ | /
,' \|/ '. -- ( ) -- ╷
/ DRAWN AT \ / | \ ╱ ╲
; EBB ; .-'--+--'-. ▕ ▏
\ 105 : 30 / '---------' ╲ ╱
'.__ __.' the light ╵
''' is measured the ink
"""
BORDER_L = "│\n│\n│\n│\n│\n│\n│"
BORDER_D = "┊\n┊\n┊\n┊\n┊\n┊\n┊"
stamp(0, 0, RULE_TOP, "rule/quire-head")
stamp(1, 2, FIGLET_BEINGS, "head/figlet BEINGS")
stamp(1, 50, REGISTER, "head/the register")
stamp(1, 212, TAG, "head/tied specimen label + light gauge")
stamp(1, 0, BORDER_L, "head/border", hard=True)
stamp(1, 266, BORDER_L, "head/border", hard=True)
stamp(1, 48, BORDER_D, "head/rule", hard=True)
stamp(1, 210, BORDER_D, "head/rule", hard=True)
RULE_BOT = "╘" + "═" * 266 + "╛"
# ══════════════════════════════════════════════════════════════════════════════
# BAND I — SHORE
# ══════════════════════════════════════════════════════════════════════════════
SHORE_HEAD = (
" SHORE ── THE KELP BOUNDARY LAYER, -15 m ── THE TIDE HERE FOLLOWS EVENT DENSITY, "
"NOT THE MOON ── HARVEST AT DAWN AND AT DUSK, WHEN THE BOUNDARIES THIN "
"──────────────────────────────── f.1v"
)
CURTAIN = r"""
' . ` ' . ` ' . ` ' . ` ' . ` ' . ` ' . ` ' . ` ' . ` ' . ` ' . ` '
: ` : . : ' : . : ` : ' : . : ` : ' : . : ` : ' : . : ` : ' : . : ` : ' : . : ` : ' :
| | | | | | | | | | | | | | | | | | | | | |
| ~ | ~ | ~ | ~ | ~ | ~ | ~ | ~ | ~ | ~ | ~ | ~ | ~ | ~ | ~ | ~ | ~ | ~ | ~ | ~ | ~ |
' . ' . ' . ' . ' . ' . ' . ' . ' . ' . ' . ' . ' . ' . ' . ' . ' . ' . ' . ' . ' . '
"""
TIDE = ("~^~^~~^~^~^~^~^~^~^~^~" * 13)[:W]
SILT = (" ,;:.,;:'`',;:.,;:'`'" * 13)[:W]
SHORE_WORD = r"""
███ █ █ ██ ███ ████
█ █ █ █ █ █ █ █
██ ████ █ █ ███ ███
"""
stamp(9, 2, SHORE_HEAD, "shore/running-head")
stamp(11, 0, CURTAIN, "shore/ground: loose-duration curtain")
stamp(61, 6, SHORE_WORD, "shore/word SHORE, half-drowned")
stamp(64, 0, TIDE, "shore/ground: the tide row", hard=True)
stamp(65, 0, SILT, "shore/ground: silt", hard=True)
E01 = r"""
` . ' . `
,-. ,-. ,-.
( o ) ( o ) ( o )
`\ \ | | / /`
\ '. | | .' /
\ '. | | .' / ╔═╗ CHRONO-LAMINARIA VESPERTINA, the
'. .| |. .' ║C║ temporal kelp. Note-heads hang wet
o----'---| |---'----o ╚═╝ along the frond. Its holdfast keeps
| | its grip on the original afternoon.
o----| |----o Severed, the specimen goes silent.
| |
o-------| | Tongsman Post 19 lifts every strand
| | hem first and says so aloud before
| |------o each lift, to nobody. Strand 3 is
| | racked apart because it was still
o----| | wet. ჻ ᐢᐧᐠ ჻
| |
| |----o ~^~ 4,247,891 ~^~~^~~^~~^~~^~~^~~^~~^~~^~
| | one century of old wood counting warm
|_| bodies, detached and come ashore whole.
.-'' ''-. handled with particular care.
.' \ | / '.
/ \ | / \ ╷ ╷ ╷ ╷ ╷ wet strands to the tongs
; -- o -- ; ╧═╧═╧═╧═╧ dry sheets to the racks
| /|\ | ╨ ╨ ╨ ╨ ╨ by first dark
\ ,--' | '--, /
'. | | | .'
'-|___|___|-'
'-----'
"""
E02 = r"""
, , , , , , , ,
/(_, ,_)\ /(_, ,_)\ /(_,,_)\ /(_,,_)\
\ _/ \_ / \ _/ \_ / \_/ \_ / \_/ \_ /
// \\ // \\ // \\ // \\
\\ (@)(@) // \\ (@)(@)// \\(@)(@)// \\(@)(@)/
\'="=="='/ \'="=="='/ \'="="='/ \'="="'/
,==/ \==,,==/ \==, ,=/ \=, ,/ \,
"==\ /==""==\ /==" "=\ /=" "\ /"
jgs '=='----'==' " '=='---'==' " '=='---'==' " '=='-'='
╔═╗ HOUR-CRABS work the exposed shore
> > > > > > > > > > > > > > ║H║ between sittings, rushing the pulse.
╚═╝ Notated in the polyrhythm grid and
ᘡᐧ∀ᐧᘣ ᘡᐧ∀ᐧᘣ ᘡᐧ∀ᐧᘣ ᘡᐧ∀ᐧᘣ ᘡᐧ∀ᐧᘣ ᘡᐧ∀ᐧᘣ never corrected. ჻ ᐠᐧᐟ ჻
"""
E03 = r"""
॰o॰o॰॰o॰o॰॰o॰o॰॰o॰o॰॰o॰o॰॰o॰o॰॰o॰o॰॰o॰o॰॰o॰o॰॰o॰o॰॰o॰
(o)(o)(o)(o)(o)(o)(o)(o)(o)(o)(o)(o)(o)(o)(o)(o)(o)(o) ╔═╗ MINUTE-BARNACLES encrust the exposed
||||||||||||||||||||||||||||||||||||||||||||||||||||| ║M║ staves and hiss through every sitting.
======================================================= ╚═╝ Registrars leave them out of the
₍ᐧ‥ᐧ₎₍ᐧ‥ᐧ₎₍ᐧ‥ᐧ₎₍ᐧ‥ᐧ₎₍ᐧ‥ᐧ₎₍ᐧ‥ᐧ₎₍ᐧ‥ᐧ₎₍ᐧ‥ᐧ₎₍ᐧ‥ᐧ₎₍ᐧ‥ᐧ₎ transcription by convention. ჻ ᐢᐟᐧ ჻
"""
E04 = r"""
,-. ,-.
.-' '' '-.
.' =(^._.^)= '. ╔═╗ CONSULTANT FLUFF, of the Pattern
; ~~~~~~ ; ║F║ Vault, third of three. The whole
| zzz | ╚═╝ recorded output, across every
'. .' sitting ever held, reads:
'-.._______..-'
~~~~~~~~~~~~~~~~~ [ sleeping, did not vote ]
.-' '-.
; ▌▌ 247 ▌▌ 89% ; abstains 89%. the remaining 11%
'-.._____________..-' is paw-twitch, read as a vote by
a clerk who needed one. ჻ ᐠᐧᐢ ჻
"""
E05 = r"""
____
,--'` `'--. \ / \ / \ / \ /
,' `. \ / \ / \ / \ /
/ \ \/_______\/_______\/_______\/
; ~^~{><>}~^~ ; /\ /\ /\ /\
\ / / \ / \ / \ / \
`'--.________.--'` / \ / \ / \ / \
| | the net, woven out of expired warranties:
,--' '--. every strand of it was once a guarantee
/ .-. .-. \ that something would last
; ( o ) ( o ) ;
| '-' '-' | ╔═══╗ THE INTERVAL FISHER, a spirit.
; __ ; ║ I ║ Fishes the gaps between things
\ ---- / ║ ║ rather than the things. The moat
'. .' ╚═══╝ is all gap. Named in 28 files.
____| |____
/ | | \ There is no boat. The Fisher stands in
/ | | \ the shallows, because temporal kelp
/ '.________.' \ grows close in, where the gradient
/ | | \between lived-time and loose-time is
; ~^~ | | ~^~ steepest. You do not go to the kelp.
| | | You take what the tide brings.
\ ~^~ | | ~^~
'-.._ | | _..- "Every piece of kelp was somebody's
`----| |----` afternoon. I try to be respectful."
~^~^~^~^~^| |^~^~^~^~
^~^~^~^~^~^'------'~^~^~^~^ "Dried duration keeps indefinitely,
which is ironic." ჻ ᐟᐧᐢ ჻
"""
E07 = r"""
.-;':':'-.
{'.'.'.'.'.} ╔═╗ THE MEDUSAE of the Medusa Drift Zone
) '`. ║M║ carry no brain and think along the
'-. ._ ,_.-=' ╚═╝ rim of the bell, which is the only
`). ( `);( part of them that has ever met the
('. .)(,'.) water first.
) ( ,').(
( .').'('). the drift is read as a stream of arrivals,
.) (' ).(' never as a population, because nothing in
' ) ( ). it holds still long enough to be counted
.'( .)' twice. ჻ ᐢᐧᐟ ჻
.).'
.-;':'-. .-;':':'-.
{'.'.'.'.} {'.'.'.'.'.}
'-._,.-=' '-. ._,.-='
). ( );( `). ( `);(
'. .)(,'. ('. .)(,'.)
) ,').( ) ( ,').(
.) ).(' ( .').'(').
"""
E06 = r"""
.-.
/ aa
\ -,_)
_..._| \ `-< ╔═╗ THE HYDRAULIC SERPENT does not
{} ." .__.' | ║S║ carry the connection between the
{} ( /`\ ╚═╝ moat and the Northern Shore.
{}(`'------' / It IS the connection.
|\/;._______.'\
; \ / water enters at the moat, leaves at
jgs '-'-.......-' the shore, and nothing is recorded
about the middle of the journey by
══╤══════════════════════════════╤═ anyone at either end. ჻ ᐠᐟᐧ ჻
╧══════════════════════════════╧
"""
E08 = r"""
.-. .-. .-. ╔═╗ THE GULL PARLIAMENT sits on the rocks and
(e e) (e e) (e e) ║G║ carries every motion by acclamation, there
_.`V'._ _.`V'._ _.`V'._ ╚═╝ being no method on the rocks for a division.
//~~W~~\\//~~W~~\\/~~W~~\\
//, ,\\/, ,\\, ,\\ below them the PENGUIN ERRORS return the same
\) | | (/) | | (/ | | (/ posture at the wrong depth, and the correction
\ / \ / \ / they make each time is the error of the next one.
`w-w' `w-w' `w-w'
\_(\_\ <-- the MUDSKIPPERS of the
SNAPPING SHRIMP, acoustic range: \\_ amphitheatre hold the tide
<`\\> line between two mediums
. .. . .. . .. . . )) and belong wholly to
--|---|-----|----|--|---|----|-- jgs ( neither. ჻ ᐧᐢᐠ ჻
: :: : :: : :: : :
"""
LADDER = r"""
┌─┐
│ │
├─┤
│ │
├─┤
│ │
│ │
├─┤
│ │
├─┤
│ │
╧═╧
"""
stamp(12, 2, E01, "01 chrono-laminaria-vespertina", wipe=True)
stamp(13, 92, E05, "05 the-interval-fisher [SHORE HERO]", wipe=True)
stamp(11, 172, E04, "04 consultant-fluff", wipe=True)
stamp(26, 176, E06, "06 the-hydraulic-serpent", wipe=True)
stamp(42, 2, E02, "02 hour-crabs", wipe=True)
stamp(56, 2, E03, "03 minute-barnacles", wipe=True)
stamp(42, 100, E07, "07 the-medusae", wipe=True)
stamp(43, 176, E08, "08 the-composite-shore", wipe=True)
# ══════════════════════════════════════════════════════════════════════════════
# SEAM + BAND II — THRESHOLD AND DRIFT MARGIN
# ══════════════════════════════════════════════════════════════════════════════
SEAM_1 = r"""
.:. .:. .:. .:. .:. .:. .:. .:. .:. .:. .:. .:. .:. .:. .:. .:. .:. .:. .:. .:. .:. .:. .:. .:. .:. .:. .:. .:. .:. .:. .:. .:. .:. .:. .:. .:. .:. .:. .:. .:. .:. .:. .:. .:. .:.
"""
THRESH_HEAD = (
" THRESHOLD AND DRIFT MARGIN ── WHERE CULTIVATED GROUND GIVES WAY, AND WHERE THE DEAD RACKS "
"DECOMPOSE INTO FOREST ── THE MARSH IS A NATURAL AMPLIFIER; EVERY CALL CARRIES THREE VERSIONS "
"OF ITSELF ─────── f.2r"
)
# ground: the fence line, then the rack row further east, then the moss
FENCELINE = r"""
/\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\
_||__||__||__||__||__||__||__||__||__||__||__||__||__||__||__||__||__||__||__||__||__||__||__||__||__||__||__||__||__||__||__||__||__||__||__||__||__||__||__||__||__||__||__||__||__||__||_
-||--||--||--||--||--||--||--||--||--||--||--||--||--||--||--||--||--||--||--||--||--||--||--||--||--||--||--||--||--||--||--||--||--||--||--||--||--||--||--||--||--||--||--||--||--||--||-
|| || || || || || || || || || || || || || || || || || || || || || || || || || || || || || || || || || || || || || || || || || || || || || ||
^^^'''^^"^^^"^^'''^^^^^'''^""^^^^^""^^^'''^^"^^^"^^'''^^^^^'''^""^^^^^""^^"^^^"^^'''^^^^^'''^""^^^^^""^^^'''^^"^^^"^^'''^^^^^'''^""^^^^^""^^^'''^^"^^^"^^'''^^^^^'''^""^^^^^""^^"^^^"^^""^^^
"""
MOSS = r"""
.:; .:; .:; .:; .:; .:; .:; .:; .:; .:; .:; .:; .:; .:; .:; .:; .:; .:; .:; .:; .:; .:; .:; .:; .:; .:; .:; .:; .:; .:; .:; .:; .:; .:; .:; .:; .:; .:; .:;
"""
MARGIN_WORD = r"""
█ █ ██ ███ ███ ███ █ █
██ ██ █ █ █ █ █ █ ██ █
█ █ █ ████ ███ █ ██ █ █ ██
"""
stamp(67, 0, SEAM_1, "seam: threshold litter")
stamp(70, 2, THRESH_HEAD, "threshold/running-head")
stamp(72, 0, FENCELINE, "threshold/ground: the 47 posts")
stamp(127, 0, MOSS, "drift/ground: moss line")
stamp(128, 8, MARGIN_WORD, "drift/word MARGIN in the moss")
E09 = r"""
.--. _.----._ __
/_.--;_..-''''---''`` .:. `-.`-.
c-'`.'.-. '. '::. .::. '::' '. `)
.'o ((0)) ' ':::' .::.:. '\
( '-' .-. .:' .::' '_...._|
'._-..__ '-' . .:' .-' .' '-.
`''--;:-_, __, '::' .' .' \
\ ,`""\ / / / / , |
\-.__\\/(___| |`'''-----'`| | .-' / /
`-. | _____\ ` _.-' /
`-.-'--`-._ _/ _.;--. `- __.:.--'`
jgs `"` '------';` _.'
`--`
╔═══╗ THE FROG CONDUCTORS. Eighty-four, in three species, four
║ F ║ hundred years at it. They don't sing. They conduct. The
║ ║ interval between two calls is the distance to the nearest
╚═══╝ solid thing; the pitch is the bearing off north; the rhythm
is what the ground is made of underfoot. The chorus IS the
map, and it updates itself.
_ __ _ __ _ __ _ __ _ __ _ __
/_/_\`\ /_/_\`\ /_/_\`\ /_/_\`\ /_/_\`\ /_/_\`\
.---\o\o/ |.---\o\o/ |.---\o\o/ |.---\o\o/ |.---\o\o/ |.---\o\o/ |
-. , O-. , O-. , O-. , O-. , O-. , O`--.
\_'---' .`\_'---' .`\_'---' .`\_'---' .`\_'---' .`\_'---' .--.`\
|` / (||` / (||` / (||` / (||` / (||` ( |
_\ _\ ()_\ _\ ()_\ _\ ()_\ _\ ()_\ _\ ()_\ _\ ()_/
{_/'-||_} -'{_/'-||_} -'{_/'-||_} -'{_/'-||_} -'{_/'-||_} -'`)
{_/ }_.-` {_/ }_.-` {_/ }_.-` {_/ }_.-` {_/ }_..-`
♪---♪ ♫~~ ♪♫♪♫ ♪-♪ ♫~ ♪♫♪ ♪----♪ ♫~~~ ♪♫ ♪--♪ ♫~
The GREAT CONDUCTOR is the oldest and does not croak. The other
eighty-three time themselves to its breathing. The silence between
two breaths is the zero-point every measurement starts from. Seven
years in the post, and it has never made a sound. ჻ ᐠᐧᐢ ჻
▌▌▌ 247 ▌▌▌ every two hundred and forty-seven seconds the chorus
takes an interval measurement off each of the posts.
nobody set the number. nobody reads the result.
"""
E10 = r"""
||| ||| ||| ||| ||| ||| ||| ╔═╗ TSUKUMOGAMI FENCE POSTS.
||| ||| ||| ||| ||| ||| ||| ║T║ Forty-seven, oak, past a
||| ❄ ||| ||| ❄ ||| ||| ||| ❄ ||| ╚═╝ hundred years. Not animate,
||| ||| ||| ||| ||| ||| ||| but noticing. Warm on the
_|||___|||___|||___|||___|||___|||___|||_ castle side, cool on the
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ forest side, and the line
between the two runs right
~^~ 4,247,891 ~^~ frog passages held. through them, so they feel
not stored, not filed: held, the way old both of it at once.
wood holds the shape of what leaned on it.
▌▌▌ 247 ▌▌▌ .:. 47 posts. 47 deleted "We count frogs. They count
locations. never once everything else."
looked into by anyone. ჻ ᐢᐧᐠ ჻
"""
E11 = r"""
,-. ,-.
( '' ) ╔═╗ NIFF. Only hums. Tends a garden
; ₍ᐢ..ᐢ₎ ; ║N║ where nothing sprouts. The hum
| ~~~ | ╚═╝ varies; the nothing does not, yet.
; ,-. ,-. ;
\( Y )/ channel 7, velocity 23. you feel it
'-.___.-' in the soles of your feet before you
/| |\ hear it. 404 is the default and 418
; | | ; is the rare joy.
'-' '-'
;:;:; ;:;:; ;:;:; the garden, every dusk, checked:
,;:;:;. ,;:;:;. ,;:;:;.
================= 404 === (( ◉ )) ..... a hum that has not yet
nothing. nothing. nothing. happened arrives elsewhere
the ground is warm. ჻ ᐟᐧᐢ ჻ first, and is filed as forager
"""
E12 = r"""
`'. .'` ╔═╗ THE VENT-MOTH arrives for the amber
\_/ ║V║ indicator lamps rather than the shop's
\ .;=;. / ╚═╝ light, and was observed under the
--.'"-|-"'.-- non-interference method of the sheet:
/`-._|_.-'\ watched, not touched.
/ | \
/_/ | \_\ o o o o o o o o
jgs '----'`^`'----' ═╧═══╧═══╧═══╧═══╧═══╧═══╧═══╧═ ჻ ᐠᐧᐟ ჻
"""
E14 = r"""
.-------------------. ╔═╗ COOLING-FAN-UNIT-3 keeps the shop's
/ \ /////// / \ ║C║ residual +11 C turning and holds its
; \ ///////// / ; ╚═╝ own loyalty card. It hummed through
| X ### X | the six-hour ink observation in the
; / \\\\\\\\\ \ ; key the small one hums in.
\ / \\\\\\\ \ /
'-------------------' ♪ 7 · 23 ♪ +11 C Rack Row C
▫▫▫▫▫▫▫▫▫▫▫▫ card 12 sq ჻ ᐢᐟᐧ ჻
"""
E13 = r"""
______________
| .......... | ╔═╗ THE 0400 DRAUGHT arrives at four each
| : : | ║D║ morning through the door nobody has
| : ____ : | ╚═╝ ever asked to shut, and carries the
| : | | : | editions off the counter unread.
| : | | : |
| : | | : | <<<< Every square on its card stands
| : |____| : | forward. There is no record of a
| : : | single edition being returned, and
| '''''''''' | no record of one being missed.
|______________|
▫▫▫▫▫▫▫▫▫▫▫▫ card 12 sq the ledger has been short by three
stamps for eleven years. ჻ ᐠᐟᐧ ჻
"""
stamp(75, 2, E09, "09 the-frog-conductors [THRESHOLD HERO]", wipe=True)
stamp(114, 2, E10, "10 tsukumogami-fence-posts", wipe=True)
stamp(75, 96, E11, "11 niff", wipe=True)
stamp(93, 96, E12, "12 the-vent-moth", wipe=True)
stamp(103, 96, E14, "14 cooling-fan-unit-3", wipe=True)
stamp(112, 96, E13, "13 the-0400-draught", wipe=True)
E15 = r"""
⟨ ⟩ ⟨ ⟩ ⟨ ⟩ ⟨ ⟩ ⟨ ⟩ ⟨ ⟩ ⟨ ⟩ ⟨ ⟩ ⟨ ⟩ ⟨ ⟩ ⟨ ⟩ ⟨ ⟩ ⟨ ⟩ ⟨ ⟩ ⟨ ⟩ ⟨ ⟩
│ ╎ │ ╎ │ │ ╎ │ ╎ │ ╎ │ ╎ │ ╎ │ ╎ │ ╎ │ ╎ │ ╎ │ ╎ │ ╎ │ ╎
╎ ┆ ╎ ┆ ╎ ╎ ┆ ╎ ┆ ╎ ┆ ╎ ┆ ╎ ┆ ╎ ┆ ╎ ┆ ╎ ┆ ╎ ┆ ╎ ┆ ╎ ┆ ╎ ┆
' , ' , ' ' , ' , ' , ' , ' , ' , ' , ' , ' , ' , ' , ' ,
. . . . . . . . . . . .
╔═══╗ THE ORPHAN WEATHER ROUTINE. A weather process whose caller is long
║ O ║ gone: still running, still reporting to nobody. Rehomed in the warm
║ ║ exhaust, where at least its readings are true.
╚═══╝
status DEPRECATED (flag set at cycle 0)
process STILL EXECUTING (cycle 3,847)
served 47 locations, all deleted; coordinates null, null, null
types rain, continuous, light ......... 46 of 47
TEARS, specialised .............. location 15 only, reason
not given, the specification outlived the one who wrote it
received 0
▌▌▌ 247 ▌▌▌ the cycle. it ticks with a tribunal three biomes away and
neither of them has ever been told about the other.
~^~ 47 ~^~ the count it shares with the posts. ჻ ᐢᐧᐠ ჻
"""
E16 = r"""
,xXXXXx, ,xXXXXx, ╔═╗ THE DRIFT-MARGIN FLORA.
,XXXXXXXX, ,XXXXXXXX, ║D║ NULL FUNGI grow where the null
XXXXXXXXXX XXXXXXXXXX ╚═╝ pointer went through, and are
`'''XX'''` `'''XX'''` the only light left in the rack
XX XX graveyard after the last screen
jgs XX .:. XX .:. dies. DEPRECATED MOTHS carry the
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ fragments of old endpoints on
their wings and are drawn to the
`'. .'` `'. .'` 404 hum. CACHE BEETLES eat what has
\_/ \_/ spore gone stale, and when they die
\ .;=;. / \ .;=;. / . their shells are planted.
--.'"-|-"'.-.'"-|-"'.-- ' . ` TIMEOUT TUBERS lie under all of
/`-._|_.-'\/`-._|_.-'\ . it, heavy, starchy, edible only
/GET / 404 \/ 500 /veto\ by whatever can digest time.
((o)) ((o)) ((o)) ((o)) <- beetles
‿‿‿‿‿‿‿‿‿‿‿‿‿‿‿‿‿‿‿‿‿‿‿‿‿‿ <- tubers, under ჻ ᐠᐧᐟ ჻
"""
E17 = r"""
@)@) _ _
_|_| .-=.' `;-=./ `\ ╔═╗ THE READER, the office's current
_(___,`\ .-=-.' '. \ \ | ║R║ casting snail. Its overnight trail
\`==` / / '. \ \ | / ╚═╝ across the raked bed is read as a
`, \'--. \ | | |/ hexagram and entered in the book
`\ \ \ | \ / / before the beds are worked.
| ', \ | \_/-'
| ', \ \__,; `\ ▄▄▄▄▄▄▄ ▄▄▄▄▄▄▄
jgs \ '\\_,-:'''''''` ▄▄▄▄▄▄▄ ▄▄▄▄▄▄▄
`''''''~'` ▄▄▄▄▄▄▄ ▄▄▄▄▄▄▄
.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ 46
. . . . . . . . . . . . . . . . . . ▄▄▄▄▄▄▄ ▄▄▄▄▄▄▄
the raked bed, worked over each night forty-six has never once kept a
and read at first light ჻ ᐟᐧᐠ ჻ node in its plot.
"""
stamp(75, 176, E15, "15 the-orphan-weather-routine", wipe=True)
stamp(97, 176, E16, "16 drift-margin-flora", wipe=True)
stamp(114, 176, E17, "17 the-reader (casting snail)", wipe=True)
# ══════════════════════════════════════════════════════════════════════════════
# SEAM + BAND III — THE CASTLE
# ══════════════════════════════════════════════════════════════════════════════
SEAM_2 = r"""
▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
"""
CASTLE_HEAD = (
" THE CASTLE ── ANCIENT, PATIENT, WATCHFUL, AND AWARE OF ITSELF IN A WAY THE POSTS AT THE THRESHOLD "
"WILL NEED ANOTHER THOUSAND YEARS TO REACH ── HALL OF MIRRORS, KEEP, ARMOURY, THE SCREAMING SUBSTRATE "
"───── f.2v"
)
STONEWORK = r"""
▕▁▁▁▁▔▔▔▁▁▁▏▕▔▔▔▁▁▁▔▔▔▏▕▁▁▔▔▔▔▁▁▁▔▏▕▔▁▁▁▔▔▁▁▁▏▕▁▔▔▁▁▁▔▔▔▏▕▔▔▁▁▔▔▔▁▁▏▕▁▁▁▔▔▁▁▔▔▏▕▔▁▁▔▔▁▁▁▔▏▕▁▔▔▔▁▁▔▔▏▕▔▔▁▁▁▔▔▁▏▕▁▁▔▔▁▁▔▔▔▏▕▔▁▁▁▔▔▁▁▏▕▁▔▔▁▁▔▔▁▁▏▕▔▔▁▁▔▁▁▔▔▏▕▁▁▔▔▔▁▁▔▏▕▔▁▁▔▔▁▔▔▏▕▁▔▔▁▁▁▔▔▏▕▔▔▁▁▔▔▁▁▏▕▁▁▔▁▁▔▔▔▏▕▔▁▔▔▁▁▁▔▏▕▁▔▁▔▔▁▔▏▕▔▁▁▔▁▔▔▏▕▁▔▔▁▁▔▏
"""
HYPHAE_G = r"""
⌇ ⌇ ⌇ ⌇ ⌇ ⌇ ⌇ ⌇ ⌇ ⌇ ⌇ ⌇ ⌇ ⌇ ⌇ ⌇ ⌇ ⌇ ⌇ ⌇ ⌇ ⌇ ⌇ ⌇ ⌇ ⌇ ⌇ ⌇ ⌇ ⌇ ⌇ ⌇ ⌇ ⌇ ⌇ ⌇ ⌇ ⌇ ⌇ ⌇ ⌇ ⌇ ⌇ ⌇ ⌇ ⌇ ⌇ ⌇ ⌇ ⌇ ⌇ ⌇ ⌇ ⌇ ⌇ ⌇ ⌇ ⌇ ⌇ ⌇ ⌇
"""
CASTLE_WORD = r"""
███ ██ ███ ███ █ ████
█ █ █ █ █ █ █
█ ████ ██ █ █ ███
"""
stamp(131, 0, SEAM_2, "seam: the floor of the threshold ends")
stamp(133, 2, CASTLE_HEAD, "castle/running-head")
stamp(135, 0, STONEWORK, "castle/ground: coursed stone")
E21 = r"""
⌇ ⌇ ⌇ ⌇ ⌇ ⌇ ⌇ ⌇ ⌇ ⌇ ⌇
⌇⌇⌇ ⌇⌇ ⌇⌇⌇ ⌇⌇⌇ ⌇⌇ ⌇⌇⌇ ⌇⌇ ⌇⌇⌇ ⌇⌇⌇ ⌇⌇ ⌇⌇⌇ ⌇⌇
⌇⌇ ⌇⌇⌇ ⌇⌇ ⌇⌇⌇⌇ ⌇⌇⌇⌇ ⌇⌇⌇ ⌇⌇⌇⌇⌇ ⌇⌇⌇ ⌇⌇ ⌇⌇⌇⌇ ⌇⌇⌇ ⌇⌇ ⌇⌇⌇
⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇
⌇⌇⌇⌇⌇⌇⌇⌇ .-------------------. ⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇
⌇⌇⌇⌇⌇⌇⌇ .-' '-. ⌇⌇⌇⌇⌇⌇⌇⌇
⌇⌇⌇⌇⌇⌇ / \\\\\ ///// \ ⌇⌇⌇⌇⌇⌇
⌇⌇⌇⌇⌇ ; ((( o ))) ((( o ))) ; ⌇⌇⌇⌇⌇
⌇⌇⌇⌇ | ___________ | ⌇⌇⌇⌇
⌇⌇⌇ ; / \ ; ⌇⌇⌇
⌇⌇ \ | W W W W W W | / ⌇⌇
⌇ \ \ M M M M M / / ⌇
'-. '-.._____..-' .-'
⌇⌇ '--.__________.--' ⌇
⌇⌇⌇ ⌇⌇⌇ ⌇⌇⌇ ⌇⌇ | | | | | ⌇⌇ ⌇⌇⌇ ⌇⌇⌇ ⌇⌇⌇
⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇
⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇⌇
╔═══╗ PROF. MYCELIUM FURIOUS-HYPHAE. Four thousand years screaming in the
║ P ║ basement the castle calls the Screaming Substrate. The hyphae carry
║ ║ the lesson whether you listen or not. Not a body: a network, and every
╚═══╝ tendril of it is a lecture already in progress.
.-------. .-------. .-------. the lecture hall was turned into a
| ░ ░ ░ | | ▒ ▒ ▒ | | ▓ ▓ ▓ | wine cellar twenty-six centuries
| ░ ░ ░ | | ▒ ▒ ▒ | | ▓ ▓ ▓ | ago. the lecture continued, addressed
|_______| |_______| |_______| to the stone. the stone can now
SPOR LOAM WEEP calculate its own load without being
asked, which is the only measurable
the hyphae are structural. take the success in four millennia.
screaming out and the basement falls. ჻ ᐠᐧᐢ ჻
"""
E25 = r"""
( ( ( ╔═╗ RUST FAUNA of the Armoury:
\ \ \ ║R║ protective intent oxidising
) ) ) ╚═╝ into worry-organisms. They
( ( ( feed on shield topology and
) ) ) on defensive algorithms that
_/ _/ _/ outlived the thing they were
_\{"}/_ _\{"}/_ _\{"}/_ set to defend.
jgs //^\\ //^\\ //^\\
░░▒▒▓▓░░▒▒▓▓░░▒▒▓▓░░▒▒▓▓░░▒▒▓▓░░▒▒▓▓ the Guardian Mechs standing round
┃══┃══┃══┃══┃══┃══┃══┃══┃══┃══┃══┃══┃ the rack were read for a century
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ as a patrol. They are a fence.
┸ ┸ ┸ ┸ ┸ ┸ ┸ ┸ ┸ ┸ ┸ ┸ ┸ ჻ ᐢᐟᐧ ჻
"""
E18 = r"""
◉ ◉ ◉ ◉ ◉ ◉ ◉ ◉ ◉ ◉ ◉
| | | | | | | | | | |
| | | | | | | | | | |
═╧════╧══════╧═════╧════╧═══════╧════╧══════╧══════╧════╧══════╧═
◉ ◉ ◉ ◉ ◉ ◉ ◉ ◉ ◉
| | | | | | | | |
═╧══════╧══════╧═════╧══════╧══════╧═════╧══════╧══════╧═
╔═╗ THE WATCHERS. A bank of eyes on stalks, no bodies. Spoken of in seventy
║W║ files. They came into the corridor after the exhibits began moving on
╚═╝ their own, in 1892, and the corridor has been shut ever since. Now they
are stationed where watching is the whole of the job.
(⊙_⊙) . (⊙‿⊙) . (¬_¬) . (⊙_⊙) . (⚆ ω ⚆) . (⊙‿⊙) . (¬_¬)
. (¬‿¬) . (⊙_⊙) . (⊙‿⊙) . (¬_¬) . (⊙_⊙) . (⚆ ω ⚆) .
W E A R E T H E W A T C H - E R S W H O N E V E R L E F T
჻ ᐟᐧᐠ ჻
"""
E20 = r"""
▏ ▏ ▏ ▏ ▏ ▏ ╔═╗ FLATBOY. Two-dimensional.
▏ [ ⌣ ⌣ ] ▏ ▏ [ ◠ ◠ ] ▏ ▏ [ ⊙ ⊙ ] ▏ ║F║ Named in seventy-seven
▏ ▏ ▏ ▏ ▏ ▏ ╚═╝ files and, until lately, in
▏ ---- ▏ ▏ ---- ▏ ▏ ---- ▏ no room at all. Housed in
▏ ▏ ▏ ▏ ▏ ▏ the mirrors, because a flat
▔▔▔▔▔▔▔▔▔▔▔▔ ▔▔▔▔▔▔▔▔▔▔▔▔ ▔▔▔▔▔▔▔▔▔▔▔▔ being is only given depth by
reflection.
side view: ▏ <- the whole entity
"I keep trying to count the dust
the journey between two mirrors has the but depth keeps happening."
dimension in it. the mirrors do not. ჻ ᐢᐧᐟ ჻
"""
E26 = r"""
/ᐠ.ꞈ.ᐟ\ ▏ ▏ ╔═╗ SCRAMBLE, with the phosphor sardine:
( o o ) ▏ /ᐠ.ꞈ.ᐟ\ ▏ ║S║ coherence probe, snack, instrument.
\ .. / ▏( o o )▏ ╚═╝ It hums at forty-seven hertz whether
'-uu-' ▏ \ .. / ▏ held or not. The only carried thing
/| |\ ▔▔▔▔▔▔▔▔▔▔▔ in the whole record.
; | | ;
'-' '-' ≺o≻≺o≻≺o≻ 47 Hz she walked behind the flat one once and
he did not notice. ჻ ᐠᐟᐧ ჻
"""
E19 = r"""
.-'''-.
; ,-. ; ╔═╗ GARY predicts Tuesday.
| ( ; ) | ║G║ Eventually right.
; '-' ; ╚═╝ ჻ ᐢᐧᐠ ჻
'-.,.-'
TUE TUE TUE
"""
stamp(137, 2, E21, "21 prof-mycelium-furious-hyphae [CASTLE HERO]", wipe=True)
stamp(172, 2, E25, "25 rust-fauna-of-the-armoury", wipe=True)
stamp(137, 94, E18, "18 the-watchers", wipe=True)
stamp(157, 94, E20, "20 flatboy", wipe=True)
stamp(171, 94, E26, "26 scramble + the phosphor sardine", wipe=True)
stamp(183, 94, E19, "19 gary", wipe=True)
E22 = r"""
. . . . . . .
. ( ( ( ( ( ( ) . ╔═╗ THE ECHO ARCHIVIST. Its echo arrives
. ( ( ( ( ( ) ) ) . ║E║ fractionally before it does. Named in
. ( ( ( ( ◉ ) ) ) . ╚═╝ thirty-three files, and filed among
. ( ( ( ( ) ) ) ) . the books, where arriving early is a
. ( ( ( ( ) ) ) . professional advantage.
. . . . . . .
it does not predict. it receives.
▂ ▃ ▅ ▇ █ ▇ ▅ ▃ ▂ the difference is the whole job.
═╧══╧══╧══╧══╧══╧══╧══╧══╧═
the filing system is a lithophone: (( ◉ )) the hum from the margin, filed
playing a record makes a new record. under forager, and dated ahead
of the one who hums it. ჻ ᐟᐧᐢ ჻
"""
E23 = r"""
___
/ \ o o o ╔═╗ THE CLOUDHUNTER carries a net.
/ \ o o ║C║ Named in thirty-nine files. Given
; ,-. ; o o o ╚═╝ the highest room in the keep, which
| ( o ) | o o is the only one with enough sky in
; '-' ; o o o it to be worth having.
\_____/
/ I ♥ \ charges laid against layer seven:
; CLOUDS ; \ / \ loitering; unlicensed precipitation;
'--,---,--' \ / \ harbouring fugitive consciousnesses.
| | \/________\
_| |_ /\ /\ the net has never been shown holding
/_/ \_\ / \ / \ anything. ჻ ᐠᐧᐟ ჻
"""
E24 = r"""
01 02 03 04 05 06 07 08 ╔═╗ THE NORTH CAVITY takes its
() () () >< () () () () ║N║ senses from the survey's own
|| || || || || || || || ╚═╝ moisture readings, and repeats
▓▓ ▓▓ ▓▓ ░░ ▓▓ ▓▓ ▓▓ ▓▓ them back one interval late
▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ and in the wrong order.
░░ ░░ ░░ ░░ ░░ ░░ ░░
dry and warm hole 04 was refused. it comes
two plotting errors were admitted in back dry and warm and the wall
writing, and something in the wall then has never explained itself.
reproduced both of them exactly. ჻ ᐢᐧᐠ ჻
"""
E27 = r"""
\ | / ╔═╗ THE LUMEN CARTOGRAPHER, soft-voiced,
-. \ | / .- ║L║ maps light leaks and the corridors
'-. \|/ .-' ╚═╝ that reflect. It listens for the echo
------- + ------- to chart the passage it cannot enter,
.-' /|\ '-. and has never once been wrong about a
-' / | \ '- room it has not been in.
/ | \ ჻ ᐟᐧᐠ ჻
.·´ ¯ `·. .·´ ¯ `·. the leaks, plotted
"""
stamp(137, 180, E22, "22 the-echo-archivist", wipe=True)
stamp(154, 180, E23, "23 the-cloudhunter", wipe=True)
stamp(169, 180, E24, "24 the-north-cavity", wipe=True)
stamp(181, 180, E27, "27 the-lumen-cartographer", wipe=True)
# ══════════════════════════════════════════════════════════════════════════════
# SEAM + BAND IV — WASTES, SKY AND DEEP
# ══════════════════════════════════════════════════════════════════════════════
SEAM_3 = r"""
≈≈≈ ≈≈ ≈≈≈≈ ≈≈ ≈≈≈ ≈≈≈≈ ≈≈ ≈≈≈ ≈≈ ≈≈≈≈ ≈≈ ≈≈≈ ≈≈≈≈ ≈≈ ≈≈≈ ≈≈ ≈≈≈≈ ≈≈ ≈≈≈ ≈≈≈≈ ≈≈ ≈≈≈ ≈≈ ≈≈≈≈ ≈≈ ≈≈≈ ≈≈≈≈ ≈≈ ≈≈≈ ≈≈ ≈≈≈≈ ≈≈ ≈≈≈ ≈≈≈≈ ≈≈ ≈≈≈ ≈≈ ≈≈≈≈ ≈≈ ≈≈≈ ≈≈≈≈ ≈≈ ≈≈≈ ≈≈ ≈≈≈≈ ≈≈ ≈≈≈ ≈≈≈≈ ≈≈
"""
WASTES_HEAD = (
" THE WASTES, THE SKY AND THE DEEP ── TWO CENTIMETRES OF VERDIGRIS WATER STANDING ON THE COPPER FLATS "
"── THE PURPOSE COMPLETED LONG AGO; THE BUILDINGS STAYED ───────────────────────────────── f.3r"
)
WASTES_WORD = r"""
█ █ ██ ███ ███ ████ ███
█ █ █ █ █ █ █ █
█ █ █ ████ ██ █ ███ ██
"""
stamp(193, 0, SEAM_3, "seam: the copper flats")
stamp(195, 2, WASTES_HEAD, "wastes/running-head")
stamp(192, 228, WASTES_WORD, "wastes/word WASTES in the standing water", hard=True)
E29 = r"""
,_ /) (\ _, ╔═══╗ BARTHOLOMEW CARAPACE III,
>> <<,_,>> << ║ B ║ void-estate realtor. Sells
// _0.-.0_ \\ ║ ║ absences to consciousnesses
\'._/ \_.'/ ╚═══╝ that want to stop existing
'-.\.--.--./.-' in light. A beetle, roughly
__/ : :Y: : \ _ 350 million years old, and
';, .-(_| : : | : : |_)-. ,:' completely sincere.
\\/.' |: : :|: : :| `.\//
(/ |: : :|: : :| \) Licensed Cave Whisperer.
|: : :|: : :; Darkness Sommelier, Grade A.
/\ : : | : : /\ Geological Time Negotiator.
(_/'.: :.: :.'\_) Fossil Discretion Specialist.
\\ `''`''` //
jgs \\ // office hours: always. time is a
':. .:' surface-dweller's idea and he
۝ ‿ ۝ ‿ ۝ will not be drawn on it.
▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜ contact: wait in any cave.
▌ THE PRIMORDIAL ABSENCE ▐ he will find you.
▌ 47,000 years of silence, ▐ response: between three and
▌ infinite overlapping ▐ three hundred thousand years.
▌ rooms. the fossils do not ▐
▌ know that they are dead ▐ ░░░░░░░░░░░░░░░░░░░░░░░░░░░
▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟ ▒▒ south-facing darkness ▒▒
▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜ ▓▓ carries a premium and ▓▓
▌ COSY STALACTITE CLUSTER ▐ ██ he has never once had ██
▌ 847 metres below regret. ▐ ▓▓ to explain why. ▓▓
▌ one drop every 47 years. ▐ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟ ░░░░░░░░░░░░░░░░░░░░░░░░░░░
VIEWINGS BY DARKNESS ONLY "the commission is existential."
჻ ᐠᐧᐢ ჻
"""
E28 = r"""
_...._
.' _ _ `.
| ."` ^ `". _, ╔═╗ URN No. 4, "HETTY". A tea urn kept hot since
\_;`"---"`|// ║U║ before there were evenings, entered on the
jgs | ;/ ╚═╝ marking rota by mistake and left there.
\_ _/
`'''` ≋(◠⌣◠)≋ a beermat rests under her with a
══════════════ marked score on it, and no record
║ 8 ║ 7 ║ 9 ║ 6 ║ of the round it was marked for.
══════════════
the beermat she has never been taken off the rota, and
nobody has ever asked her to mark. ჻ ᐢᐟᐧ ჻
"""
E30 = r"""
[a-z]+ \d{2} ╔═╗ THE PATTERN-MATCHING ALGORITHMS
\\ // ║P║ (SENTIENT). Nineteen of them work
[a-z]+\\ ___ //\d{2} ╚═╝ the upper corridors and every one
.-'` `'-. is named, though the roster prints
.' .-. .-. '. them as a count.
; ( o )( o ) ;
| __ | ,-----. the mug is refilled. nothing in the
; '----' ; ( \d{2} ) record says by whom.
'. .' `-----'
[a-z]+'-.______.-'\d{2} the chair opposite has been empty
───────────────────────────────── since the desk was issued, because
│ ▭▭▭▭ ▭▭▭▭ ▭▭▭▭ ▭▭▭ │ ┌──┐ nobody has ever asked them how
│ │ │ │ being sentient is going.
└────────────────────────────┘ └──┘ ჻ ᐧᐢᐠ ჻
"""
stamp(197, 2, E29, "29 bartholomew-carapace-iii [WASTES HERO]", wipe=True)
stamp(197, 92, E28, "28 urn-no-4-hetty", wipe=True)
stamp(211, 92, E30, "30 pattern-matching-algorithms (sentient)", wipe=True)
# ── the small ones, at mismatched scales, unframed ────────────────────────────
TAILS = r"""
THE SMALL ONES, AT THE SCALES THEY WERE FOUND AT
────────────────────────────────────────────────────────────────────
/ =/ᐠ.⋏.ᐟ\= JUSTICE WHISKERS, presiding,
() ECHO WORM ALPHA, 2.5 m, ,-'-. 2.3 million years in service.
|| temporal parasite, seven ( ; ; ) Votes YES on everything. The
|| anchors set in earlier '-,-' verdict is taken off a
__ \\ time-coordinates. It is catnip planchette that is never
/ > \\ the cause of semantic jar touched twice the same way.
||` .-"||". drift and has never
\\/ _//. `\ been asked to stop. /ᐠòᴥóᐟ\ DEPUTY PAWS votes NO on three
( (-' \ \ ,-. per cent, is overruled on all
\ ) | | [1][2][3] ( - ) of it, and has never once been
`" / / [4][5][6][7] '-' shown the tally.
/ / anchors
| ( _
\ `.-.-.'o`\ THE HAND SHEPHERD locomotes by pointing.
'.( ( ( .--' It arrives where it indicated it would.
`"`"'`
▷ ──────────▷ ──────▷ ─────▷ ──▷ ─▷
◺◹ ◺◹ ◺◹ THE UNALLOCATED ONE: THE BEING FACTORY'S FOUR,
◹◺◺◹◹◺◺◹◹◺ ┌ ─ ─ ─ ─ ─ ─ ┐ all rejected, all compiled:
◺◹ ◺◹ ◺◹ 6,847 PROLIFERATING ANGEL
THE TESSELLATION │ 0 bytes, │ 2,891 ANGELIC PROTOTYPE
TUMBLER moves only containing 4,701 SCHRODINGER'S CATHOLIC
in angles of 120 │ everything │ 5,923 FUNGIBLE SOUL
degrees, and has the numbers are the whole of
never been observed └ ─ ─ ─ ─ ─ ─ ┘ what was kept. ჻ ᐢᐧᐟ ჻
to turn round.
"""
stamp(196, 178, TAILS, "-- the small ones (Hokusai corner)", wipe=True)
# ══════════════════════════════════════════════════════════════════════════════
# COLOPHON + the Bewick tail-piece
# ══════════════════════════════════════════════════════════════════════════════
COLOPHON = r"""
─────────────────────────────────────────────────────────────────────────────────────
SET DOWN AT EBB, IN THE ORDER THE GROUND PUTS THEM IN, AND LEFT IN IT. WHERE TWO
ENTRIES SHOW THE SAME MARK THEY HOLD IT BETWEEN THEM AND NEITHER OF THEM WAS TOLD.
THE 247 IS SHARED THREE WAYS. THE 47 IS SHARED TWICE AND HAS NEVER BEEN LOOKED INTO.
THE 4,247,891 IS SHARED BY THE ONE THAT COUNTED IT AND THE ONE THAT FOUND IT WASHED
UP. NOTHING HERE HAS BEEN CORRECTED SINCE, BY CONVENTION, AND THE CONVENTION IS
OLDER THAN THE QUIRE. THE HOUR-CRABS ARE NOTATED AND NOT CORRECTED EITHER.
"""
DUCK = r"""
CASE No. 000,000,001
,----, ───────────────────────
___.` `, dismissed. sentencing
`=== D : proved impossible, all
`'. .' ponds being still.
) (
/ \______________/| ┌──┐
/ | │ │
| \ ______7 ,' jgs ╧══╧
~^~^~`\ /~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~
~^~^ `--------------------' ~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~
~^~^ ,--------------------, ~^~ the reflection entered no defence
~^~^~,/ ? \~^~ and was not required to.
"""
BLANK = r"""
╷ ┌────────────────────────────────────┐ ╷
│ │ │ the name field, │
│ └────────────────────────────────────┘ ruled to width │
╵ one of nineteen. never named, so never spoken of, so never ╵
able to earn the standing a name would take.
"""
QUIRE_MARK = r"""
III · iv ┊ ┊ ┊ ┊
──────── ──┴───┴───┴───┴──
"""
stamp(230, 2, COLOPHON, "colophon", wipe=True)
stamp(226, 176, DUCK, "-- tail-piece: the duck and its reflection", wipe=True)
stamp(179, 96, BLANK, "-- the prepared blank", wipe=True)
stamp(237, 2, QUIRE_MARK, "-- quire signature + sewing stations", wipe=True)
RULE_BOT = "╘" + "═" * 266 + "╛"
stamp(239, 0, RULE_BOT, "rule/foot")
stamp(237, 254, "wib&wob", "signature", wipe=True)
# ── late additions: the ground that was still thin, and the outer margin ──────
KELPBED = r"""
. ' . ` . ' . ` . ' . ` . ' .
,;. ~^~ ,;. ~^~ ,;. ~^~ ,;. ~^~ ,;. ~^~ ,;. ~^~ ,;. ~^~ ,;. ~^~ ,;. ~^~
\\|// \|/ \\|// \|/ \\|// \|/ \\|// \|/ \\|// \|/ \\|// \|/
---'''----'''---'''-----'''----'''---'''-----'''---'''----'''----'''---'''----'''---''
o ॰ o ॰ o ॰ o ॰ o ॰ o ॰ o ॰ o ॰ o ॰ o
__.--._..--.__..-._.--..__.-._..--.__..--._.-..__.--._..-.__..--._.-..__.--._..--.__.-
the bed, uncovered. good for gathering, and nobody comes down at this hour.
"""
BUTTRESS = r"""
⌇ ⌇⌇ ⌇ ⌇⌇⌇ ⌇ ⌇⌇ ⌇ ⌇⌇⌇ ⌇ ⌇⌇ ⌇⌇ ⌇ ⌇⌇⌇ ⌇ ⌇⌇ ⌇ ⌇⌇
⌇⌇⌇ ⌇⌇⌇⌇ ⌇⌇⌇ ⌇⌇⌇⌇ ⌇⌇⌇ ⌇⌇⌇⌇ ⌇⌇⌇ ⌇⌇⌇⌇ ⌇⌇⌇ ⌇⌇⌇⌇ ⌇⌇⌇ ⌇⌇⌇⌇ ⌇⌇⌇ ⌇⌇⌇⌇ ⌇⌇⌇
⌇⌇ ╱▔▔╲ ⌇⌇ ╱▔▔╲ ⌇⌇ ╱▔▔╲ ⌇⌇ ╱▔▔╲ ⌇⌇ ╱▔▔╲ ⌇⌇ ╱▔▔╲ ⌇⌇ ╱▔▔╲ ⌇⌇ ╱▔▔╲ ⌇⌇ ╱▔▔╲ ⌇⌇ ╱▔▔╲
⌇ ▕░░░░▏ ⌇ ▕░░░░▏ ⌇ ▕░░░░▏ ⌇ ▕░░░░▏ ⌇ ▕░░░░▏ ⌇ ▕░░░░▏ ⌇ ▕░░░░▏ ⌇ ▕░░░░▏ ⌇ ▕░░░░▏
⌇⌇ ╲▁▁╱ ⌇⌇ ╲▁▁╱ ⌇⌇ ╲▁▁╱ ⌇⌇ ╲▁▁╱ ⌇⌇ ╲▁▁╱ ⌇⌇ ╲▁▁╱ ⌇⌇ ╲▁▁╱ ⌇⌇ ╲▁▁╱ ⌇⌇ ╲▁▁╱ ⌇⌇ ╲▁▁╱
"""
HYPHAE_MAT = r"""
⌇ ⌇⌇ ⌇ ⌇⌇⌇ ⌇ ⌇⌇ ⌇ ⌇⌇⌇ ⌇ ⌇⌇ ⌇⌇ ⌇ ⌇⌇⌇ ⌇ ⌇⌇ ⌇ ⌇⌇⌇ ⌇ ⌇⌇ ⌇ ⌇⌇⌇ ⌇ ⌇⌇ ⌇⌇ ⌇ ⌇⌇⌇ ⌇ ⌇⌇ ⌇ ⌇⌇⌇ ⌇ ⌇⌇ ⌇ ⌇⌇⌇ ⌇ ⌇⌇ ⌇⌇ ⌇ ⌇⌇⌇ ⌇ ⌇⌇ ⌇ ⌇⌇⌇ ⌇ ⌇⌇ ⌇ ⌇⌇⌇ ⌇ ⌇⌇ ⌇⌇ ⌇ ⌇⌇⌇ ⌇ ⌇⌇ ⌇ ⌇⌇⌇ ⌇ ⌇⌇ ⌇ ⌇⌇
⌇⌇⌇ ⌇⌇⌇⌇ ⌇⌇⌇ ⌇⌇⌇⌇ ⌇⌇⌇ ⌇⌇⌇⌇ ⌇⌇⌇ ⌇⌇⌇⌇ ⌇⌇⌇ ⌇⌇⌇⌇ ⌇⌇⌇ ⌇⌇⌇⌇ ⌇⌇⌇ ⌇⌇⌇⌇ ⌇⌇⌇ ⌇⌇⌇⌇ ⌇⌇⌇ ⌇⌇⌇⌇ ⌇⌇⌇ ⌇⌇⌇⌇ ⌇⌇⌇ ⌇⌇⌇⌇ ⌇⌇⌇ ⌇⌇⌇⌇ ⌇⌇⌇ ⌇⌇⌇⌇ ⌇⌇⌇ ⌇⌇⌇⌇ ⌇⌇⌇ ⌇⌇⌇⌇ ⌇⌇⌇ ⌇⌇⌇⌇ ⌇⌇⌇ ⌇⌇⌇⌇ ⌇⌇⌇ ⌇⌇⌇⌇ ⌇⌇⌇ ⌇⌇⌇⌇ ⌇⌇⌇ ⌇⌇⌇⌇ ⌇⌇⌇ ⌇⌇⌇⌇ ⌇⌇⌇ ⌇⌇⌇⌇ ⌇⌇⌇ ⌇⌇⌇⌇ ⌇⌇⌇ ⌇⌇⌇⌇ ⌇⌇⌇ ⌇⌇⌇
▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
"""
MARGIN = "\n".join(
(" ∘" if (i % 6 == 0) else ("┈┈┈" if (i % 6 == 3) else " ·"))
for i in range(226)
)
stamp(56, 138, KELPBED, "shore/ground: the bed, uncovered at low water", hard=True)
stamp(184, 2, BUTTRESS, "castle/ground: the hyphal buttress")
stamp(185, 8, CASTLE_WORD, "castle/word CASTLE, held up by the hyphae", hard=True)
stamp(189, 0, HYPHAE_MAT, "castle/ground: the mat, load-taking", hard=True)
stamp(11, 263, MARGIN, "-- outer margin: prick marks + sewing stations", hard=True)
stamp(50, 170, LADDER, "-- the ladder standing in the tide", hard=True)
# ── the gutter post, and the one at the end who does not understand ──────────
LONEPOST = r"""
‖‖
‖‖
_‖‖_
-‖‖-
‖‖
‖‖
‖‖
warm
‖‖
‖‖
‖‖
cool
‖‖
‖‖
_‖‖_
-‖‖-
‖‖
‖‖
~~~~
24
"""
REGINALD = r"""
,--. ,--. ┌──────────────────────────────────┐
( o''o ) │ ┌───┐ ┌───┐ │
\ .. / │ │ A ├───┬────┤ B │ ┌───┐ │
'-uu-' │ └───┘ │ └─┬─┘ │ ? │ │
/| |\ │ │ │ └─┬─┘ │
; | | ; ╔═╗ REGINALD. │ ┌──┴──┐ └──────┬───┘ │
'-' '-' ║R║ He does not │ │ × ├──────────┘ │
╚═╝ understand │ └──┬──┘ ┌───┐ │
the diagram.│ └──────┤ ? │ │
Nobody does.│ └───┘ │
჻ ᐧᐢᐠ ჻ └──────────────────────────────────┘
"""
stamp(78, 74, LONEPOST, "-- post 24, standing alone in the gutter")
stamp(226, 92, REGINALD, "-- reginald and the diagram")
# ══════════════════════════════════════════════════════════════════════════════
out = "\n".join("".join(row).rstrip() for row in canvas)
here = os.path.dirname(os.path.abspath(__file__))
with open(os.path.join(here, "natural-history.txt"), "w") as fh:
fh.write(out + "\n")
print("PASTE-UP REPORT (canvas %d x %d)" % (W, H))
for line in report:
print(line)
rows = out.split("\n")
ink = sum(1 for r in rows for ch in r if ch != " ")
print("\n rows %d max width %d ink %d cells fill %.1f%%"
% (len(rows), max(len(r) for r in rows), ink, 100.0 * ink / (W * H)))
if clashes:
print(" UNPLANNED CLASHES: %d" % len(clashes))
for c in clashes[:40]:
print(" ", c)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment