Work
The work marks of the wiki: figures whose title starts with a status word.
They live beside the design they move; this is only a view.NEXT the current best small bets
Bridge styled Ghostty render-state rows into the block wallworld-terminal Intent: replace the formatter fixture bridge in #7ZM22R with world-native
render-state rows, while keeping process and input concerns out of the first
crossing. The unified surface-wide fit and native-body/Slug-overlay split
remain projections of the… Parameterized M-x prompts through presentation typesagent-in-the-world Intent. Finish what #0IF4TY promised: the command menu should offer commands
with arguments, prompting through accept with the presentation types the
agent already uses, so place-block-at is one definition reachable by key,
M-x, and tool. Evidence. The tool… Give dynamic columnar populations explicit compactiondomains-and-bundles The block-particle population is the next honest client. Its block reference,
position, velocity, size, age, and lifetime naturally form quantity-aware SoA
lanes, but its update removes arbitrary expired rows while preserving survivor
order, and overflow… Compare Slug coverage at glyph edgesslug-bezier Intent: distinguish “a shaped run renders” from evidence that Slug's edge
coverage and geometry expansion are correct across backends. Evidence needed: exercise the portable draw on Vulkan, compare boundary pixels
with a small CPU winding oracle, and test… Grow the workbench and the game as one command vocabularyluft Intent. Add atelier tools, authored-world interaction, and eventually game
features as panes, presentations, commands, and command-table layers of this
one frame. A feature crosses from luvcraft when LUFT owns its semantic command
and state transition; the… Implement the site-stream LUFT renderer backboneluft-sites Intent. Rebuild LUFT's surface rendering on the decomposition of #8UGGY0:
integer lattice cells (a=8, m=1 to start), three instance streams with
fixed templates, CPU-side star classification into per-site records, and
turn-don't-die junctions per #GT4Y9J.… TODO visible and likely, not yet selected
Let the animals be part of the saved worldblock-world Intent. A checkpoint currently saves the world description and the player
(#TR2JNQ) and says nothing about who lives in it, so every session grows a
fresh population around the player and yesterday's turtle is not the one you
meet today. An animal with an… Reuse Metal frame submission resourcesframe-performance Intent: stop constructing and releasing one MTL4CommandAllocator and one
MTL4CommandBuffer for every frame when a bounded frame-slot owner can reuse
them safely. Evidence: the current trace exposes :metal/allocate-frame-resources as a
separate region, and… Separate drawable pacing from encoding distributionsframe-performance Intent: report how much host frame time is runnable encoding work and how much
is waiting for presentation availability, instead of treating both as one
“encoding” number. Evidence: native sampling after #WEE1DX found the frame thread mostly sleeping
inside… Structural shader-type identityquantities-and-measurement Intent: make shader-type identity structural — hash-consed composite
types mirroring SPIR-V's own type grammar, keywords as parse
abbreviations — per #P2KN1D. The CPU-lowering half this mark originally
bundled is done: #FTQEQD compiles checked definitions to… Measure light-to-mesh latencysky-and-light Intent: find out whether owner-thread relighting plus one mesh capture per
frame feels immediate enough during edit bursts and residency churn. Evidence to gather: – SLY-visible counters or capture logs report relight cells popped, chunks
touched, light… Verify resized presentation in a live capturesky-and-light Intent: the scene colour, depth, presentation, and lens-chain attachments are
all created once from the canvas extent at session start. A resized window
therefore presents a stale-sized image. The bug predates the lens chain, but
the chain multiplies the… Make films block entities so the material vocabulary closesvocabularies Intent. Give films the representation terminal walls already have: one static
:film material, with per-film state in sparse coordinate-keyed entities
outside dense site storage. The material vocabulary then closes, which admits
a global material domain, a… Derive the regular vertex-star table and choose singular topologyluft-sites Intent. Build the vertex-star table that #8UGGY0's fan stream reads:
for each regular star, derive the incident bands, their offset-line
intersections, the turn count k, and the tile fan entirely in integer
arithmetic. Separately choose whether singular… Make the Vulkan disocclusion test depth-awaretemporal-antialiasing Intent. Sample the retained current depth in Luft's shader resolve, choose
the frontmost velocity from a small neighbourhood at silhouettes, and reject
history whose reprojected depth no longer describes the visible surface. This
is velocity dilation and… Pairs, loop tables, and layouts from arglists alonewiki-site Intent. Smaller layout wins in the order they pay: keyword pairs on
rows aligned by a subgrid instead of a guessed min-width for the key;
loop as a keyword table, each clause a row of keyword and rest as
Emacs indents it; and function calls whose arguments… A wiki browser frame in mcluvwiki-site Intent: a McCLIM application frame over the loaded luv-wiki-site documents, with
figure and mention presentations, page navigation, and backlinks; the
exercise that tells us what the model in #AGTIO4 is missing. Evidence: none yet; the shader lab in… WAIT blocked on outside evidence or another step
A WIKI package of figure symbolswiki-site Intent: the second rung of #F6B3NI: intern figure IDs as external symbols of
a WIKI package at load-op, attach the heading, and offer wiki:ref for
xref-visible references from code. Evidence: waits on #NPZWLR, which should show what accepting or invoking… IDEA tempting, not allowed to steer implementation yet
Authored edits form sparse swaths, not another terrain fieldagent-in-the-world Intent. Add a Survey Edits observation over the little world's sparse
authored overlay. Nearby edited sites should be clustered into
semi-contiguous swaths and each swath presented by its integer bounding box,
edited-site count, box fill ratio, and final… Terrain summits are born at peaks and merge at saddlesagent-in-the-world Intent. Add a Survey Terrain observation derived from a resident
height-field window. Besides elevation range, relief, and slope summaries,
report the strongest summits by a discrete merge tree: descend through height
levels, birth a component at each local… Exposure as a logarithmic level in the sky modelfield-notes-mp-units Intent: when the HDR path (#WLHDRB, #VG8TGG) introduces exposure and
adaptation, model exposure value as a base-2 log-domain point over
luminance (photographic stops) and exposure compensation as a gain, as
a small first client of the level/gain vocabulary… March the shadow map for shafts and compare against the screen sweepmoppe-legacy Intent: #VG8TGG shipped the cheap radial sweep because terrain which occludes
the sun is already dark in the bright image. #BAP0QU's marched version is
strictly better informed: it knows about occluders which are off screen or
behind the camera, and it… Lower checked domains to native SIMD kernelsquantities-and-measurement Intent: eventually let a field or simulation phase select a scalar or SB-SIMD
realization of the same semantic operation once per dense kernel. Evidence: #B5L7VG and the native SIMD study describe the representation seam,
and #LDP5UR now supplies generated… A save is a vocabulary table and its columnsvocabularies Intent. Reshape the save format as a vocabulary table plus columnar world
data, per #FTDOCV, and make loading a vocabulary resolution that produces an
index remap. Aliases, unknown materials, and reordering all become rows in
that remap. Evidence. The format… Compact surviving faces only when measurement earns another pathluft Intent. If vertex invocations over absent or back-facing sites become a
measured bottleneck, compact visible face indices before drawing. Compute
compaction plus an indirect draw and a future mesh/subgroup path are competing
experiments; this mark does not… Draw the torus, not only its fundamental domainluft Intent. A camera outside the fundamental domain sees a cut world: faces at
x=0 that a solid neighbour at x=period-1 cancels are honestly absent.
The vertex stage could translate each site's anchor by the domain period
toward the camera, or the host could draw… Give historical captures an annex retention policywiki-site Intent. Decide which historical annex keys remain reachable when recipes or
figures change, without turning the ordinary source clone into a media archive. Evidence. The initial publication keeps current keys in Chapel and SWA and
keeps their metadata on the… Structural associations through the MOPwiki-site Beyond textual mentions, a metaclass mixin or class option could make the
association between a class or generic function and its wiki figures
structural: (defclass ... (:metaclass documented-class) (:figures LNRY72))
or a wiki:figures slot on a metaobject,… Source-anchored file linkswiki-site Org file: links with a ::(defun name search string presently point at the
file on GitHub without the search. A later render step could resolve the
search to a line number at build time, since the source is in the same tree. DONE closed, with the evidence that closed them
Give rendering resources one transactional ownertechnical-debt luvcraft-renderer now solely owns named pipelines, layouts, resources, frame
state, atlas state, and one atomically published frame-attachment cohort.
Startup, resize, atlas replacement, live-session migration, and teardown all
use that owner. A failed… Make command phases an open protocoltechnical-debt The four command-family type tables are gone. Internal generic functions own
rebase, preparation, clipping, and encoding while the command structures and
dense arrays stay compact. Direct luvcraft replay builds one dynamic-extent
context, so cached frame… Give the shared shader graph its own hometechnical-debt The neutral type graph, parser, quantity checks, source revisions, live
definition tracking, and lowering generics now live in luv/shader and the
LUV.SHADER package. SPIR-V's literal model and lowering context live in the
sibling luv/spir-v system; luv/msl… Make the portable HAL boundary tell the whole truthtechnical-debt Portable create and adopt-native-texture methods now copy and canonicalize
buffer/texture descriptors before backend dispatch. Size, dimension, and
usage syntax has one error vocabulary; every texture extent is (w h 1);
Metal and Vulkan retain only… Keep one production light solvertechnical-debt Production from-scratch and incremental dispatch now accept only :compiled;
unknown and retired names signal. The handwritten frontier solver and legacy
incremental reconciler are gone. A simple from-scratch oracle and the renamed
candidate comparator… Expose the shader, frontier, and reference islands already earnedtechnical-debt luv/shader, luv/spir-v, and luv/msl are now independent sibling systems,
and luvcraft/light-reference keeps the oracle out of production loading.
luvcraft/frontier now owns the frontier package and compiler over only
luv/arithmetic and luvcraft/world; a cold… Delete the queue without deleting historytechnical-debt The gnome aliases, literal crosshair module, shader revision alias, palette
constructor/install compatibility, and compatibility meshing entry points are
gone; their tests now exercise production specifications, chunks, snapshots,
and vocabulary-backed… Persist and resume the authored little worldblock-world Intent. Let building survive quitting and restarting without treating
resident chunks as canonical world storage or blocking a frame on file I/O. Evidence. luvcraft/persistence.lisp implements the versioned description
protocol, validation, atomic… Author the pre-noon ridgeshowcase-gazetteer Intent. Turn #NLCFX0 into the first new subject after the construction
proposal: one composed terrain still and one motion proof from the same hidden
session, with the seed, camera, sky profile, clock, grade, and layer choices in
source. Evidence. The current… Open the phone-first galleryshowcase-gazetteer Intent. Grow the first folio into something that can be browsed for pleasure:
dozens of distinct stills and films, with clean portrait compositions taking
the lead on phones and a smaller set of landscape play views retaining the
crosshair, hotbar, and… Put action, inhabitants, and authored surfaces in the galleryshowcase-gazetteer Intent. Make the enlarged folio show things one can do as well as places one
can admire: mine a wall, build a brick arch, converse through the focused-FOV
inhabitant view, inspect the metabar and M-x command table, use a real
terminal wall, and watch a… The derived 2 by 2 block wall exposed the wrong abstractionworld-terminal Intent: test the literal grid correspondence as aggressively as possible.
Every derived display block carried a 2 x 2 tile of terminal cells, so an
80 x 24 viewport became a 40 x 12 wall without losing character
resolution. The mapping is exact and… Attach a live PTY independently of the render boundaryworld-terminal Intent: make the world terminal interactive without folding process ownership
or callback reentrancy into its renderer. The PTY owner can now advance beside
the render-state work rather than waiting behind it: both meet at the owned
Ghostty terminal and… A luv agent surface would inherit these seamsagent-harnesses Closed by An agent in the little world,
whose NEXT mark #YDAQNO is the concrete first slice and whose figures cite
the ones below as premises. Intent. Not a plan yet: an agent already talks to luv through the world
terminal (#NMAD2U) and through ./sly; if luv… Give embodied agents a truthful third-person glanceagent-in-the-world The basic view-surroundings verb now realizes #IFEAQ6: it captures on the
canvas boundary under a temporary over-the-shoulder pose, restores the
player's camera, retains one semantic observation, and sends its clean PNG
beside the compact textual census. … Give construction tools a visible possible worldagent-in-the-world Intent. Let an embodied agent propose a voxel change set which remains inert
while the player sees the actual candidate materials in the world, flies
around them in focus chat, and approves, denies, or steers in ordinary words. Evidence. Propose Block Box… Wire three commands into an agent and draw their cassettesagent-in-the-world Intent. The first slice: a luvcraft.agent layer where a command-tool
wraps a CLIM command (#0IF4TY), presentation-type-json-schema derives its
schema, tool bodies' values are presented under +model-view+ (#WS5OEX),
and a cassette-view draws each call while it… Discrete destinations, continuously embodiedagent-in-the-world Intent. An embodied agent acts in places rather than holding a WASD key:
Move To (x y z) is one discrete, nearby destination and one terminal
result. Intent does not flatten physics. The body has a continuous position
and velocity, accelerates through the… Draw McCLIM text as world geometryclim-in-the-world Intent. Give an embedded surface a way to emit Slug glyph runs in world
space instead of rasterizing its text into the mirror texture, so that a
panel's type is as sharp as a terminal wall's at every distance. Evidence. #I3G0S7 for why texture size cannot fix… Replay the complete McCLIM stream at its destinationclim-in-the-world Intent. Remove the pane-sized backing texture from embedded GPU mirrors and
preserve painter order while drawing every supported command family directly
into either the world or HUD pass. Evidence. The GPU medium already retained one ordered command stream… Extract the application workbench beneath both gamesapplication-workbench Intent. Give general Lisp-application tools one reusable owner, with thin
Luvcraft and LUFT adapters, so improving their reliability improves both
experiments without making their gameplay models the same. Evidence. The current systems separate luv/mcclim,… Extract a quantity-aware columnar bufferdomains-and-bundles Intent: extract the synchronized specialized storage proven by the lighting
frontier into a generated columnar-buffer substrate, while making its
physical lanes and concrete row quantity declaration inspectable. Keep level
scheduling, spatial stepping, and… Bind fixed columnar materializations to finite domainsdomains-and-bundles Intent: make the dynamic lighting buffer one storage policy over reusable
columnar layout metadata, add a fixed domain-bound policy, and prove the split
with the meshing snapshot rather than a synthetic universal bundle. Evidence: columnar-layout-definition… Percolate domain-bound representations through voxel storagedomains-and-bundles Intent: make the fixed materialization vocabulary describe the ordinary
resident and captured voxel fields too, and transfer palette-backed block
content as one representation rather than as an accidental pair of arrays. Evidence: resident chunk-light-field… Trace one real frame with nested CPU zonesframe-performance Intent: make a coarse frame explanation one ordinary benchmark away, with an
opt-in macro whose disabled path neither constructs events nor changes backend
control flow. Evidence: – The trace buffer records a zone name, parent, depth, monotonic… Convert the outer runtime boundariesframe-performance Intent: make one ordinary live capture explain the outer event, frame,
production, streaming, simulation, and overlay structure before adding the
denser subsystem waves in #1G3ORG. Evidence: the communicator instrumentation already localized a roughly
5.4 MB… Stream one chunk window under measurementframe-performance Intent: measure the frames where traversal creates real asynchronous chunk
load, lighting, mesh, GPU upload, and publication work, rather than infer that
cost from the fully resident steady benchmark. Evidence: This begins from the same settled 9 by 9… Share function application across arithmetic and shader realizationsmathematical-shaders Intent: make one portable arithmetic definition callable both by compiled Lisp
and from a shader body, sharing source identity, parameter normalization, arity,
lexical bindings, recursion rejection, and application provenance. Evidence needed: move Slug's two… The reference's shape, with its constants as knobsslug-bezier Read against the 2026 reference shaders and the retrospective, luv's Slug
had the algorithm -- eligibility, two rays, weighted combination, sorted
bands -- but not the reference's shape around it. This figure closes the
gaps and names what the reference… One fixed contour proves luv's pixel-stage mathematicsslug-bezier Intent: prove that luv's shader DSL can state, lower, compile, and actually
draw the numerically important pixel-stage core before designing texture and
font-data machinery. Evidence: – slug-quadratic-outline is now a typed shader function over the… Teach the shared language Slug's structured band foldslug-bezier Intent: add the smallest shared control-flow and indexed-data vocabulary that
states one Slug band traversal without burying its concrete data contract in a
generic scene abstraction. Evidence needed: after shared function application #YZS04W, add… Pack arbitrary quadratic contours into Slug bandsslug-bezier Intent: turn arbitrary connected quadratic contours into dense curve and band
data suitable for the shared Slug fold. Evidence needed: a Lisp outline model preserving contour boundaries and
orientation, line-to-quadratic encoding, conservative band overlap,… Shape and draw a HarfBuzz text run through Slugslug-bezier Intent: join HarfBuzz shaping to the proven zpb-ttf outline boundary and
render a run as placed Slug glyph quads without a software rasterizer. Evidence: #4G7064 records the owned HarfBuzz binding, ffi ligature and
cluster regression, glyph-ID-to-outline… Put a shaped run into the moving worldslug-bezier Intent: cross #4G7064 from an isolated target into the actual luvcraft scene,
with world placement, camera projection, scene depth, and alpha composition all
participating in the same frame as terrain. make-world-text-run is now a semantic owner around dense… Cache shaping and device glyph outlinesslug-bezier Intent: make text runs cheap to reconstruct without hiding GPU lifetime inside
glyph occurrences. make-world-text-glyph-cache is owned by the luvcraft session and tied
to one device. It retains HarfBuzz results by canonical font path and exact
string, and… Pack one atlas and issue one instanced text drawslug-bezier Intent: remove the command and allocation multiplication caused by treating
each glyph occurrence as an independently bound texture pair. create-world-text-glyph-atlas concatenates each distinct serialized
outline into one RG16U band texture and one RGBA16F… Select spatial bands and scale coverage from fragment derivativesslug-bezier The shared shader language now carries derivative-x and derivative-y
through direct Metal dfdx/dfdy and SPIR-V OpDPdx/OpDPdy. The fragment
shader forms a screen gradient for each em axis and takes its reciprocal length
as pixels-per-em. The same fragment… One distance function draws the roundrect family analyticallyslug-bezier Intent: reuse the proof discipline learned from Slug without pretending that a
fixed GUI primitive is an arbitrary outline. The distinction is now executable. Slug's first proof #OWR8OZ puts reusable
pixel mathematics in a typed function, exposes it through… Present a Metal clear through the existing SDL canvasmetal-backend Intent: prove #SODRMA by adding a metal-canvas-context relationship while
leaving SDL window, input, clock, and main-thread ownership intact. Evidence: – The Metal GPU vocabulary implements provider, device, queue, texture, and
frame-encoder objects; the… Lower one mathematical shader directly to MSLmetal-backend Intent: compile the existing block fragment shader-specification through a
sibling target context, without translating its spir-v-module and without
inventing a new shared IR. Evidence: – The graph already carries types, source forms, resources,… Join the proofs in one live Metal pipelinemetal-backend Intent: preserve luvcraft's transactional shader-definition loop while the
same live mathematical shader methods feed a native Metal render pipeline. Evidence: #58IDSR now supplies a device-owned MSL library and #5A7QDE already
owns presentation. The live… Retire replaced Metal resources without a frontier waitmetal-backend Intent: preserve logical frame-boundary publication while removing the
conservative queue stall from Metal resource destruction. Evidence: every currently supported Metal encode relationship captures its
buffers, textures, views, samplers, bind groups, and… Transplant the post stack onto the HDR pathmoppe-legacy Intent: when #WLHDRB lands the linear-HDR scene target, extend it past tone map
and restrained bloom toward Moppe's observed order: exposure, ACES, and a
small live grade. Treat sun shafts (#BAP0QU) as the first post effect after
bloom because both inputs… Send one declared Objective-C messageobjective-c-and-metal Intent: establish the smallest inspectable Objective-C substrate without
trying to bind an entire framework. Evidence: – The runtime defines receivers, declaration metadata, direct sends, opt-in
trace snapshots, conditions, and define-objective-c-message. –… Turn Objective-C exceptions into Lisp conditionsobjective-c-and-metal Intent: provide an explicit safe condition boundary so a diagnostic can catch
an NSException without unwinding through CFFI or SBCL frames. Evidence: – The native bridge catches around NSInvocation, validates declared
argument/result sizes, and copies… Make Objective-C exception catching dynamically selectableobjective-c-and-metal Intent: keep exception translation available without imposing NSInvocation
on every established framework call. Evidence: – *objective-c-exception-policy* has the closed values :catch and
:unchecked; direct sends are the default and the two public macros… Resolve the Objective-C dispatch entry onceobjective-c-and-metal Intent: keep direct objc_msgSend direct by removing dynamic symbol lookup
from every declared message. Evidence: – SBCL call profiling counted 160,400 calls to
objective-c-message-send-pointer, CFFI's symbol lookup, and SBCL's dynamic
foreign-symbol resolver… The smallest solver was built: spheres, coloured contacts, four-wide lanesphysics-and-simd Intent. Build the slice #G7Q3XR proposed, no wider: spheres against the
voxel lattice and each other, the Soft Step skeleton, persistent contacts,
colouring from the first day, one scalar reference kernel and one four-wide
kernel per instruction family, and… Generalize affine-p to a three-valued characterquantities-and-measurement Intent: replace the boolean affine-p on quantity-specification with a
character of :point, :absolute, or :difference, add a
:non-negative specifier at the definition level, and implement the V3
operation table (#LNRY72) in the arithmetic core — without… Declare luvcraft's amounts absolute and non-negativequantities-and-measurement Intent: with the character algebra inert-by-default (#SYUACW), make the
block-world vocabulary state its truth: :opacity, :ambient-occlusion,
:sky-light-level, :block-light-level, :material-emission,
:fog-amount, :day-factor, :linear-rgb,… Declare quantities on Lisp storagequantities-and-measurement Intent: let CLOS slots and defstruct slots state quantity meaning beside
their ordinary Common Lisp :type, using the declaration protocol in
#OXBSAY. Use the MOP where a CLOS class definition genuinely carries the
metadata, but do not make it the only… Check storage declarations against Lisp arithmeticquantities-and-measurement Intent: make a declared CLOS or structure field usable as an input or output
of one checked arithmetic definition without wrapping each runtime value.
The boundary should compare the stored representation and quantity declaration
with the arithmetic parameter… Audit quantity-bearing Lisp storagequantities-and-measurement Intent: inventory luvcraft's classes, structures, arrays, constants, and
function boundaries which carry physical or domain quantities, then migrate
the semantic owners in coherent groups. The audit must preserve distinctions
between continuous quantities,… Describe the repeated block-mesh vertex productquantities-and-measurement One block-mesh retains the declaration identity current when its flat
single-float vector is constructed. The declaration repeats a fixed product
at stride 12: cell-valued world position, texture UV, ambient occlusion,
world direction, normalized sky and… Put contextual light-removal meaning on its queuequantities-and-measurement The two removal frontiers are now small light-removal-queue structures.
Each retains the exact :sky-light or :block-light field definition, dense
field reader, sky propagation policy, raw item list, and removed-cell set.
Items are admitted only through the… Check the packed frame product across CPU and shaderquantities-and-measurement camera-uniform-data now publishes the quantity layout of its fixed 20-float
prefix, and frame-uniform-data publishes the full 72-float product. These
remain ordinary specialized arrays: their declarations describe the
cell-valued camera point, basis… Declare the fullscreen and overlay vertex productsquantities-and-measurement The fullscreen sky triangle is a raw nine-float vector repeating one
:clip-coordinate triple. The crosshair repeats six-float products of clip
position and absolute linear RGB. Their constructors check representation,
stride, vertex count, and semantic… Keep quantity contracts at owned function boundariesquantities-and-measurement The source inventory distinguishes a function which owns a numerical law
from one which merely orchestrates already-owned values. The former belongs
in define-lisp-arithmetic-function and can bind its raw realization to slot,
structure, constant, or ABI… Review the exercised quantity architecturequantities-and-measurement The review happened after the declaration protocol had real CLOS slots,
structures, constants, dense fields, packed CPU/GPU products, one Lisp
arithmetic kernel, and all production shader materials as clients. It keeps
the central split: Common Lisp and GPU… Give luvcraft quantities backend-neutral ownershipquantities-and-measurement Intent: let CPU code name world position, view distance, direction, colour,
fog, and related luvcraft quantities without loading their definitions as a
side effect of the shader system. Evidence: – The open quantity protocols themselves live in… Move portable operator semantics below shadersquantities-and-measurement Intent: make the semantic contracts of ordinary numerical operations available
to every arithmetic client before extracting the expression frontend. Evidence: – + - * / dot min max already derived quantity specifications in
arithmetic/semantics.lisp, while… Extract a compiled arithmetic frontendquantities-and-measurement Intent: make one inspectable definition and expression vocabulary usable by
both CPU and shader realizations while retaining the shader workbench's source
provenance. Evidence: – The new :luv/arithmetic/language system depends only on
:luv/arithmetic. … Compile checked arithmetic to Lispquantities-and-measurement Intent: execute arithmetic definitions on the CPU over ordinary Lisp numbers
and vectors after checking their semantic contracts once. Evidence: – The separate :luv/arithmetic/lisp system depends only on the common
arithmetic language. … Share one production computation between CPU and GPUquantities-and-measurement Intent: make definition sharing answer a real engine question rather than only
demonstrate two toy evaluators. Evidence: fog shaping is a small scalar candidate; the :world-to-light map
is a richer candidate already used by production shaders and useful to… Prove semantic arithmetic in the shadow graphquantities-and-measurement Intent: let one real shader calculation test whether dimensions, named
quantity spaces, tensor order, and affine points belong in a reusable
arithmetic graph. Keep SPIR-V resources and lowering shader-specific; keep
semantic arithmetic in a backend-neutral… Give GPU components first-class quantity meaningquantities-and-measurement Intent: make homogeneous vector quantities and heterogeneous packed GPU tuples
different semantic structures. Let a whole vector already carry quantity
meaning, let exact swizzles recover explicitly declared component meanings,
and make every undeclared… Make numerical unit conversion explicitquantities-and-measurement Intent: add a visible arithmetic operation for conversions such as kilometres
to metres without weakening exact-unit checking or turning interpret into a
scale-changing cast. Learn from mp-units' quantity/reference separation while
keeping conversion policy… Constrain units to semantic quantity kindsquantities-and-measurement Intent: add the mp-units distinction between universally scaled units such as
one and percent and kind-specific units such as radian, steradian, or
bit. Let semantic quantity definitions form a small open hierarchy without
weakening the current exact-name… Carry semantic units through the vertex and camera ABIquantities-and-measurement Intent: extend the production proof from the heavily annotated fragment and
sky calculations into the block vertex boundary. World and camera positions
should be cell-valued affine vectors; their subtraction should be a cell
difference; camera basis vectors… Introduce the world-to-light sampling mapquantities-and-measurement Intent: replace the most consequential remaining raw arithmetic island with a
first-class map whose domain, codomain, affine-point requirement, packed result,
and projective coordinate remap are checked independently of its four-row GPU
representation.… Separate homogeneous projection from shadow samplingquantities-and-measurement Intent: let one semantic world-to-light projective map serve both production
uses of the four shadow rows. The shadow vertex stage needs the homogeneous
clip result directly, while the block vertex stage additionally divides and
remaps it into shadow… Give the remaining crosshair colour ABI meaningquantities-and-measurement Intent: finish the first production-shader audit at the small crosshair
pipeline. Its literal vertex module carries an RGB ink tuple into the
mathematical fragment method, where that boundary should state linear RGB and
the final alpha construction should… Quantity-carrying shader typesquantities-and-measurement Intent (as first written): extend the shader expression language's
inferred types with an optional quantity-specification component,
derived by operator methods and named at abstraction and resource
boundaries, erased at lowering. Evidence: this design was… Give the sRGB atlas seam explicit transfer meaningquantities-and-measurement The original intent correctly found a seam but proposed the wrong type.
rgba8-unorm-srgb stores nonlinear RGB bytes; both Metal and Vulkan apply the
sRGB transfer when the texture is sampled, so the value entering shader math
is already linear. Alpha is… First CPU voxel-light proofsky-and-light Intent: make sky/block light a derived chunk field with its own revisions,
incremental reconciliation, raw mesh transport, and shader-side response
curves. Evidence: – luvcraft/light.lisp owns reference and incremental solvers. – luvcraft/mesher.lisp… Player-placeable crystalsky-and-light Intent: turn the test-only glow block into a real material the player can
select, place, remove, and inspect in motion. Evidence: – luvcraft/blocks.lisp defines public *crystal-block* with atlas tile 9,
propagated light emission 12, and surface emission 1.2.… Shadow-ready shader math substratesky-and-light Intent: prepare the core shader language for shadow-map expressions without
adding a high-level shadow primitive. The core vocabulary should remain
ordinary typed mathematics and resource sampling. Evidence: – Commit 2d22815 adds spv:step through the… Shader source abstractions for reusable shadow expressionssky-and-light Intent: add a source-expansion layer above the core shader operator set, then
define shadow vocabulary there instead of teaching the compiler a special
shadow primitive. Evidence: – define-shader-abstraction adds an open EQL-method source vocabulary… Shadow-map producer pass and light projection resourcessky-and-light Intent: make the renderer capable of producing a shadow depth map as a
separate GPU product owned by the luvcraft session, with light-space
projection data carried through the ordinary frame uniform. Evidence: – The Vulkan backend accepts a depth-only render… Sample the shadow map in the block materialsky-and-light Intent: consume the shadow depth map from the block material using the
shadow-visibility abstraction, so moving sun light gets real direct shadows
while voxel skylight remains the ambient term. Evidence: – The Vulkan bind-group path now accepts multiple… First isolated visual evidence standard for shadow changessky-and-light Intent: keep shadow work from passing on screenshots that are merely plausible
or too dark to inspect. This was the first gate; #CH2CD0 records why it was
necessary but insufficient for representative-play acceptance. Evidence: – A shadow-map change needs at… Shadow credibility in representative playsky-and-light Intent: replace the weak inference "the isolated yard contains a cast shadow,
therefore shadows are good" with separate, falsifiable evidence for shadow
geometry and for shadow behavior in the moving block world. Evidence: – scripts/luv gazetteer… Tool and live-definition hardening after the shadow reviewsky-and-light Intent: remove the review findings which made the shadow evidence or live
shader story less trustworthy than their documentation claimed. Evidence: – The tools entrypoint now leaves the process main thread to Cocoa and runs
dispatch on a worker, matching the… Moving-sun shadow shape and temporal evidencesky-and-light Intent: make rotating sunlight read as a smooth depth cue during the ten-minute
day without pretending that pinned-sun camera captures establish temporal
quality. Preserve truthful block occlusion, but prefer a round, contact-aware
filter footprint over… Temporal derivatives and continuously filtered shadow decisionssky-and-light Intent: turn moving-shadow shimmer into inspectable temporal evidence, then
remove discrete nearest-sampled comparison flips without adding a whole-scene
temporal reconstruction system prematurely. Evidence: – The 17-tap disk in #UDVPDW read nearest depth… Receiver-plane shadow evidence and self-shadow stabilitysky-and-light Intent: explain and remove the constant frame-by-frame flicker which survived
#GKEHPF, and make temporal capture observe the shadow decision directly rather
than infer it from final colour. Evidence: – --shadow-only 1 uses the otherwise-unused fog-colour W… The shimmer that only noon could showsky-and-light Intent: #X9Q2YS removed the field-wide receiver-plane acne and left cast
shadows shimmering anyway. Play reported the residue as worst near noon,
which is a strong clue: a defect with a preferred hour has a mechanism that
depends on the sun's elevation.… The shadow lattice turned about the world originsky-and-light Intent: play still reported every cast shadow flickering and jittering
whenever the clock ran, at any day length, and calm only once the clock
stopped. #0604PY had already chosen the best roll for the light basis; the
residue was too fast and too uniform to… HDR crystal bloomsky-and-light Intent: give emissive materials headroom and bloom without abusing alpha or
the current LDR scene target. Observed: the scene attachment is :rgba16-float, presentation applies
exposure and a fitted ACES curve, and a quarter-resolution bright/blur/sweep
chain… Materials and sky taken toward physical shadingsky-and-light Intent: the world read flat because every face of a material was the same
card, the specular was a fitted power, everything that was not the sun was one
grey, and the sky's lower half was a wall of fog. Take each of those to a
physical argument instead:… Remove the per-admission type constructionfrontier-traversals Intent: explain and remove the frontier solver's measured allocation excess
without weakening the semantic frontier API. Evidence: bucket-frontier-push constructed
`(integer 0 ,maximum-priority) for every runtime typep. Three conses per
admission predicted… Begin frontier light beside the oraclefrontier-traversals The first greenfield program has its own inspectable declaration, packed
brightest-first frontier, relation traversal, counters, exact oracle
comparison, and live selector. It reuses capture and publication on purpose:
those shared boundaries make the A/B… Compile the monotone light kernel to scalar Lispfrontier-traversals Intent: turn the manually staged frontier-light proof into the smallest real
compiler path described by #53Q1II. Reify the local transfer, join,
admission, and priority arithmetic with checked field meanings; make the
program definition drive a scalar… Compile the sky seeds as boundary transfersfrontier-traversals Intent: let the realization admit a virtual open-sky source through the
program's own transfer law, so seeding stops restating the loss arithmetic
in client code and a boundary is just a relation whose source is not a site. Evidence: every realization now… Give frontier light its own invalidation programfrontier-traversals Intent: state removal and incremental reconsideration in the same compiled
vocabulary after the monotone kernel establishes its source and lowering
boundary. Evidence: #ZEENY3. voxel-light-removal is an :invalidation program whose
compiled drain reads like… Make chunk traversal one owned vocabularyvoxel-fields-and-windows Intent: establish the smallest reusable spatial substrate beneath the current
light and meshing products. Add heap-allocation-free decomposition, primitive
local stepping with explicit boundary crossings, storage-order site
enumeration, and face enumeration… Give dense traversal coordinate valuesvoxel-fields-and-windows Intent: replace the positional x y z and dx dy dz protocols exposed by
the first extraction with nominal coordinate and direction values. Make
dense iteration a macro so those values can be constructed and consumed at
the call site, and distinguish its… Bundle continuous spatial triplesvoxel-fields-and-windows Intent: replace the parallel camera/player position and velocity components,
ad hoc ray sequences, and local camera-basis vector helpers with one small
continuous CPU representation. Preserve nominal integer coordinates and
directions, semantic shader… Name the chunk-window protocolvoxel-fields-and-windows Intent: expose the shared aggregate operation already visible in the live
world, resolved meshing neighborhood, immutable halo snapshot, and light-region
atlas. Give those four concrete representations a small protocol for locating
a world site or resolving… Keep rejected neighbors at dynamic extentvoxel-fields-and-windows Intent: make the lifetime distinction in #E4T0PD visible to SBCL while
preserving the chunk-domain and chunk-window boundaries from #L84JCX. A
six-neighbor visit should use one body-scoped destination at a time and copy a
coordinate only when the algorithm… Pack the lighting worklist, then test level schedulingvoxel-fields-and-windows Intent: remove the retained frontier's per-item list cell, light-region-site,
and copied local-coordinate without prematurely extracting the general
fixed-point algebra discussed in #BA9MCA. Represent a lighting site densely as
a region entry plus domain… Pay checked adjacency cost once per visited sitevoxel-fields-and-windows Intent: preserve checked public domain stepping while avoiding the same
bounds and coordinate type validation for each of a trusted worklist site's
six neighbors. The packed frontier already proves its entry and offset;
adjacency should validate that site… Attach existing voxel field definitionsvoxel-fields-and-windows Intent: describe the existing block-content, sky-light, and block-light
columns without changing their representations or conflating field identity,
per-site quantity, aggregate encoding, product state, and provenance. Evidence: luv.world.fields owns a small… Name the atlas tiles and give the domain an ownervocabularies Intent. Replace the hand-allocated atlas tile integers with keywords, and
make the tile vocabulary a finite domain object that assigns offsets.
Specializers become (eql :urbit) rather than (eql 36); a material's
face list names tiles rather than positions;… Compute atlas coordinates in the shadervocabularies Intent. Carry a flat tile identity and an interpolated tile-local coordinate
in the block vertex, and move the atlas arithmetic of #4SIKJM into the block
world shaders, with the atlas width as a uniform. Evidence. The block vertex now carries tile-local UV,… The mesher gathers first and then runs one dense loopvocabularies Intent. Stop the mesher from asking a CLOS block object, through a generic
function, what it is — once per neighbour sample, some twenty times per face.
Gather instead: project the (small, closed) block vocabulary through
block-solid-p, block-surface-emission… The world owns one block vocabularyvocabularies Intent. Replace the per-chunk palette with one append-only vocabulary per
block-world, so that every chunk's u16 column means the same thing, a
mesh snapshot needs no palette translation, a block placement is a hash
lookup rather than a linear scan, and… The atelier itself is a McCLIM applicationluft Intent. Make McCLIM the application model of the new atelier, not a widget
kit added after a renderer has already invented commands, focus, and
lifecycle. LUFT should be able to grow into the next game one feature at a
time without growing a second… Pointing reveals a site's topologyluft Intent. Make the first workbench pane answer the question the picture raises:
which packed LUFT site is under the pointer, and how did its local shape rule
turn that site into the geometry being seen? Evidence. luft.render:raycast-site walks the retained… Cell edits are linear boundary updatesluft Intent. Make a voxel edit the sparse chain delta it is, rather than a request
to mesh the world again. If the solid is C, its surface is S=\partial C,
and an edit is the signed 3-chain \Delta, the complete update is
C' = C + \Delta, \qquad
S' = S +… Find a regular site-owned account of mixed bevel junctionsluft-miters Intent. Understand whether an Arc-like mixed miter can preserve LUFT's
site-local ownership, CPU-authored discrete geometry, bounded records, and
fixed dense rendering without complicating every ordinary sharp bevel. Evidence. Closed by the offset… MetalFX resolves Luft's temporal inputstemporal-antialiasing Intent. Make Darwin's default Luft renderer accumulate the same jittered
colour and motion contract as Vulkan while letting MetalFX own reconstruction,
history, and its required synchronization. Evidence. The Metal renderer test creates a real RGBA16F + D32 +… First Vulkan temporal resolvetemporal-antialiasing Intent. Give the atelier stable subpixel edges under a still or flying
camera, with motion for every surface style and without reviving a second
terrain geometry path. Evidence. The renderer test renders real Vulkan RGBA16F + RG16F multiple
targets, proves… Make wiki media executable without committing itwiki-site Intent. Establish the smallest end-to-end path from a figure-linked Lisp
recipe to ignored image or video bytes and a wiki transclusion, while leaving
machine selection and artifact publication open. Evidence. Two #Y7X7WK recipes construct the same inert… Publish generated media out of bandwiki-site Intent. Put durable capture bytes somewhere the static site can fetch without
growing the ordinary source clone, and run expensive recipes on a configured
GPU executor. Evidence. The local contract in #IVRWI8 supplies deterministic paths and a
source-revision… Render the wiki as a static site from ASDFwiki-site Intent: make the wiki browsable outside Emacs without a second source of
truth, and express the build as an ASDF operation so it composes with the
rest of the project. Evidence: (asdf:make :luv-wiki-site) renders all pages, figures.html, and the
stylesheet… Serve the site from GitHub Pageswiki-site Intent: publish build/wiki/ at mbrock.github.io/luv on every push
that touches the wiki or its tooling. Evidence: wiki.yml installs Nix, restores the closure with hestia
(chunked GitHub Actions cache; about a minute warm, replacing the
sunsetting… Boxes hug their widest rowwiki-site Intent. In the rendered source pages a nested body form stretches to
its parent's full width (.body is flex-basis: 100%), and worse, a
wrapping flex box's intrinsic width is the single-line sum of its
children, so even an argument box like a multi-line… Clauses as tables: cond, case, typecase, handler-casewiki-site Intent. A cond clause today stacks its test and its result as two
identical rows, so (null vectors) and (find-shader-type :float) look
like siblings and the reader cannot tell test from consequent. What the
let grid did for bindings (#BGIM3I) should be done… The stylesheet as Lisp definitionswiki-site Intent. wiki/style.css is 850 lines of hand-written CSS that the
renderer's roles must agree with by convention. luv already compiles
several small languages from S-expressions (#C6E3LA the shader language, #SQC5JN
the arithmetic language, MSL); the… Browse the source as dexp pageswiki-site Intent: make the whole codebase readable from the rendered wiki, per
#58SVCM, so that following a figure into code and code back into figures
never leaves the site. Evidence: wiki/source.lisp adds source-file objects (path, system, text,
nodes, definitions),… The site shows code references to figureswiki-site Intent: the first rung of #F6B3NI. Build the definition index of #SKNK2N
during render-op on the system and render a "Referenced from" line per
figure naming the definitions that mention it, each expandable in place to
the definition drawn by the dexp… Read luv sources with Eclector into a definition indexwiki-site Intent: the reader of #SKNK2N as part of luv-wiki: an Eclector client that
produces a token tree with source ranges and comments without interning, and
a definition index over the cl-source-file components ASDF lists. Evidence: wiki/lisp.lisp. source-reader… The dexp HTML rendererwiki-site Intent: render a token tree from #YFDCSB as dexp boxes per #N06GKK, with
roles assigned in Lisp and painted by the wiki stylesheet, and use it for
#+begin_src lisp blocks first, since the wiki already has those. Evidence: wiki/dexp.lisp and the .lisp rules in…