Generation 16's recorded residue, paid the same day: all eleven full-grid species gain
second animation frames for all four stages — 44 grids — so they finally breathe alongside
the archetype-composed species instead of standing still. The pose is the archetype
B-frames' own idiom, MEASURED before it was imitated: every one of the seven relevant
archetypes changes 6–14 cells per frame, all in the bottom rows — feet slide a pixel, a
wing-tip drops, a blob's base bulges — and the face never moves (the breath is the JS bob;
the pose is the ground contact). The draft is a weight sway: the lowest painted row shifts
one column, the row above shifts the other way, clamped at the sprite's own margins; every
pair was then eye-checked through the real composer (44/44 animate, diffs 10–24 composed
cells, no severed outlines). gridElderB is drafted from the ELDER grid, never the adult —
a fallback there would make the old creature hop a full row between frames. Each pack's
history records the change; palpack validate's optional-slot sweep (added with
generation 16) gets its first B-frame workload.
No new species — the ones already here got their old age. All eleven full-grid species
(15 thistledown, 16 puddlejack, 17 glowtail, 18 latchback, 19 hushwing, 32 pondwink,
33 humblebee, 34 duskmoth, 36 hucklebear, 37 gloamgecko, 38 ripplechub) gain a gridElder:
until now every one of them rendered its unchanged adult art at the stage the game's
emotional payoff lands on, because the client's designed fallback (GridElder ?? GridAdult)
had never been fed. The stoop follows the archetype elders' own recipe (B211/B212, W95):
one row shorter, one row lower, feet planted — drafted by removing each adult's most
vertically-redundant upper row (face rows protected), then reviewed sprite by sprite
against the real composer. Each pack's history records the change.
The drop also closed a fence hole found on the way in: palpack validate swept only
the required trio (gridBaby/Teen/Adult), so a malformed gridElder would have signed
clean and then triggered the client's degrade-whole-species rule wearing a valid
signature. The optional slots (elder + the four B-frames) are validated with the same
structure and floors whenever present — this generation is the rule's first real workload.
Still open, recorded: the eleven carry no second animation frame (gridAdultB and
kin), so they render still while archetype-composed species breathe. Forty-four grids of
authored animation is its own drop, not a rider on this one.
Three studio-authored species against the roster survey's thinnest lanes — the shell, bloom and jelly archetypes each had one resident or none among the packs, and Neon and Alloy were one-member elements. All three are v1 sparse-feature species (the Wickroot pattern — an overlay on the archetype body, no custom grids), authored against a safe-cell map intersected across teen/adult/elder and both animation frames, because a feature cell replaces blindly and the teen and elder grids carry their banding in different cells than the adult (Cairnling's overlay plugs all three stages' accent cells; the first draft left teen pink at (7,10) and elder at (6,7)/(6,9)).
| id | key | name | archetype | base | shiny |
|---|---|---|---|---|---|
| 39 | cairnling | Cairnling | shell | #7E7A6E stone |
#5EBC2F overgrown moss |
| 40 | trundlecap | Trundlecap | bloom | #C1443C amanita |
#702BCA twilight violet |
| 41 | bottlestorm | Bottlestorm | jelly | #C82FEE plasma violet |
#0D7CF2 clear-sky blue |
Bottlestorm was drafted #3D7BFF storm-blue and W64's gene sweep refused it — a
−24° hue-shifted genome lands dE00 1.7 from canonical Bitto, generation 13's own defect
class, caught pre-publish this time by running the merged suite first. The whole hue
wheel was then swept under the same bar (±30° both directions vs every canonical, 2.3
floor, 10.0 pairwise): the only open regions at body-legible lightness are electric
violet and lime. The storm went violet — plasma reads more Neon than sky ever did — and
the refused blue survives as the shiny. Final clearances: Cairnling 12.1, Trundlecap
5.1, Bottlestorm 11.1 against the worst genome-reachable crossing; 12.0+ canonical.
CIEDE2000 re-validated against W64's recorded 4.1 before any number was believed.
Id 35 stays unspent — the Peatling record holds.
24 tags-only entries against compiled regions — island / coastal / alpine, B191's own
fishing-pole vocabulary, two tags maximum, only where the geography is beyond argument. The
third channel finally carries content, four generations after the client learned to read it
(B469): tag chips appear on the found-place row of EXISTING Pals, and channel-verify went
fully green for the first time in its history — all three channels verified, cached, and
agreeing with the signed registry on a fresh live profile.
W64's colour clauses caught all three generation-12 species on the first full-suite run
against the merged content: Hucklebear 4.1 dE00 from Loamcap, Gloamgecko 7.2 from Mossbyte,
Ripplechub 8.5 from Puddlejack — plus a genome-reachable crossing (a hue-shifted Pilotwire
minting a Pal that reads as Ripplechub at 1.3 dE00). The same class generation 10 recoloured
seven species for. Fixed pack-side and republished within the hour: Hucklebear #8A2E42
deep berry-wine, Gloamgecko #445C51 dark dusk-moss, Ripplechub #A83D8F magenta koi with
a seafoam shiny. The last pairing was solved structurally — hue rotation preserves lightness,
so the wine at L≈33 cannot meet the magenta at any rotation. Full suite green at publish.
Three species from the guidlands intake's CC0 tier (DCSS rltiles, dcss-mon/animals/ —
licence quoted from the drive's own credits.txt: "COURTESY (CC0, no credit required)"),
drafted by sprite-draft.mjs in wave 58's batch and hand-finished in wave 59: all three
stage grids authored per species, eyes deliberate (E iris + W white), premiere DNA minted
by FreezeHarness, palpack validate green at 24 species.
| id | key | name | archetype | element | premiere seed |
|---|---|---|---|---|---|
| 36 | hucklebear | Hucklebear | quad | Bloom | the thicket kept one sweet |
| 37 | gloamgecko | Gloamgecko | crawler | Mist | the wall was warm all night |
| 38 | ripplechub | Ripplechub | fish | Tide | the jetty saved a crumb |
Id 35 stays unspent — it is the record of the pulled Peatling (generation 11's provenance question), and spending it would erase what the gap remembers.
Published the same day on the owner's word: merged from staged/gen12, the vault key
derive-checked against the pinned public half before signing, generation 12 signed and
verified (clears the current key, refused by the retired one), live on the CDN within a
minute, and a fresh browser profile on the live game cached generation 12 end to end.
Staged 2026-08-21 and waiting on the signing ceremony. THREE species and three Playground
scenes, drawn from the owner's asset drive (the3dcoder/guidlands) through the repo's own
pipelines — the first drop whose art starts outside this project.
Pondwink (pondwink, id 32, Tide, quad) — a frog that is never quite where you saw it.
Humblebee (humblebee, id 33, Bloom, wisp) — modest ambitions, immaculate manners.
Duskmoth (duskmoth, id 34, Mist, wisp) — stitched from the last ten minutes of evening.
A FOURTH WAS STAGED AND PULLED, and id 35 is deliberately left unspent. Peatling was drafted
from bog_troll.png under the guidlands repo's client/public/assets/bestiary/, and carried a
credit line calling that art owner-produced. It is not: that repo's own credits.txt files the
Admurin Mega Pack under PURCHASED (commercial licence) covering "every per-species sheet
under bestiary/", and scripts/bake_bestiary.py names exactly three drawn exceptions —
mud_crab, giant_toad, zombie — none of them this one. The pack's terms are not on the
drive, and a signed drop REDISTRIBUTES art rather than merely using it in a build, which is
where pack terms most often differ. The owner pulled it rather than publish a provenance
question. The draft stays in the app repo marked HOLD; nothing here claims id 35.
Each of the three carries hand-finished baby/teen/adult grids (drafted by tools/sprite-draft.mjs
from CC0 DCSS rltiles, finished by hand — provenance in every source file's credit), lore, stat
and need biases, and a premiere DNA minted by FreezeHarness mint.
Playground scenes — backgrounds/backgrounds-9816c8dd.json replaces the single-scene file:
Lantern Thicket (unchanged, 🪙900), Peat Hollow (🪙900), Porchlight Lane (🪙900),
Honeydawn Field (free). Honeydawn was proposed at 800, which the rulebook refuses — v1
prices are free or at-or-above 900, so that eight Pals never undercut one — and the owner took
the free branch rather than the floor. It is the first free scene the CHANNEL has carried
(Meadow is free but compiled), so a keeper with no coins can still change where their Pals
live. A republish is a wholesale replace, so the three arrive and Lantern Thicket keeps its
price and its owners.
Client requirement met: v2.21.0 (live on both origins, verified 2026-08-21) understands every channel this drop uses — the backgrounds channel has shipped since v1.33.
A wardrobe-only drop, and the first publish under B205's guards.
Enamel Mug (hat-enamel-mug, hat, common, 🪙120)
Navy rim, one chip, and more tea through it than most cupboards see in a
lifetime. Retired to a warmer job. ☕
Yarn End (scarf-yarn-end, scarf, common, 🪙120)
Too short for the row it was meant for. Too good to throw out. 🧶
Both were authored and gated in the app repo by W68-DROP, which assembles
them into the canonical bytes publish emits and reads them back through the
shipped WardrobeFile.Read, counted — both channel readers are fail-soft
by design, so a rejected piece is silent, and "it did not throw" is the
posture that cost generation 4 two species. Hat and scarf rather than props on
purpose: the shop's tier-heading branches exclude props and the priced ladder
stops at Rare, so a coin relic prop would render as a bare tile with no
heading and a dead tap target. Filling that cell is an app release, not a drop.
What the guards reported, and why the third line is the point:
freshness: baseline generation 8 byte-identical to the live registry
append-only: backgrounds 1 → 1 entry, none removed
append-only: wardrobe 1 → 3 entries, none removed
append-only: 6 species and 2 channels compared against generation 8
Wave 40 came one command short of publishing from a generation-7 clone whose
palpack.mjs contained zero references to backgrounds. That would have
re-issued an already-signed generation and silently unpublished Lantern
Thicket — a 900-coin background — for everyone who had bought it, with no
error anywhere. The channel guard now derives its set from the previous
payload's own keys rather than a named list of two, and the freshness gate
refuses any clone that is not byte-identical to live.
Verified live after publish: registry reports generation 9, the cosmetics file carries all three pieces (both new ones and The Lamplighter), and the backgrounds channel still answers 200.
Emberimp (species 14) — premiere code: e1f20c80-000e-c5e0-5f54-29a6afd8f631
Paste it in the Hatchery seed box (requires app content sync — the app fetches
this repo automatically). Weekly weight-table rolls arrive with the next app
release; until then the premiere code is the only wild source. 🔥
The first drop assembled through the Barn queue: filed → operator-approved in /admin → signed. Custom 3-stage art debuts (pack v2).
Thistledown (species 15, Bloom) — premiere code: e0915087-000f-c9ad-88cf-33c76fb4819c
A wandering tuft that collects overheard wishes. Founder phrase: "make a wish" 🌾
Puddlejack (species 16, Tide) — premiere code: 5f9cbe7b-0010-c9b0-0315-a7d139d76a54
A puddle that jumped back. Founder phrase: "after the rain" 💧
Glowtail (species 17, Neon) — premiere code: b3ce4dbe-0011-cf70-1a1b-498cd46fdebb
A neon gecko whose tail writes names in the dark. Founder phrase: "night market" ✨
Also in this drop: Emberimp weight 60 → 69 + lore touch-up (dex-edit, first staged-pool publish). Paste any premiere code in the Hatchery seed box (content sync fetches this repo automatically).
Two species, and the first content-delivered cosmetics ever to ship: pieces now ride a v2 species pack as an additive field, exactly as v1.7 designed and nobody had yet used.
Latchback (species 18, Alloy) — premiere code: 3f5b0022-0012-cd25-4ecd-1c7a8005c4e6
A walking strongbox that files everything and returns nothing. Premiere seed: "sign the logbook" 🧰
Carries Paper Admiral (hat, uncommon, 350 coins).
Hushwing (species 19, Mist) — premiere code: ebfdbe91-0013-cecb-7058-58378a025dfa
A fog-wader that lifts one wing and the morning goes quiet. Premiere seed: "quiet as weather" 🌫️
Carries Moth Hour (aura, rare, 900 coins) — the first aura with a shape in it
rather than a dither, three moths that never lose a cell on any body at any stage.
Paste either premiere code in the Hatchery seed box; content sync fetches this repo automatically, and the cosmetics appear in the shop's Style tab once it lands.
That last sentence was wrong and this drop was broken. Neither species appeared for anyone and neither cosmetic existed; see generation 5. Left standing rather than quietly corrected, because a ledger that edits its own claims after the fact is not a ledger.
Held from this drop, and why, in drafts/2026-W31/: Geodecoil (art not at the
bar — the adult read as architecture rather than a serpent) and Wander Bell
(its milestone slot was filled by a compiled piece in game v1.8.0, so it needs
either a coin price or a new milestone — owner's call).
Generation 4 made Latchback and Hushwing invisible to every live client, and this generation is the rollback. No species added, none removed, both cosmetics arrays stripped.
The cause was one missing line, four layers down. palpack has always written
"slot": "hat" as a string; System.Text.Json will not turn a string into an enum without
a JsonStringEnumConverter, and the game's sync options did not carry one. So every
cosmetic-carrying pack threw while deserializing — and the throw happened inside the
blanket catch that wraps whole-pack ingestion, so what got dropped was not the cosmetic
but the species. Both new Pals hatched as dormant mystery eggs.
The documented promise — "a malformed cosmetic is skipped, never sinks its species" — could
not hold, because the failure landed before any per-item code ran. That is now a rule with
teeth rather than a comment: pack cosmetics are read through Core/Cosmetics/PackCosmetics.cs
off a raw JsonElement, parsed and validated one piece at a time, and no additive pack field
may ever cost a species (game decision D57).
Recorded late: this entry was written with generation 6, because generation 5 shipped as an emergency and the ledger was not updated at the time. Noting that rather than backdating it.
The cosmetics from generation 4, re-shipped now that the client that can read them (game v1.9.0) is the one actually running. No species changes — same six ids, same premiere codes as generation 4; only the two packs carrying wardrobe pieces moved.
Paper Admiral — hat, uncommon, 350 coins, on Latchback's pack. Folded from yesterday's news. Commands a fleet of one.
Moth Hour — aura, rare, 900 coins, on Hushwing's pack. The first aura with a shape in it rather than a dither: three moths that never lose a cell on any body at any stage. They think you're the porch light. Every night, all three of them, absolutely certain.
Wander Bell — scarf, rare, 900 coins, on Latchback's pack, and the first wandering piece: it is only in stock roughly one week in three, on a schedule derived from its own key, never away more than two weeks, and the shop says when it is due back. Some weeks the stall has one; most weeks the hook is bare.
Why it is a coin rare rather than the elder trophy it was drafted as: that milestone slot was taken by a compiled piece in game v1.8.0, and granting two scarves for one achievement is worse than repricing. The name then earned a mechanic instead of losing one.
Signed only after the signed pack bytes were read back through the shipped
PackCosmetics reader — every piece parsing, both rares still Rare, the wandering flag
surviving the wire — which is the check generation 4 did not have.
No species changes. One cosmetic, and it is the first ever delivered by
cachepal-cosmetics-v1 — the file cosmetics now have to themselves (D61), rather than
riding inside a creature's pack.
The Lamplighter — hat, relic, 2600 coins. They walked the whole street at dusk so nobody would come home to a dark house. No one ever thanked them. They went out again the next night.
Hat/Relic was one of only two empty cells in the shop's whole ladder, so this fills a real
hole rather than crowding a full shelf. Requires game v1.10.0 — older clients skip the
registry's wardrobe reference as an unknown field and simply see a shop without it.
Two things about the art are firsts. Its single glint is the one * the shipped relics all
carry, so it belongs to the same family as The Long Thread and Signal Lantern. And it is the
only hat in the game that never clips: every painted cell is inside rows 1–4 and columns
4–13, which is the box that survives all nine hat anchors including shell's (−4, +5) — the
offset that shaves a corner off every other hat. Verified against all 27 archetype × stage
combinations, 22 of 22 cells landing on every one.
No species changes, no cosmetics. One Playground background, and it is the first ever
delivered by cachepal-backgrounds-v1 — the channel scenes now have to themselves (B90),
built on the same isolation lesson the wardrobe file was (D61): its parse path cannot reach
the species registry, so a bad scene can never cost a creature.
Lantern Thicket — Playground background, 900 coins. Paper lanterns against the dusk. The fireflies came to see.
Requires game v1.33.0. Older clients skip the registry's backgrounds reference as an
unknown field and simply see the three compiled scenes, exactly as before.
The art travels inside the signed file. A background needs pixels, and the obvious
shape — a URL to this host — was refused: it would add a second fetch path with its own
failure modes, put an unverified remote URL inside a CSS url(), and break offline, because
the client caches files rather than downloads. Carrying the PNG as base64 inside the
SHA-256-pinned file means the pixels inherit the registry's Ed25519 chain for free, render
from cache with no network at all, and cannot be swapped by anyone without this key.
Why this drop waited for a reload rather than a deploy. The client returns early from a content sync when the generation is not newer — and that check sits ABOVE the channel fetches. So a device that had synced generation 8 while still running v1.32.0 would never have fetched this file at all: not on update, not ever, until generation 9. Nothing would have errored; the scene simply would not exist. So v1.33.0 went live first, and this was signed only after the household confirmed it had actually reloaded — the same shape as the generation 6 wait, for a sharper reason.
palpack publish learned the channel in this drop, rather than the reference being pasted
in by hand — a hand-added ref would have been silently dropped by the next publish, which
rebuilds the payload from the repo. backgrounds/CURRENT names the live file in one line,
and background keys are now append-only for the blunt reason cosmetic keys are: a scene
that vanishes stops resolving, and its owner's Playground heals back to the Meadow. The bag
row survives, so a republished scene returns to whoever bought it — but the thing they paid
for stops appearing, which is the same broken promise a vanished hat would be.
Signed only after the signed file bytes were read back through the shipped
BackgroundFile reader — one scene, price 900, band and rest spots intact, art arriving as
a data URI — which is the check generation 4 did not have.
Twelve new species, ids 20–31, taking the live roster from twenty to thirty-two. Six counterpart pairs — a made thing and a grown thing on the same body plan, opposite in nature — spread across the archetypes the roster was thinnest in: serpent, jelly, fish, crawler, bloom and shell each had one or two species and now have three or four.
Eight arrive day-one. Four are earned on the expedition ladder, gated as whole pairs rather than
halves: the crawlers (tallymite, shinglecoat) at the Dusk Market's rung, the shells
(bramblewick, palisade) at the Chalk Downs'. A pair exists to be read against itself, so gating
one and not the other would hand a keeper half a joke. The rungs are the ladder's own, read through
MilestoneCatalog rather than retyped, and the counter behind them sums over every Pal a keeper has
raised INCLUDING THE DEPARTED — a species that appeared on somebody's board must never leave it
because a Pal died.
Seven species were recoloured, all of them pack-side, and the compiled roster was not touched.
Four for canonical separation: glowtail, hushwing, latchback, thistledown sat below
W64-ROSTER's dE00 bar of 10 against species they could genuinely be confused with, the worst pair
at 5.0 — near the just-noticeable difference. Those six collisions had existed since the registry
began and nothing had ever measured them, because W64 enumerated only the fourteen COMPILED
species. It now reads the content repo too (B343).
Three more for something a canonical measurement cannot see. W64's group C sweeps every species
across its whole ±30° hue range and requires it to stay a just-noticeable difference from every
other species AT REST — and a hue-shifted glitchfin read as sendling at 0.7 and as
puddlejack at 1.5. A mutated Pal that looks like a different species. Twenty-eight crossings
across eight directed pairs, all in one blue/cyan cluster, cleared by moving sendling, pilotwire
and puddlejack.
Why this drop was signed twice. The first attempt produced a generation 10 containing SIX
species while eighteen were being published: the session's working copy was reverted underneath the
tool between validate (which counted 18) and publish (which read 6). Every existing gate was
satisfied, because they all ask whether the tree is internally consistent and current against the
live registry, and a smaller tree is both. Nothing reached the CDN only because the push had not
happened — luck, not a control.
palpack publish now REFUSES an unpinned tree: PALPACK_EXPECT_COMMIT and
PALPACK_EXPECT_SPECIES must be set, and both are re-checked immediately before the first byte is
written, because the whole point is that the tree can move mid-run. The commit is the pin rather
than the count alone, since eighteen species can be the wrong eighteen. Attack-proven three ways
before this drop was signed with it.