What polyweave shipped.
Every entry in docs/CHANGELOG.md, read at 2a0831a and dated by the commit that wrote it.
- PW565 · 0b75d59A flattened sphere creases at its rim whatever its steps
A sphere's rings and meridians follow its normal, so a squashed or oval sphere reads no crease at its rim at the steps it declares (design recorded in
src/polyweave/layers/geometry/solid.py). - PW564 · fb8b87aA bevelled or carved piece loses its colours, and every built mesh is written faceted
A solve keeps what each face wears, and a document's smooth welds and shades a mesh smooth by angle.
- PW563 · fb8b87aA bevel in a fresh process crashes with No module named bmesh
A bevel loads Blender before bmesh, so a declaration with a bevel builds in a fresh process.
- PW562 · fb8b87aA sphere or torus declared with steps crashes the build with a TypeError
Every primitive takes steps as a whole number, so a sphere or torus declared with steps builds.
- PW561 · 1078fb1A loop cut by sound.loop always opens on the track's first sample, even a dying beat
sound.loop takes a start bar and rotates the loop to open on it, seamless still, and answers starts_at; Spinhold's intro now opens on bar 2, past the dying beat.
- PW560 · 0f2969dsound.loop fails an Ogg loop's seam that sound.measure reads as ordinary
sound.loop judges its seam with sound.measure's seam_step and seam_flux under those names, and an encoded loop says how it read as cut (design recorded in
src/polyweave/layers/sound/sound_loop.py). - PW559 · 277c640A recorded track cannot become an editable music.toml score
music.from_audio hears a recording's stems as notes and hits, drafts a valid score, and answers the calls that sit it by the original (design recorded in
src/polyweave/layers/sound/music_heard.py). - PW558 · 64dd88eA voice over a recorded music track cannot be removed through polyweave
sound.stems splits a recorded track with Demucs into vocals and no_vocals, or four stems, each recorded and saying where it plays against the mix; Spinhold's intro lost its spoken tag through it.
- PW557 · eea6655the players kit copies no ui_accept or ui_cancel per player, so one player's menu cannot answer their own A and B alone
Each joined player gets their own copy of the menu actions on their pad, and the first player's answer their pad alone once two play (design recorded in
docs/specs/kit.md). - PW556 · af68216a pad whose name hides its maker is named in the wrong buttons, and the player cannot say which family it is
A player chooses a pad's button names on the remap screen, kept by its name; every prompt and menu follows the choice at once (design recorded in
docs/specs/kit.md). - PW555 · 7e65557the remap kit offers no ready button maps, so a player changes a scheme only by rebinding each action
Both remap screens carry a Map row: maps stepped and previewed on the pad, tried on a countdown and kept with a second press (design recorded in
docs/specs/kit.md). - PW554 · eedbbaaa keyed timeline of a scene's own properties cannot be declared and built, only skeletal motion and camera shots
clip.timeline builds a declared *.timeline.toml of keyed properties and marks into an AnimationPlayer scene the game plays or seeks (design recorded in
docs/specs/motion.md). - PW553 · 7841a56game.open passes no arguments to the game, so a state the game opens by a flag is reached by calling private methods
game.open passes the game's own flags, kept in its flows, and clip.shots opens the game with them itself: a world's cutscene is one call (design recorded in
docs/specs/driving.md). - PW552 · 89b7913the prompts kit's follow keeps a lambda whose node was freed, and the next refresh calls it on a null instance
refresh asks each follower again just before calling it, so a screen freed mid-refresh is let go (design superseded: the freeing was mid-refresh) (design recorded in
docs/specs/kit.md). - PW551 · 99fecd7a help line's {action} marks fill only as words; bbcode reads another mark, ignores the player and pad, and drops {move}
fill_bbcode draws a help row's own {action} and {move} marks as each player's icons, words where none, and watch_bbcode keeps it filled (design recorded in
docs/specs/kit.md). - PW550 · ba6bd79a kit's copied records name the artefact inside polyweave's tree, so provenance.verify reports every kit icon missing
kit.install and kit.update rewrite each copied record to name the file where it landed in the game, so verify finds every kit icon (design recorded in
docs/specs/kit.md). - PW549 · df1ac7fan accepted take cannot be placed at the path the game loads, so it is copied by hand with a record naming its old path
verdict.place puts an accepted member where the game loads it, with a record naming that path, the take and the verdict (design recorded in
docs/specs/acceptance-spec.md). - PW548 · 7fd4d4bno measure reads a transparent picture's alpha edge, so a halo or a wide soft fringe round it passes every spec
fringe_width, fringe_luma and fringe_delta_e read a transparent edge, so a spec holds a logo's outline free of a wide ramp or halo (design recorded in
docs/specs/measurements.md). - PW547 · fa3d6fba sitting of alternatives for one slot lets a person accept every one, with no way to pick just one
A sitting family may be a pick of alternatives: the page asks which one, batch accept skips it, and voice.choose takes the pick from the answer (design recorded in
docs/specs/acceptance-spec.md). - PW546 · 245cb3ea dialogue kit proof ends with no signal under the full gate's load, so its broken-box case fails with nothing to read
The dialogue proof times typing by summed frame time, not a wall clock read before frame one; a proof cut short names its last KIT STEP (design recorded in
docs/specs/kit.md). - PW545 · 00a45cbthe prompts kit starts on the keyboard before any input, so a game launched with a pad in hand shows keys
Before any input the prompts kit takes the first connected pad's family, the keyboard where none is, so a game needs no boot code to name the pad (design recorded in
docs/specs/kit.md). - PW544 · 89261b0kit.install writes the remap kit's own file into polyweave.toml even where the game declares a STORE
A kit may name the project constant that says where it keeps its file; install then writes the game's STORE file and section into [kit.remap] (design recorded in
docs/specs/kit.md). - PW543 · 4b38c83loading an older bindings file logs an engine error for every action the player never rebound
The store asks for each action's key before reading it, so a file naming only rebound actions loads with no engine error; the remap proof listens for one (design recorded in
docs/specs/kit.md). - PW542 · 29a08bcthe drawn pad screen shows raw action names, unfilled help and works only on ui_accept and ui_cancel
The pad screen reads each action's declared label, its help names the buttons through the prompts kit, and both screens work on a declared CONFIRM and BACK (design recorded in
docs/specs/kit.md). - PW541 · b747585the remap screen says nothing when it listens and rebuilds its rows on each bind, so a host game loses focus
The remap screen says listening and listened, answers is_listening, and repaints its rows in place, so a host game keeps focus after a bind (design recorded in
docs/specs/kit.md). - PW540 · 39c64f9the remap screen rebinds on a store of its own, so co-op pads lose their narrowing and the shared store goes stale
The remap screens bind on the shared store, which says changed, and the players kit follows it, so a rebind keeps each pad on its own actions (design recorded in
docs/specs/kit.md). - PW539 · 1f7de80the players kit's proof expects a pad seated on its first join press, so a game declaring AUTO_JOIN false fails it
The players proof holds AUTO_JOIN on while it proves seating and puts the game's value back, so a game that answers its own joins holds.
- PW538 · 1f7de80the players kit's proof resets bindings through the game's declared store, wiping a player's own controls
The players proof rebinds and resets a store of its own run, so installing the kit leaves a game's declared store and a player's controls untouched.
- PW537 · 1337aafthe remap kit's proof reads the screen's words in the game's language, so a pt-BR game with its own rows fails it
The remap proof reads in a language of its own, set again after the game's autoloads, and holds in Spinhold on a pt-BR machine with its pt_BR rows.
- PW536 · 90ea7aca kit's older-file adoption is a fixed user:// path, so a game's tests overwrite kit fields to keep off the real file
A relative ADOPTED file is read beside the options file, and adopted(folder) gets the saves folder, so a test's store adopts its seed (design recorded in
docs/specs/kit.md). - PW535 · 2d35cf6the options kit requires the menus and prompts kits, so a game wanting only the store ships 69 unused icons
kit.install options without screen lands the settings store alone, with no menus or prompts, and kit.prove proves a kit whole and without each part (design recorded in
docs/specs/kit.md). - PW534 · a328c3fthe saves kit's proof writes slots 1 and 2 by number, so a game declaring one slot fails it
The saves proof runs its corrupt, migration, newer-build and already-played cases on the last slot a game declares, so a game keeping one save proves as it is.
- PW533 · dd99a18a cube's settled frame comes out as a permutation on some CPUs, so CI's cube test fails now and then
A near tie between world axes goes to x, y, z order, so a cube settles to the same frame whatever rounding the CPU's BLAS kernel leaves.
- PW532 · cbe3ba8kit.prove proves each fixture under its fixed project name, so a run that left state in its user:// fails the next proof
kit.prove copies each fixture under a name of its run and removes that user:// after, so a marker left under the fixture's own name fails no proof.
- PW531 · cf3a5f5[layers] on proposed for a project leaves off a layer its records and *.camera.toml show it using
init and migrate turn on a layer whose record kind the tree's provenance carries, and motion for a *.camera.toml, so Spinhold's camera clip stays served.
- PW530 · 07cfe52migrate leaves the imports it rewrote out of sorted order, so an adopter's import lint fails until they fix it by hand
migrate puts each run of polyweave imports it rewrote in isort's order, so Cottony's fixture passes its import lint once migrated (design recorded in
docs/specs/adoption.md). - PW529 · 7329797A polyweave.toml holding [voxels] reads as a geometry declaration, so a build of the tree refuses the project file
A project's polyweave.toml is never read as a shape, so a [voxels] budget in it no longer breaks build_all, the notice's count or init's geometry signal.
- PW525 · 565aae2the crash kit's mid-run kill races the game under load, so the full gate fails it and a lone run passes
The kill waits for the game's own first log line, and each crash test proves under a name of its own; the file holds 10 of 10 on 12 workers, from 1 of 10.
- PW524 · d238113a Blender render test's xdist worker crashes under the full gate and passes when the file runs alone
Measured at 1 crash in about 180 gate runs and 0 in ten render runs on 12 workers; the gate now names a crashed worker's test and keeps Blender's crash log (design recorded in
tools/gate.py). - PW523 · 39f6092the saves kit's proof writes to one fixed user:// folder, so two proofs at once empty each other's slots
The saves, options, remap and launch proofs each write under user:// paths of their own run, so two proofs at once no longer empty each other's files.
- PW522 · 96136f7Spinhold still runs on the flat package, so the 443 records and 30 verdicts most at stake in the break are unchecked
Spinhold runs on the layered package with its four reads identical, so 443 records and every verdict crossed; tools fell 201 to 183 (design recorded in
docs/specs/adoption.md). - PW521 · 8d3465fCottony still runs on the flat package and serves every layer, so the block is unproven on its first consumer
Cottony runs on the layered package: its reads answer as before and its tools/list fell from 201 tools, 130,085 chars, to 181 and 114,489 (design recorded in
docs/specs/adoption.md). - PW520 · 293b350A project's polyweave.toml and the Python importing polyweave break on the new layout, with nothing to carry them over
polyweave migraterewrites a project's imports from a data table and adds [layers] on; Cottony and Spinhold copies map whole (design recorded indocs/specs/adoption.md). - PW519 · bd552a6An extension would hide the gap it fills, so a measure two games both wrote never becomes vocabulary
Every extension carries why, project.adoption lists it as not_yet_polyweave with its use and first day, and the brief names it (design recorded in
docs/specs/project-config.md). - PW372 · 005f78da camera move cannot be declared as a clip or played by the game, so a cutscene's shots are numbers in the project
clip.shots frames each shot of a camera clip in the running game and lays them out to judge; Spinhold's five opening shots wait for review (design recorded in
docs/specs/motion.md). - PW371 · 98ea6d5Cottony keeps its own settings and save code where the kits provide them
Cottony runs on the options and saves kits with its own files gone, and a save the last release wrote loads with nothing lost (Cottony 20f98c4).
- PW370 · 4c6e773Starship keeps its own bindings and co-op code after the input kits were extracted from it
Spinhold runs on the prompts, remap and players kits with its own input code gone, and a player's rebinds load unchanged (Spinhold 798845a).
- PW528 · 528427bTraining a Scenario model and drawing from it each speak to Scenario from the picture layer
Scenario is an adapter that style.train and a trained model's pictures buy through, with training's charge owed by buy() (design recorded in
src/polyweave/services/scenario.py). - PW527 · 4271311The picture operations each send their own requests to Ideogram, and a charge sent but never delivered goes uncounted
Ideogram is an adapter the picture operations buy through, and buy() owes a charge from submit until it is captured (design recorded in
src/polyweave/services/service.py). - PW526 · b661a26Meshy, Tripo and Rodin each carry their own purchase flow inside the mesh domain
Meshy, Tripo and Rodin are adapters under services/, bought through one buy() that alone allows and captures; mesh.buy speaks to no service (design recorded in
src/polyweave/services/service.py). - PW518 · ced4e89A project's own generator can run as a job but is no operation, so no agent finds it, describes it or searches over it
A project's generator under [extend.operations] is a described tool and command, runs apart or as a job, is swept and recorded (design recorded in
docs/specs/project-config.md). - PW517 · 6e0c946A project cannot add a measure of its own, so a look only its game needs is a fork, a side script or a PW line
A project declares a measure under [extend.measures]; a spec bounds it as x.<project>.<name>, it runs apart, is recorded and goes stale (design recorded in
docs/specs/measurements.md). - PW516 · efccc0cEach paid service's HTTP client is written inside the domain that buys from it, so a new service copies a client
Every paid provider is an adapter under services/, and one buy() alone allows, owes and captures; no layer spends by itself (design recorded in
src/polyweave/services/service.py). - PW515 · c73bce7A material's finish and fuzz are special-cased in the bake and in write, so a toon or metal look is a third case
The bake, the mesh writer and the review iterate over looks, so a new look is one module reaching both targets (design recorded in
src/polyweave/layers/geometry/looks/__init__.py). - PW514 · 6472f5cVoxels are a branch inside build.write and a voxel_* module beside each mesh one, so a third form has no place to go
build.write hands a declaration to the representation its table claims; a third is one new module (design recorded in
src/polyweave/layers/geometry/representations/__init__.py). - PW513 · d7f38efA geometry op is spread over BUILDS, FIELDS, review's elif chain and voxels' bounds and TRACED, four places per op
Each geometry op is one module under ops/ and BUILDS, FIELDS, TRACED, the voxel chains and the review words are read off them (design recorded in
docs/specs/geometry.md). - PW512 · 6c28a5cNothing proves a new layer can be added without editing the kernel, so the block's whole claim goes unchecked
A tone layer added from a fixture folder reaches every surface with no core file naming it, and each broken seam fails the proof (design recorded in
tests/test_a_whole_layer.py). - PW511 · 333de7ccensus.py classifies every public function in the package in one map, so each new helper module edits it
Each layer classifies its own helpers in its layer.py, a module named _x is internal by name, and the census keeps only the core's (design recorded in
src/polyweave/surface/census.py). - PW510 · 3c4dcaaThe tool list's budget has been raised about 30 times in a row, so it stops no growth and names no layer that grew
Each layer's tools are held to a figure in its own layer.py and a session to SESSION_BUDGET, which capabilities reports (design recorded in
src/polyweave/surface/server.py). - PW509 · af80075A project gets all 200 operations as tools whatever it makes, so a 2D game's agent loads Blender, voxel and rig tools
project.init proposes [layers] on from the tree and says why each layer is on or off, so a new project gets only what it uses (design recorded in
docs/specs/project-config.md). - PW508 · 7459a9aEvery table polyweave.toml may hold is declared in one config.py, so a layer's settings are kernel code
Each layer's settings.py declares its polyweave.toml tables and the kernel's schema is the union, so config.py holds only shared tables (design recorded in
docs/specs/project-config.md). - PW507 · c0cc5d2Every error code lives in one 2,611-line codes.py, touched by 61 of the last 200 commits to the package
Nine layers hold their own codes.py and the kernel's table is the union, so the kernel file halved to the kernel and loop codes (design recorded in
src/polyweave/kernel/codes.py). - PW506 · 5d832a7A kernel or loop module can import a layer and both gates still pass, so the direction the layout states is a hope
Each layer declares the layers it uses and test_layering refuses an undeclared edge or a cycle, so the direction holds layer to layer (design recorded in
tests/test_layering.py). - PW505 · a500c98asset.brief, the review page and loop.report each import every medium they describe, so one new layer edits all three
A layer adds its section to asset.brief, loop.report and the review page as named parts, so those three import no layer (design recorded in
src/polyweave/kernel/layer.py). - PW504 · 935f16esearch.sweep can only draw a sample through render.bake, so picture, engine and preset each wrote a search of their own
A fifth medium declares a producer for search.sweep instead of writing a search (design superseded: picture.fit is no search; engine's two enumerate grids).
- PW503 · e83130caccept.check reaches into sound, vfx, video, flashes, render and reference_concept to measure a subject
A layer's Subject measures its own file for accept.check, contrast is the engine's picture measure, and accept and measure import no layer (design recorded in
src/polyweave/kernel/layer.py). - PW502 · 713a0b1provenance names words, world, kits and driving and keeps a closed KINDS tuple, so the record format knows every layer
Record kinds, each role's staleness check, what ships and outdated's sections come from layer.py, so provenance imports none (design recorded in
src/polyweave/kernel/layer.py). - PW501 · bbb5a98A verdict's answer branches on each domain by name, so every layer a person judges edits verdict.py
verdict.judge hands each member to the one judge its layer declares and reports what it kept under that judge's name, so verdict imports no layer (design recorded in
src/polyweave/kernel/layer.py). - PW500 · 3ac13b0A layer exists only as a line in a hand-kept MODULES tuple, so nothing reads what it contributes or what it needs
Each layer declares itself in a layer.py found by walking layers/, and describe and capabilities say each one's layer and state (design recorded in
src/polyweave/kernel/layer.py). - PW499 · 957aba2The package's 128 modules sit flat, so nothing says which are shared core and which belong to one layer
The package is now kernel, loop, a layer per medium, services and surface, so an import path says which way a dependency runs (design recorded in
src/polyweave/__init__.py). - PW498 · 5a2fb91union joins parts at a hard crease, so a body whose parts flow into each other, as moulded plastic, cannot be declared
A blend op joins primitives by a fillet of radius where they meet, a round union of their fields meshed closed, each face in its part's material (design recorded in
geometry.md). - PW497 · 1e3c758nothing measures how round a model's edges are, so a hard-edged piece in a soft-toy style reaches a person's sitting
A spec bounds sharp_edge_share and edge_radius_min off a .glb at a stated crease, no render, and a refusal names where the hard edges are (design recorded in
acceptance-spec.md). - PW496 · 58777fca mesh's squash and jiggle when struck cannot be declared, so a toy that wobbles on a hit is a game's own vertex shader
A vfx kind = "struck" declares give, wobble, settle and falloff, built as a shader and a strike() script, filmed struck and measured for a spec (design recorded in
vfx.md). - PW494 · 08a328ba material declares only colour and roughness, so a glossy plastic with clear coat, sheen and soft rim cannot be asked
A material takes coat, sheen, rim and subsurface, derived onto the Principled BSDF the bake builds, and reads back as "clear-coated, glossy" (design recorded in
geometry.md). - PW493 · 4c4a113a solid round on every edge, a capsule or a soft box, has no op, since plate rounds only its outline's corners in XY
capsule and rounded_box are primitives, closed meshes the voxel test agrees with, and bevel takes segments and a round or chamfer profile (design recorded in
geometry.md). - PW492 · 0b81e5dinflate swells one face of a drawing, so a body puffed round on both sides, as an inflatable toy is, cannot be declared
A drawing inflated with sides = 2 is a closed pillow, its rim on the outline and round: 79° across it against a mirrored relief's 124° (design recorded in
geometry.md). - PW491 · 20e48adfour source files cite a line through a mis-encoded section sign, so a search for that citation misses them
The four signs are repaired, and a test fails on any source holding the twice-read sign or a byte-order mark, naming its file and line.
- PW490 · 56726bbpanel.capture films a panel only at its declared size, so how its shader draws it grown is never seen
panel.capture takes sizes and films each state at each, so a test holds the stitch pitch at twice the width (design recorded in
panel.md). - PW489 · fd19ed9a capture whose shader failed to compile answers ok, so panel.capture hands back stills of the bare white rect
A shader that won't compile now fails the run as script-error at the shader's line, so panel.capture refuses the film as compose.unfilmed (design recorded in
engine.md). - PW488 · a83c8d1a capture warns same settings, different picture when only a sprite the scene draws changed, as if it were noise
A recorded capture runs verbose and reads Godot 4's load lines, so a re-take whose sprite changed names that sprite, not noise (design recorded in
docs/specs/engine.md). - PW487 · 66a4ceaengine.sweep keeps only the matched text of a hit, and a run its frame budget ended reads as one that never printed
engine.sweep keeps each hit's whole printed line, and a run whose count reached the budget answers budget, not no-signal (design recorded in
docs/specs/engine.md). - PW486 · f48c1a2a sitting member that failed a bound shows no accept, so a person who likes the look cannot see how to approve it
On a card that failed a bound, number reads as Accept and move the bound, and the card says why there is no plain Accept (design recorded in
docs/specs/acceptance-spec.md). - PW485 · 03707ebthe prompts kit's proof fails in a game running in another language, reading its translated key names as wrong
The prompts proof reads names in a locale of its own and hands the game's back, so a pt-BR game holds, and a failure names both languages (design recorded in
docs/specs/kit.md). - PW484 · ee8a696the input kits fail to parse in a game that has its own class named Bindings, Spinhold among them
Every kit script names another by a _Pw constant, kit.prove fixtures declare the bare names as global classes, and a failed proof says where it broke (design recorded in
docs/specs/kit.md). - PW483 · 43dc115measure.take reports luma only at p1, p50 and p99, so a spread between other percentiles cannot be measured
A distribution answers any percentile and a spread over the median, and a region may be a colour worn in, so a painting is measured by object (design recorded in
docs/specs/measurements.md). - PW482 · eaf1b29voice.design sends a sample shorter than the service accepts and quote cannot price it from the entity
voice.design refuses a sample under the service's least before the call, and purchase.quote prices a voice call from its sample or the entity's own (design recorded in
docs/specs/world.md). - PW481 · 9e49f03verdict.sitting crashes on an old picture named HEAD:<path>, a form sound.sitting reads from git
verdict.sitting and verdict.sheet check a committed old picture out of git, say where it came from, and refuse a missing picture by name (design recorded in
docs/specs/acceptance-spec.md). - PW479 · 14e7430a panel cannot declare a lit bevel, an inner hairline, a moving sweep, inset brackets or a glow by state
A panel declares a lit bevel, a hairline, set-in brackets, a placed tick, a sweep, and states as glow, lift and drain, with a tint set per instance (design recorded in
docs/specs/panel.md). - PW478 · 65fdf63picture.vector answers a layer that drew nothing like any other, so an empty layer is found only by opening it
picture.vector refuses a layer that drew nothing, an id a selector or reference shares between elements, and a filter or mask on the wrong kind (design recorded in
docs/specs/store.md). - PW477 · f5a7efba capture cannot be held to the concept painting it copies, region by region, at another size and aspect
reference.concept measures, places and sheets each region of a capture against its painting, and a spec bounds any of its numbers as a predicate (design recorded in
docs/specs/measurements.md). - PW476 · 6347c05picture.vector draws one still, so a vector layer that loops through an attribute needs a hand-made source per frame
picture.vector sweeps one attribute over frames from one source, each frame recorded with the sweep, packs a strip, and can skip the whole (design recorded in
docs/specs/store.md). - PW475 · 99f5a0eport.run names a failed predicate but not what it measured, so the margin takes a second accept.check by hand
A failed port.run member carries missed: each failed predicate's value, bound, limit and how far past, and the render it was measured on (design recorded in
docs/specs/acceptance-spec.md). - PW474 · 4227a68a panel cannot carry a sewn seam, so a craft-styled game draws its stitches in its own code
A seam sews a panel on build and shader, and picture.sew lays it inside a picture's worn silhouette, its shadow and holes darkened from the picture beneath (design recorded in
docs/specs/panel.md). - PW473 · 361e1e4a panel's fill is one flat colour, so a felt or candy body with light, shade and grain cannot be declared
A panel's fill takes a material of declared numbers, lit top to foot in its own hue with core, gloss, vivid, grain and weave, same on build and shader (design recorded in
docs/specs/panel.md). - PW472 · 188f3aaa panel's outline is a box with cut corners, so a pill, a rounded card or a lobed banner cannot be declared
A panel is cut, rounded, a pill or any geometry outline; a pill stretches lengthwise, an outline builds at its size or on the shader at any size (design recorded in
docs/specs/panel.md). - PW471 · 1319367engine.run_declared blames the frame budget when the script exited 1 on its own after printing why it failed
A script that exits non-zero on its own is reported with its exit code and its last three lines after the engine banner; the frame-budget hint is kept for silent runs.
- PW470 · fcf8ec2nothing exports a pack and lists what landed in it, so a project parses Godot's pack table itself
game.pack exports a preset as a pack and lists its files, imports mapped to sources, so Cottony's export check parses no pack itself (design recorded in
docs/specs/engine.md). - PW469 · eeb465cnothing boots a game's main scene and reads its shutdown, so a project's boot check starts Godot itself
game.boot boots a game's main scene and reads its shutdown against the leak [engine] leaks forgives, so Cottony's boot check starts no Godot itself (design recorded in
docs/specs/engine.md). - PW468 · 4a5b659a mesh with two equal extents gets whatever frame the machine's SVD returns, so its orientation differs by CPU
A tied subspace takes the mesh's own axes, so a cube or lathe-turned mesh gets one frame on every machine and a cube's ambiguity is reported on CI too.
- PW467 · 4a22e4ba game's engine scripts and the line each prints are a table in a Python driver the game writes itself
A game declares its engine runs as [run.<name>] and engine.run_declared runs them, so Cottony's perf driver is gone for a table in its config (design recorded in
docs/specs/engine.md). - PW466 · fcf8ec2Cottony's tests, boot check and export check still start Godot through subprocess, each with its own lookup
No tool in Cottony starts Godot itself: its tests, boot check and export check run through game.test, game.boot and game.pack.
- PW465 · f6d6a1fan accept on the review page never reaches the loop ledger, so loop.pending reads an accepted family as still waiting
A page answer on a sitting naming its ledger asset is a ledger verdict, and a family run's verdict marks the member it names judged (design recorded in
docs/specs/adoption.md). - PW464 · 001bc43sound.sitting takes no about, so a sound sitting cannot say what changed or what to listen for
sound.sitting takes about as verdict.sitting does, kept under the summary, so a sound sitting says what changed and what to listen for (design recorded in
docs/specs/acceptance-spec.md). - PW463 · 3bf7467a review server that sees polyweave changed refuses the answer, and only the agent that started it can restart it
A review server on old code starts a fresh one on its port and the page resends, so the answer lands with no restart by hand (design recorded in
docs/specs/acceptance-spec.md). - PW462 · 6fa44b9scrub reads a painted mark as darker in luma only, so the hammer's soft purple seam on pink survives it
The scrub reads a mark as a darker shade of its ground's hue in Lab too, at a reach that follows the sheet (design in
docs/specs/fetching.md). - PW461 · 942ea69a family search hands back a passing rig on every range's edge while one inside them has three times the headroom
Each pass tries its window's middle first, so a rig inside the ranges wins on headroom, and a pass on an edge says so (design recorded in
docs/specs/acceptance-spec.md). - PW460 · 507ea33the review page lets a person accept a family whose spec fails, and the bound stays, so the bake refuses it
A failing card offers adjust-the-bound in place of accept, and accept-all skips it, so a yes on the page moves the bound the bake checks (design recorded in
docs/specs/acceptance-spec.md). - PW459 · db2628cthe review page opens a sitting only by a click, so no URL shows the agent or the owner one sitting
verdict.sitting answers the address the page opens a sitting at, and review prints a link to each one waiting, so a screenshot lands on it (design recorded in
docs/specs/acceptance-spec.md). - PW458 · 4a9263fport.run builds a member's declaration beside the declaration, so in a game's tree the engine imports the mesh
port.run builds a declared member into the work area, or the folder its mesh key names, so a port never writes into the engine's import tree (design recorded in
docs/specs/adoption.md). - PW443 · 4732519verdict.judge takes any sentence its caller passes as the person's, so an agent can write the verdict on its own work
A tool's accept lands only with the code the review page shows for the sitting, so an agent cannot accept its own look (design recorded in
docs/specs/acceptance-spec.md). - PW192 · ba76f97Cottony still makes its audio outside polyweave
Cottony's effects render through polyweave as General MIDI scores held to specs, its music loops by sound.loop, both accepted by the owner (design in
docs/specs/music.md). - PW81 · b33ab43the two friends, their lean frames and the mascot take eleven constants apiece and nothing declares one
The friends, their lean frames and the mascot bake through polyweave, the face drawn as a pass, accepted by the owner (design in
docs/specs/adoption.md). - PW80 · 6fa44b9the three booster objects each needed a scrub, a roll and a fill found by hand after the service returned them
The boosters bake through polyweave, the fetched two ingested against their drawings and scrubbed clean of painted dashes, accepted by the owner (design in
docs/specs/adoption.md). - PW79 · 4990bbcthe three brand marks are exposed by a hand-found light and nothing states what the type should read as
The brand marks bake through polyweave from their blends, held to today's sprites and to letter edges as crisp, which the owner accepted (design in
docs/specs/adoption.md). - PW78 · d6964a8the two trays are framed by a world rectangle written out per asset so the game's grid lands on it
Both trays bake through polyweave from their declarations, framed by the game's numbers, one rig each, on specs the owner accepted (design in
docs/specs/adoption.md). - PW59 · 49d7ed9nothing says how much of Cottony still does its own version of what the plugin does
project.adoption reads a project's code for the four surfaces polyweave owns, and Cottony's CI fails on a file doing one it keeps with no reason (design recorded in
docs/specs/project-config.md). - PW56 · a503450twelve GDScript runners in Cottony each start Godot their own way, and a settings mismatch is silent
All twelve of Cottony's GDScript runners start through polyweave, the seven perf scripts from tools/run_perf.py, and the board shot records the settings it was taken in.
- PW53 · 7d0109fCottony lights twelve models through fourteen constants of its own, and the search never sees one of them
Every model Cottony's rig lit bakes through polyweave against its own spec, family by family from PW76 to PW81, and bake_model.py's MODELS is empty (design recorded in
docs/specs/adoption.md). - PW457 · 75bf858a purchase ledger kept as a table by name reads as its bare names, so every total over it is wrong or crashes
purchase.ledger reads a lock keyed by name as adopted entries with their credits, refuses any other shape, and refuses to write the lock (design recorded in
docs/specs/adoption.md). - PW455 · 5b752a7provenance.generated cannot tell what a Godot build ships, so it counts excluded files and buries art among code
Without paths a Godot project's provenance.generated reads what its export preset ships, and unrecorded lists only media apart from code (design recorded in
docs/specs/provenance.md). - PW454 · 3ec1300provenance.generated leaves an older purchase's service unnamed, so a disclosure cannot say which generator made a file
provenance.generated reads an unnamed purchase's service off its ledger entry, task id or folder, and else answers null with a fix (design recorded in
docs/specs/provenance.md). - PW453 · 11d1e9apicture.vector draws an SVG with live text as a PNG with no letters, and answers as if nothing were lost
picture.vector and store.capsules outline live text in its resolved font before ThorVG draws, record the font, and refuse a run they cannot outline (design recorded in
docs/specs/store.md). - PW451 · db05a64a canon holds approved pictures only, so a new 3D enemy is never checked against the meshes already approved beside it
A .glb joins a canon by verdict, and style.drift holds it to the family's meshes through renders at its rig, naming the nearest (design recorded in
docs/specs/project-config.md). - PW448 · 6afb0bcno service's plan licence reaches the record, so a free-tier mesh or picture can ship in a sold game unwarned
Each buy's record keeps its plan, read off the service or declared as [service] plan, and a sold game fails release_check on a free-plan part (design recorded in
docs/specs/provenance.md). - PW447 · a1dda12a bought mesh is oriented and scaled, but nothing holds its triangles, materials or holes to a bar before a sitting
normalise.ingest(ready=spec) welds seams, cuts to the triangle ceiling and refuses a missed bound such as holes as mesh.not-ready (design recorded in
docs/specs/acceptance-spec.md). - PW446 · 27c5723no mesh can be bought from Rodin, so a part that needs clean topology has only Meshy's to start from
mesh.buy speaks Rodin's v2 API for a service on hyper3d or deemos: a quad mesh behind the same ceiling, gate and ledger, its cost quoted (design recorded in
docs/specs/fetching.md). - PW445 · af7da9eMeshy is the only 3D generator a mesh can be bought from, so a project that prefers Tripo writes its own client
mesh.buy speaks Tripo's v3 API for a service based on tripo3d: same ceiling, gate, balance readings and ledger (design recorded in
docs/specs/fetching.md). - PW444 · 1e1546fnothing totals what the records already hold per asset, so polyweave's own effect on a game cannot be stated as a number
loop.report totals each asset's runs, verdicts, purchases and gate refusals from the records, each naming its file (design recorded in
docs/specs/adoption.md). - PW436 · b13e76da sitting laid out in the wrong folder cannot be moved, and a hand move leaves its answers on the old path
verdict.move moves a sitting, rewrites its manifest and index, and appends a moved line so earlier answers read at the new path (design recorded in
docs/specs/acceptance-spec.md). - PW435 · 2a1ac76a take made on a free ElevenLabs plan is recorded like any other, so a game can ship one commercially unwarned
Each speech take keeps the account's tier in its record, and provenance.credits names every free-tier file as non-commercial only (design recorded in
docs/specs/provenance.md). - PW434 · 3265925the prompts kit cannot keep a label filled, so each screen refills its help on a device, rebind or language change
Prompts 0.5.0 keeps a watched label filled and runs followers on a device, binding or language change; remap tells it of every rebind (design recorded in
docs/specs/kit.md). - PW433 · d96db97the remap kit keeps its own file with a fixed pad section, so a game's extra pad options and ranges are lost
Remap 0.6.0 keeps bindings in the game's own settings section, holds a declared deadzone range, keeps the game's pad options, and shares one store (design recorded in
docs/specs/kit.md). - PW432 · 15170e1the remap menu binds on press, in English words, with no label or order per action
Remap 0.5.0 binds on release, cancels on a held press, says its words through the game's table, and shows each declared label in order (design recorded in
docs/specs/kit.md). - PW431 · 05df9e0the prompts kit has no generic family and cannot name a raw button code, so a pad screen cannot label every button
Prompts 0.4.0 names an unknown pad generic, by compass with icons of its own, names any stored code in any family, reads codes as one row (design recorded in
docs/specs/kit.md). - PW430 · d8043dcan MCP caller has no describe, so what a vfx declaration may hold is read only on the command line
The MCP server lists a describe tool answering describe(name) with declares, so a *.vfx.toml's keys are read over MCP with no shell (design recorded in
docs/specs/tool-surface.md). - PW429 · 7a76f8fcaptured sequences cannot be cut together, scored and encoded, so a store teaser needs ffmpeg driven by hand
video.cut builds a *.cut.toml of captured runs into a scored MP4, measured for length, size and first motion, which a spec bounds (design recorded in
docs/specs/video.md). - PW428 · e832eabthe remap kit has no screen that draws the pad and rebinds on the picture, so each game draws its own
The pad screen draws each layout: PlayStation and Xbox as credited renders of borrowed models, Switch in line; the owner accepted the three on 2026-10-14 (design recorded in
docs/specs/kit.md). - PW452 · 4abc97eafter port.run searches, each member's out holds the last sample tried, not the rig it answers with
A search ends by evaluating its answer again where the last sample was not it, so every member's out is the rig it names (design recorded in
docs/specs/acceptance-spec.md). - PW442 · b028418a search whose best rig sits on its axes' bounds reports never passing, not that the range may cut the answer off
A search names each axis its best sits on the edge of, and a failing one says to widen it before reading never as unreachable (design recorded in
docs/specs/acceptance-spec.md). - PW441 · c0fb1a5a render's world light has a strength and no colour, so a rig lit by a warm world cannot be reproduced
render.bake takes ambient_colour, the world light's colour as sRGB hex, in the key and record only where given (design recorded in
docs/specs/adoption.md). - PW440 · 08c4eb6a render's material replaces the mesh's own, so a roughness cannot be laid over a textured mesh without losing it
A material given with over = true is set on the mesh's own shaders, its texture kept, so Cottony's mushroom bakes glazed with no copy (design recorded in
docs/specs/adoption.md). - PW439 · bef079ba project's 2D passes painted on a render, a gloss window and a drop shadow, are absent from its record and cache key
render.bake runs a project's own passes over its picture through after, each pass's digest and arguments in its cache key and record (design recorded in
docs/specs/adoption.md). - PW438 · c468d2anpm start fails from any VS Code terminal with a missing-export error, since ELECTRON_RUN_AS_NODE runs Electron as Node
npm start opens the window through a launcher that drops ELECTRON_RUN_AS_NODE, so it starts from any VS Code terminal (design recorded in
gui/README.md). - PW437 · 915f1c8a 3.0 picture is sent to an async generate route Ideogram lists for 4.0 only, so a 3.0 call may fail unexplained
A 3.0 picture goes to Ideogram's synchronous generate route, the one it answers, and 4.0 keeps its asynchronous one (design recorded in
docs/specs/fetching.md). - PW427 · 2ebe0b2vfx.build draws every particle as a flat quad, so a puffy tuft with depth is still a mesh built in game code
A particle may be drawn as the engine's solids or as a .tres mesh of the project's own, so a puff with depth is declared, not built in code (design recorded in
docs/specs/vfx.md). - PW426 · 691c12aa score cannot be another score transposed, so a piece in three keys is three files kept in step by hand
A score extends another beside it, overriding by name and transposing its pitched notes, compiled as one, so an edit to the base reaches every key (design recorded in
docs/specs/music.md). - PW425 · 55a0110sound.sitting cannot hear the sound a render overwrote, so its old needs a hand git and LFS extract
A sound sitting's old may name a committed version, HEAD:<path>, read through git and LFS into the work area with its origin recorded (design recorded in
docs/specs/acceptance-spec.md). - PW424 · 9ece4bbvfx.preview refuses an out under art/, so an effect's sitting cannot sit in art/review/ with the others
vfx.preview lays its sitting wherever out says, art/review/ included, building what it films into the work area when the export leaves the source out (design recorded in
docs/specs/vfx.md). - PW423 · ed0b49ba rendered cue's record leaves out its drum kit, so a kit edit leaves every cue reading current
A cue's record names each chip kit it plays, so a kit edit reads outdated, and a thin record reads outdated instead of crashing the read (design recorded in
docs/specs/music.md). - PW422 · ff13ae7a music score cannot name the track it was written against, so a rendered cue's record never says whose loop it answers
A score names the track it was written against in [music] reference, and every rendered file records it as an input with role reference (design recorded in
docs/specs/music.md). - PW421 · f54764ea built path ribbon freed before it entered the tree leaves its mesh node behind, an orphan and a leaked render instance
A built path ribbon makes its mesh node in _ready, so one freed before it entered the tree leaves no orphan behind (design recorded in
docs/specs/vfx.md). - PW420 · a591efbrender.bake draws a voxel build's glb shattered, cubes scattered with holes, unlike the build's own preview
A voxel build renders whole at every rung: a preview keeps a light mesh whole and merges coplanar faces before anything collapses (design recorded in
docs/specs/rungs.md). - PW419 · 13d5cd7words.check reads only the string table, so a store page or site copy is never held to the world's names
words.check holds the Markdown, HTML or text files [words] copy names, each in its locale, to the world's names, a finding per file and line (design recorded in
docs/specs/project-config.md). - PW416 · cb6d36cvoice.lines lays its sitting out at the project root with no out, where the engine imports its sheets
voice.lines takes an out, and it and voice.design lay a sitting in the work area by default, never at the root where an engine imports its sheets (design recorded in
docs/specs/world.md). - PW415 · 5965ea2the review page stacks every card of every sitting on one page, so a person cannot find what waits on them
The review page opens on an index of sittings, newest first, each counting what waits, and a row opens that sitting alone at its own link (design recorded in
docs/specs/acceptance-spec.md). - PW414 · e86f737sound.speech fails takes that say the line, a JSON-only keys list and an unpriced quote hide what a set costs
A take is transcribed in its column's language, accents folded and interjections said however spelled; --keys A B parses; unvoiced rows priced (design recorded in
docs/specs/effects.md). - PW413 · 7060f52an entity has one voice for every language, so a voice designed in English reads Portuguese with an accent
An entity may have a voice per locale, designed, chosen and spoken in that column alone, and each take records its locale, so digests are per tongue (design recorded in
docs/specs/world.md). - PW412 · 189013bvoice.lines sends no language with a line, so Portuguese takes are read in English
voice.lines sends each line's column language as language_code to the models that hold to one, so a Portuguese take is read in Portuguese (design now in
src/polyweave/layers/sound/sound_buy.py). - PW411 · 53dc152accepting a voice preview on the review page fails with Failed to fetch, so no voice can ever be chosen
A voice preview is accepted on the page, and a page route that raises answers a 500 with op.crashed and where, never a dropped link (design recorded in
docs/specs/acceptance-spec.md). - PW180 · 182b358no canon picture is ever sent as a style reference, so a family's look reaches the service only as words
A family's canon pictures named in references go with every picture as style references on 3.0, the skeleton and palette in its words (design recorded in
docs/specs/project-config.md). - PW77 · 57f65ebthe map's five candy props match a drawn sprite that exists only as medians in a comment
The five map props bake through polyweave from one searched rig, each held to a spec the owner accepted beside the shipped sprite (design recorded in
docs/specs/adoption.md). - PW418 · 4df3546a capture's record leaves out the script's own arguments, so a recorded picture cannot be taken again
A capture's record keeps the script's args and how it was called, and capture.again takes it again with only the environment changed (design recorded in
docs/specs/engine.md). - PW417 · ecdc766vfx.build declares only particle systems, so a sheet or wall of light with a hot core and halo is a shader in game code
vfx.build has a sheet kind: a quad and a generated shader with a profile across, faded ends, flicker and an afterimage, faded per instance (design recorded in
docs/specs/vfx.md). - PW410 · 4a2a652a 403 from ElevenLabs prints with no detail, and a free plan's missing feature is found only by spending
A refusal's text prints its detail, and a 403 from the speech service is fetch.plan-lacks in the service's words, costing nothing (design recorded in
docs/specs/fetching.md). - PW409 · 6ce0c94describe lists vfx.build's arguments but not the keys a declaration holds, so an effect is written from vfx.py
describe vfx.build answers declares, each key a *.vfx.toml holds with its type, default, choices and sentence, so no one reads vfx.py (design recorded in
docs/specs/tool-surface.md). - PW408 · 4b7278fvfx.build draws no star, twinkle or heart, so a cute game's particles fall back to a flake or are drawn in game code
vfx.build draws a twinkle, a star and a heart as a picture inside the scene, so a cute game's particles are declared and nothing is imported (design recorded in
docs/specs/vfx.md). - PW407 · fb4f541a reference video is named by path each call, so a changed file is read silently and capture.run takes internal input
reference.register keeps a video's digest so a changed file is refused, and capture.run and project.check catch internal footage (design recorded in
docs/specs/fetching.md). - PW406 · 261d06ba rebuild's comparison with its reference shows no declared pressure, so a spawning fault reads like a choice
reference.compare takes the declared wave and where it starts, charts its pressure and gives each gap what the wave had alive then (design recorded in
docs/specs/fetching.md). - PW405 · c601c5da reference video's timeline marks no change of music section, and is drawn apart from the frames its ticks fall in
reference.events marks music sections by a novelty curve over the soundtrack, and draws each event's tick under the thumbnail it falls in (design recorded in
docs/specs/fetching.md). - PW404 · 295cc24reference.objects tells kinds apart by colour and size alone, so two enemies of one colour count as one kind
A kind in reference.objects may name sample crops and a match, so one colour is told apart by shape and a flaring kind is kept (design recorded in
docs/specs/fetching.md). - PW403 · cdc6291the browser's review page and the window's decision screen would be two implementations of one screen
python -m polyweave review serves the window's Decide screen over a browser desk, built into review_page/screen with a stamp; the iframe and page.js are gone (design recorded in
gui/README.md). - PW402 · 7c1d519the window's decision screen shows no gate lanes, turntables, canon boards or pending table
The window's decision screen draws gate lanes, turntables, canon boards and the pending table, and writes promotions, admissions and withdrawals via review.answer (design recorded in
gui/README.md). - PW401 · fc2731athe window's decision screen cannot mark where a picture is wrong or compare two versions of it
The window's decision screen marks a picture in its own pixels, sent as masks, and compares old and new four ways through review.compare (design recorded in
gui/README.md). - PW400 · b591226the window shows a project's verdicts only by framing the review page, never on its own decision screen
The window's Decide view draws sittings and cards natively over a Desk, in the review catalog's words via review.words, and answers through review.answer (design recorded in
gui/README.md). - PW398 · d988120the saves and options kits read only their own files, so a game adopting them starts its players over
The saves and options kits take what a game kept before them once, through adopted() and ADOPTED, write their own file and say so (design recorded in
docs/specs/kit.md). - PW397 · 33fdf3bthe remap kit reads only its own file, so a game adopting it loses every binding its players had already set
The remap kit takes the bindings a game kept before it, from the file and section it declares, once, and says so (design recorded in
docs/specs/kit.md). - PW396 · bfac1c8the players kit seats any pad the moment it presses Start, so a game cannot hold a join for the next wave
The players kit asks before seating a pad, seats it only where AUTO_JOIN or the game says, and carries a first player's rebind under SHARED_LAYOUT (design recorded in
docs/specs/kit.md). - PW395 · 2891c8athe prompts kit follows every pad, so a second player moves the first player's prompts, and an unplugged pad keeps them
The prompts kit keeps a family per player, moved only by their own device, and hands an unplugged pad's prompts to a free pad or the keys (design recorded in
docs/specs/kit.md). - PW394 · 34fb0e4the prompts kit names a binding only as an icon, so a help line in words cannot name a player's button in their language
The prompts kit names a binding in words per player and family, and fills {action} and {move} marks through the string table (design recorded in
docs/specs/kit.md). - PW387 · 22229d4a style cannot take its palette from another project, so a game in a sister game's colours keeps a copy that drifts
A style reads a palette kept in code, or borrows another project's shifted for its game, and says when that source moved (design recorded in
docs/specs/project-config.md). - PW386 · 26fe0c0measure.take asks for contrast_min and refuses it for want of targets, yet takes no targets parameter
measure.take takes targets, ring, radius and behind, so contrast measures are asked beside the others; the refusal names the doors for targets (design recorded in
docs/specs/measurements.md). - PW385 · f1374d7worlds offered on one tier of a route cannot be held level in whole threat and in what they give to save
measure.level totals each tier's worlds and names any whose threat is off its tier's band or whose saved count differs, refusing as a gate (design recorded in
docs/specs/measurements.md). - PW384 · f6e1dcenothing keeps a reference video, or the frames taken from it, out of the repository and out of what ships
A reference's frames stay in the work area and mark all made from them internal; verify names what git tracks of it and store pages refuse it (design recorded in
docs/specs/provenance.md). - PW383 · 5a8f743a transcription read from a reference video cites no frames, and a person's corrections to it are kept nowhere
A transcription's rows cite their frames, a sitting shows each beside them, and a person's answer per row is kept and read back (design recorded in
docs/specs/fetching.md). - PW382 · e9e0d1ea rebuilt level's capture cannot be aligned with the video it copies, so where it plays differently is found by memory
reference.compare aligns a rebuild's capture with its reference video and lists, with both frames, each second whose counts differ (design recorded in
docs/specs/fetching.md). - PW381 · 16df21aa reference video has no timeline of its score, flashes and sound onsets, so where each wave starts is found by eye
reference.events lays a video's number changes, flashes and strong onsets on one timeline, listing what it could not read (design recorded in
docs/specs/fetching.md). - PW380 · 7b96f5da reference video's radar and HUD cannot be declared as regions, and the blips on its radar cannot be read as positions
A reference's regions are declared once; reference.regions enlarges each and reference.minimap reads blips as places from the player (design recorded in
docs/specs/fetching.md). - PW379 · 21d6afdthe enemies in a reference video's frames cannot be counted or followed, so an agent counts them by eye on every sheet
reference.objects counts declared kinds in a video's frames, joins them into tracks and groups with formation and end, ids on sheets (design recorded in
docs/specs/fetching.md). - PW377 · aafb148half the decision screen's facts and its masked write are no operation, so the window can only frame the Python page
The decision screen's facts and writes are operations, and one React screen draws them in the window and as the review page, by PW399 to PW403 (design recorded in
gui/README.md). - PW399 · 44a618ethe window calls an operation by its name with untyped arguments, so a renamed parameter fails only at run time
tools/operations_ts.py writes every operation's arguments as TypeScript types the window calls through, kept fresh by a test (design recorded in
tools/operations_ts.py). - PW378 · a1a5694a revision's session can write outside its item through Bash, and neither the question nor the touched list sees it
A Bash write outside a revision's item is found by its hook around the command, kept as touched and shown to session and window (design recorded in
docs/specs/acceptance-spec.md). - PW376 · e944383provenance.verify reports the work area's snapshots of old commits as the project's drift
provenance.verify reads only the project's own records, leaving out any checkout below the root and naming it in other_trees (design recorded in
docs/specs/provenance.md). - PW375 · 06b2dd0a verdict a person gives in chat answers no sitting by name, so the agent rebuilds each family's members for judge
verdict.answer carries a chat verdict onto a sitting by name through the page's own write, skipping families already answered (design recorded in
docs/specs/acceptance-spec.md). - PW374 · 318c2aavfx.build writes each scene beside its declaration, so effects declared in an unshipped folder load only in the editor
vfx.build writes where out or [paths] vfx says, and refuses beside a source the export leaves out; clip.camera refuses alike (design recorded in
docs/specs/vfx.md). - PW373 · 167d374game.shot answers success and a path when the save failed, and never makes the folder it is given
game.shot and a batch's shot make the folder they are given, and a save that wrote no file is refused as driver.shot-not-written with the engine's error (design recorded in
docs/specs/driving.md). - PW393 · 5dae10dthe options kit's proof fails in a game with one value row, writing its refused value over the one it just kept
With one value row the options proof writes its refused value in a second older file, so it holds in a game whose kits give a single row.
- PW392 · fd9aa48the remap kit's proof holds only in a game with jump, fire and pause actions, so a kit that needs remap fails to install
The remap proof declares three actions of its own at run time, so it holds in any game and a kit requiring remap installs.
- PW391 · 111b051a pad binding the remap kit rebinds answers pad 0 alone, so a lone player on any other pad loses it after a rebind
A pad binding the remap kit decodes answers every pad, as the project's own do, and its proof presses a rebound binding from pad 1.
- PW390 · 1b3abf5a colourblind player cannot tell a game's paired colours apart, and no filter corrects it or checks the pair
The access kit lays a Daltonize filter over Machado's simulation, and each declared colour pair is held apart under it by measure.contrast.
- PW389 · 7a5e5bathe window's live test fails the gate at random when its setup, two Python calls, outruns vitest's 10 s hook limit
The shell's hooks get the 60 s its tests have, so the window's setup, two Python calls, no longer fails the gate when the machine is loaded.
- PW369 · f2d2ec5a new game starts as an empty Godot project and is adopted onto polyweave later, by hand
project.new starts a game already adopted: Godot project, LFS and git, config and agent, base kits proved, a first test and a gate that passes at once (design recorded in
docs/specs/adoption.md). - PW367 · dc402fea preset's settings are chosen by eye, so no one knows if it is the best-looking one that fits its frame budget
engine.preset_search finds per preset the settings fitting its p95 budget that lose least, prices each feature, and sends lossy ones to people (design recorded in
docs/specs/engine.md). - PW366 · 3aba95fa game ships one graphics setting or presets chosen by hand, and no fallback when its renderer fails to start
The graphics kit's presets touch only what the game uses, a first one is picked from the adapter, and the renderer fallback is held on (design recorded in
docs/specs/kit.md). - PW365 · 9de8e9da game's frame time, load time and memory are measured by scripts run by hand, with no baseline a commit regresses from
engine.perf holds each declared scene to its frame percentiles, load, memory and node budgets and to its machine's baseline (design recorded in
docs/specs/engine.md). - PW364 · 072d3b5a game's tables of enemies, items or waves are read as loose JSON, and a number typed as a string is found in play
tables.check holds each row of a declared table to its schema by row and column; the tables kit loads them typed and re-reads a changed file (design recorded in
docs/specs/kit.md). - PW363 · 8838e12an exported build is never launched before a player launches it, so a resource the export left out is found by them
game.export_smoke exports each preset for this machine, launches the build to catch what the export left out, and replays a flow in its pack.
- PW362 · 74d1ab1each game runs its tests its own way, so an agent learns per project how to run them and read what failed
game.test runs a game's tests the one way, naming each failure, parse error and hang with its line; the tests kit's base writes that convention (design recorded in
docs/specs/kit.md). - PW361 · 402d66dwhen a game crashes on a person's machine, the agent has nothing to read but their description of it
The crash kit logs to user:// and packs each error with its script, line and state, an unclean exit on the next launch, and game.crash_read reads it (design recorded in
docs/specs/kit.md). - PW360 · 06fe21aa bug that happens only sometimes cannot be reproduced, because a game's randomness and timing are held to no seed
The determinism kit seeds named streams from one run seed and records input by physics frame; game.record_flow keeps a recorded run as a flow (design recorded in
docs/specs/kit.md). - PW359 · 365ac7dan agent reads a game's state by adding prints and running it, since nothing declares which state a query may read
The state kit names a game's state once, each held to its type, and game.query reads a name through the driver with no path or print (design recorded in
docs/specs/kit.md). - PW358 · f06e210a moved file breaks a UID reference and a script that does not parse is found only when its scene loads
engine.check holds each UID and path reference to a file, repoints a moved one and parses all scripts after an import; project.check holds text refs (design recorded in
docs/specs/engine.md). - PW357 · 7d2a394a second player joining, which pad is whose and keeping two players' bindings apart are rewritten per game
The players kit seats a pad that presses Start, copies each action onto that pad alone, keeps rebinds apart and frees a pad on leave (design recorded in
docs/specs/kit.md). - PW356 · c4c5a5ea pad unplugged mid-game or a window losing focus leaves the game running with no one at the controls
The presence kit pauses on a pad leaving or focus lost, names whose pad in its own family's prompt, and resumes on its return or a confirm (design recorded in
docs/specs/kit.md). - PW355 · eaa5f3atext size, colourblind filters, subtitles and less shake are each left out or hand-built, and none is checked
Subtitles follow the Voice bus within three rows on screen, and a declared run captured with flashes off holds no flash over the limit (design recorded in
docs/specs/kit.md). - PW354 · cd1f477no measure counts the flashes in a captured run, so a photosensitivity risk is found by a player
measure.flashes counts general and red flashes in a captured run, naming the worst second, its frame and share against WCAG's limit; a spec bounds it (design recorded in
docs/specs/measurements.md). - PW353 · c346dd5a dialogue box with typed text, skip, advance and a portrait is rewritten per game, each advancing on its own button
The dialogue kit types a table line at its rate, completes it on the first confirm of the family in hand and advances on the next, held to its box in every locale.
- PW352 · 7bb4347the string table words checks reaches a game's TranslationServer by hand, with no fallback font for another script
The language kit puts the table on screen, empty cells filled, a fallback font per script, the system's locale first, each screen held per locale.
- PW351 · 73187bbeach game lays out its audio buses, music crossfade and sound pooling its own way, and a bus's loudness is never checked
The audio kit lays out declared buses, crossfades and ducks music, pools sounds, and holds each bus to its loudness with sound.measure (design recorded in
docs/specs/kit.md). - PW350 · b8d8f7ba game's credits are typed by hand while the provenance record already knows every asset's source and licence
The credits kit draws its screen from a file provenance.credits writes from the records, and says when that file falls behind them (design recorded in
docs/specs/kit.md). - PW388 · 084b07ea verdict given with asset= opens an after run, so that asset's baseline is refused for good
A verdict given with asset= now opens a run marked made: false, which neither refuses a baseline nor counts as a cost; older verdict runs read the same, so Spinhold's five reopen.
- PW349 · 62bfe75the splash, the load into the first scene and each change of scene are hand-made per game and freeze on a large scene
The launch kit gives a splash any button skips, a threaded load into each scene, and launch and frame times held to budgets at a percentile (design recorded in
docs/specs/kit.md). - PW348 · 9f7da9ea save is written in place with no schema version, so a crash mid-write or a game update can lose a player's progress
The saves kit writes slots through .tmp and a rename, keeps the save before, checks a sum and migrates by version; a newer save is kept (design recorded in
docs/specs/kit.md). - PW347 · fe451a9each game writes its own options screen and settings file, and an option that changes nothing goes unnoticed
The options kit keeps one versioned settings file, migrating old keys and keeping unknown ones, on a screen of kits' tabs; each row is read back (design recorded in
docs/specs/kit.md). - PW346 · 4040331a main menu, a pause menu and a confirm dialog are rebuilt per game, and a control no pad can reach is found by a person
The menus kit gives main, pause and confirm menus a pad walks round, back and confirm by family, a real pause; a script alone proves kits (design recorded in
docs/specs/kit.md). - PW345 · f2978bbrebinding, its conflicts, its reset and its persistence are written anew by each game that lets a player change controls
The remap kit rebinds keys and pad apart, swaps a clash, keeps it in user://, resets to project.godot, on a screen in prompts' icons (design recorded in
docs/specs/kit.md). - PW344 · a209e87a game names a pad's buttons in its own text per layout, with no icons, no Switch layout and no change on a new device
The prompts kit follows the device in the player's hands and draws each action's binding as an icon, four sets by position, proved in Godot (design recorded in
docs/specs/kit.md). - PW343 · baafaaba project cannot tell that a kit it installed has a newer proved version, or what upgrading would replace
provenance.outdated names a kit the plugin carries newer, with its changes, and kit.update swaps an unedited core and re-proves it, or puts it back (design recorded in
docs/specs/kit.md). - PW342 · 73028dba kit's proof runs only in a game that installed it, so a kit can leave this repository broken
kit.prove installs every kit into a fresh copy of its fixture and runs its proof, and tools/gate.py names each kit held, failed or skipped, red on a failure (design recorded in
docs/specs/kit.md). - PW341 · a5e8c1anothing installs a kit into a project, records which version landed and proves it there in the same call
kit.install lands a kit and what it requires, proposing its declaration, copying core and scene, recording its version and proving it, in one call (design recorded in
docs/specs/kit.md). - PW340 · 9b8815fno format says what a kit is, so a part every game repeats is rewritten in each one, a little different each time
A kit is a kit.toml with its core, scene, declaration and proof, under one five-step contract, and kit.list checks every kit the plugin carries (design recorded in
docs/specs/kit.md). - PW339 · 8f9cf38game.open ignores the resolution and locale [capture] declares, and game.shot does not say what it took
game.open runs in [capture]'s resolution and locale unless the call names its own, and game.shot answers the size and locale it took, naming a gap (design recorded in
docs/specs/driving.md). - PW338 · d5396eaverdict.sitting marks a member with no spec as passed, as if something had measured it
A sitting member no spec holds answers passed null and checked false, sheet and page say nothing holds it, and its family gets no spec wording (design recorded in
docs/specs/acceptance-spec.md). - PW337 · 342547aa dict parameter is refused as an @file, so PowerShell cannot pass one to the CLI at all
A dict flag takes @file.json as a list does, read past a byte order mark, and a dict that does not read names that form, so PowerShell can pass one (design recorded in
docs/specs/tool-surface.md). - PW336 · e9b346bnothing reads a held screen for text leaving its box or lying over other text, so a fit is judged by eye
game.text_fit reads a held screen's labels and buttons for text wider than its box, unshown lines, out of its container or over other text, by locale (design recorded in
docs/specs/driving.md). - PW335 · 155c6d6no operation says which characters of a string table its fonts lack, so a missing accent shows only on screen
words.glyphs reads each declared font's character map and names every character a line it draws needs and lacks, upper case too, with its keys (design recorded in
docs/specs/world.md). - PW334 · 27b2d18an @file list written by Windows PowerShell is refused for its UTF-8 BOM, so PW247's remedy fails in that shell
An @file argument and every JSON or TOML declaration are read past a UTF-8 byte order mark, so a file PowerShell 5.1 wrote is taken (design recorded in
docs/specs/tool-surface.md). - PW333 · 5de6684an sfx effect cannot be declared at a note, so putting a menu sound in a key means working out base_freq by hand
An sfx effect is declared at a note, with an arp and a slide by note and time compiled to sfxr's numbers, and sound.measure answers the pitch (design recorded in
docs/specs/effects.md). - PW332 · 2c4c3b7a verdict given through the CLI never reaches the ledger, since an open run cannot outlive the call that opened it
An open run is kept on disk by its id until it finishes, so a CLI verdict lands; verdict.judge asset= opens and closes a run in one call (design recorded in
docs/specs/adoption.md). - PW331 · 206600ea set of small 2D icons, such as a pad's button prompts, cannot be declared, built or accepted
icons.build draws a declared set of outlined, rimmed, shaded icons at each size or as an atlas, holds them to legibility bounds, lays them out for a person (design recorded in
docs/specs/panel.md). - PW330 · eab8b57a wave timeline's threat per second, in its two bounding cases, and its gaps with nothing to shoot cannot be measured
measure.pressure reads a game's weighted events as threat per second in both bounding cases, with gaps past a window, and diffs two (design recorded in
docs/specs/measurements.md). - PW328 · d2b5f2dA reference gameplay video cannot be sampled into frames or contact sheets an agent can read
reference.frames samples a video into time-named frames, denser in ranges, dropping still ones, on 4x4 sheets with times burnt in, tied to its hash (design recorded in
docs/specs/fetching.md). - PW326 · 59048b5geometry.fit scores a whole alpha silhouette, so a part inside a picture, like the V on a badge's disc, cannot be fitted
geometry.fit takes a region, a drawing's colours scored against named materials in their whole, so a part fits in place and at scale (design recorded in
docs/specs/geometry.md). - PW325 · 16ba0c7no operation brings an artefact another project made into this one with a record of where it came from
provenance.borrow copies another project's file here, recording its project, path, commit and digest, so outdated names each borrower once it moves (design recorded in
docs/specs/provenance.md). - PW324 · 84282d7a spoken line can only be heard after paying for it, so its wording and timing in the game cannot be tried for free
sound.speak rung=draft speaks a line free on the project's local engine, as a draft voice.lines offers again and provenance sets apart (design recorded in
docs/specs/effects.md). - PW323 · 025a33dnothing measures a spoken take, so a clipped, padded or misread line reaches the person's verdict as a candidate
A spoken take is held to its line and [voice] bounds before a person hears it, and with trim on, lands with its silence cut to the bound (design recorded in
docs/specs/effects.md). - PW322 · 144efaea locale catalog's lines cannot be voiced as a set, so a cast's dialogue is one hand-made call and cue per line
voice.lines prices a string table's lines and voices them only on spend, skipping current takes, naming voiceless speakers, halting at a ceiling (design recorded in
docs/specs/world.md). - PW321 · ca1e900a world's character has no voice of its own, so each spoken line sounds like whichever voice its call happened to name
An entity's voice is declared in the world, designed as paid previews, kept once a person accepts one, and spoken by sound.speak entity= (design recorded in
docs/specs/world.md). - PW320 · 6886f4ca service's price is one figure per call, so a spoken line billed by its characters cannot be priced before it is sent
A prices row may be by the character: a call counts its text first, a refusal quotes count and rate, and usage readings measure spend (design recorded in
docs/specs/fetching.md). - PW319 · efeeb13measure.contrast rates a text box against its surround, so nothing says whether text reads over the picture behind it
measure.contrast takes text lines, rating each stretch's glyphs against what is behind them, so a spec holds text_contrast_min (design recorded in
docs/specs/measurements.md). - PW318 · 6225c4da declaration cannot state its own cell ceiling, so a model allowed over the voxels budget carries the finding for good
A declaration's [voxels] budget is now its own ceiling, and the checks and any budget finding say whose bound held (design recorded in
docs/specs/geometry.md). - PW317 · 292f771build --set voxels.cell=0.03 is dropped without a word, and the build answers built at the declared cell
build --set now reaches a declaration's fields (voxels.cell), echoes what each key changed, and refuses a key naming nothing, listing what it takes (design recorded in
docs/specs/geometry.md). - PW314 · 4f67150no operation speaks a line, so a game cannot get a voiced tag like a studio name read aloud
sound.speak speaks a given line in a named voice through ElevenLabs' text to speech, priced by the character, and recorded with its voice and delivery (design recorded in
docs/specs/effects.md). - PW310 · 72e90b4the window would show a project as it was when opened, so an item a session or terminal changed looks untouched
The window watches the open project's root, re-reads the inventory once per burst, redraws only what moved, and marks an item changed while looked at (design recorded in
gui/README.md). - PW309 · ed0ef8aa revision's change can rewrite items outside the one asked about, and the person learns of it only by diffing
A revision's write outside its item and dependents asks first, with the reason; its close lists each file written and what waits (design recorded in
docs/specs/acceptance-spec.md). - PW308 · 5636b63a revision session can call a paid generator on its own, so a click on one picture spends credits nobody weighed
A paid call in a revision stops with purchase.quote's price and what the ceiling leaves, runs on one yes, and its spend is tied to it (design recorded in
docs/specs/fetching.md). - PW307 · 8015d14a session changing an item can report done with no check run, and nothing makes it end on the person's verdict
A revision's session runs the item's checks after each write, cannot stop without a sitting, and closes only on the person's answer (design recorded in
docs/specs/acceptance-spec.md). - PW306 · ed0aafcasking for a change to one item means leaving the window for a terminal and retelling the agent which item and what
An item's ask opens a session on the person's claude from its revision and brief; turns are kept on the revision, one session holding an item (design recorded in
gui/README.md). - PW305 · 9f3d685the window and the review page would each show a sitting, so two surfaces answer the same verdict and drift
The window hosts the project's own review page, its server held beside the project's, so verdict.judge stays the one write; an item links to its sitting (design recorded in
gui/README.md). - PW304 · d8c6a80a person sees one item of a project only by opening its file by hand, with no declaration, record or bar beside it
The window shows an item beside its bar, chain and dependents, a picture with its gate lanes and a loop looped, and filters to open revisions (design recorded in
gui/README.md). - PW329 · 33aa745words.check holds a translated column to the English names, so a name written in that language reads as unknown
An entity declares its name per locale, and words.check holds each column of the string table to that locale's forms, so a translated name reads as known.
- PW316 · b535ac8a menu panel, frame or stylebox cannot be declared, built or held to a spec, so a game draws its UI kit by hand
A declared panel builds to nine-patches and a canvas shader with a tick, wipes to progress shaders, and panel.capture films every state and step (design recorded in
docs/specs/panel.md). - PW315 · 958e110a vector logo cannot be rendered to a game texture, whole or in its layers, with a record naming the SVG
picture.vector draws an SVG at a width through ThorVG, blur and masks kept, and named layers on one canvas, each with a record naming the SVG (design recorded in
docs/specs/store.md). - PW313 · 85492c8sound.sitting plays a jingle's cues one by one, so a person never hears them mixed at the times the game plays them
An [arrangement] mixes its cues at their times, pitches and gains into one sound with a plan the game reads, so a sitting hears it whole (design recorded in
docs/specs/effects.md). - PW312 · 69e490ageometry.describe warns a param no node reads when every node reads it, if its name is also a function
A name counts as a function only where it is called, so a param named floor and read in floor + 0.35 is read, and no unused warning comes back.
- PW303 · f8e2977there is no desktop window that finds the projects on a machine using polyweave and opens one
An Electron window finds projects under a named root, opens one on a held polyweave serve, names its engine and draws its inventory by kind in en or pt-BR (design recorded in
gui/README.md). - PW302 · b69fa94the plugin is sourced from the repository root, so a desktop app added to the tree ships in every adopter's cache
The marketplace sources plugin/, holding only the manifest, hooks and skills; a scratch install cached just those, and project.check passed (design recorded in
docs/specs/adoption.md). - PW301 · 6777aa4a person's request to change one item lives only in a chat, so no run, sitting or record ties it to the item
revision.ask keeps a person's request against an item's digest; revision.open lists open ones with briefs, and revision.close ends one (design recorded in
docs/specs/acceptance-spec.md). - PW300 · ef2be6fasset.brief reads a geometry declaration only, so a picture, sound, effect or line has no one-read state
asset.brief reads a cue as music.validate, an sfx or vfx effect as its table and measures, a picture as its style family, and any inventory id (design recorded in
docs/specs/inventory.md). - PW299 · 35fdfa3nothing lists every item a project governs, so a picture, sound or line is found only by knowing its path
project.inventory lists every artefact, unrecorded file, unbuilt declaration and line by kind, with record state, pending verdict and digest (design recorded in
docs/specs/inventory.md). - PW298 · afa68f1asset.brief calls a spec current while its render is of a mesh the game stopped drawing when voxels replaced it
A spec's
subjectnames its declaration; render.bake and the search render its build, and verify calls a render of another mesh stale (design recorded indocs/specs/acceptance-spec.md). - PW297 · 89e1f18game.open never makes the scene it loads current, so a game's scene change leaves the first scene and its camera up
The driver makes the scene it loads current, so a game's own change_scene_to_file frees it as for a player, and relative paths follow the scene playing now.
- PW296 · 704d414every capture opens a Godot window on the desktop, so a gate run flashes dozens of them and steals focus
A capture's engine starts minimised and unfocused through the run's override.cfg, and an autoload keeps it drawing, so a gate shows no Godot window (design recorded in
docs/specs/engine.md). - PW295 · 1ea4064a sitting's summary draws its choices as boxes that look pressable, and nothing parts one sitting from the next
A sitting's summary lists its choices as a plain legend under How to decide, and each sitting is its own section, parted by a rule, with its count of items and answers.
- PW294 · ec00193the review server keeps the polyweave it started with, so a spec using a measure added since is refused on Accept
A review server started before polyweave changed refuses an answer with review.stale-server naming the restart, and the page shows a banner saying so.
- PW293 · f6be2e3a sitting laid out before PW287 reads in English on the page, with no summary, and looks broken to its owner
The review page reads a sitting laid out before PW287 through the catalog: its choices by key, its title and summary from its kind, in the project's language.
- PW292 · 28b7ecfno measure says how tall a silhouette is for its width, so a spec cannot hold an enemy tall enough to hit
silhouette_aspect says how tall a subject stands; Starship's enemy spec holds it at 0.6, refusing four flat Lancers and passing the Mote (design recorded in
docs/specs/measurements.md). - PW291 · 34e1b5ewords.sheet lays out every row of the string table, so a person judges the tone of interface labels nobody speaks
words.sheet lays out only spoken lines, with an about, and the page shows each as large text by its speaker; Starship's sitting holds its 174 crew lines.
- PW290 · aa577c5a picture bought from a world entity on 4.0 is refused with 400, its json_prompt lacking compositional_deconstruction
A world entity's picture on 4.0 carries compositional_deconstruction composed from its look, so the service takes it; Starship's Lancer was bought through it.
- PW289 · 8656c6dthe review page redraws itself whole after each answer and every few seconds, so a click between two is lost
The review page redraws only when what it read changed, and an answer redraws its own card alone, so a person answers card after card with one click each.
- PW288 · 055a901an accept with no comment is refused as loop.no-reason, though the review page calls the comment optional
An accept with no comment on the review page is recorded as accepted with no comment, in the project's language; a redo still needs the person's words.
- PW287 · 70f3869a review sitting shows sheets and choices with no summary, no consequence and only in English
A sitting says what is judged and what each choice leads to, in the project's language from per-language catalogs, on a page made for the reviewer (design recorded in
docs/specs/acceptance-spec.md). - PW286 · afa582da path ribbon adds a point every frame, so it is cut short at high frame rates, where its cost is timed
A path ribbon adds a point each step seconds or gap metres, so it trails 7.2 m at both 60 and 600 fps, and an amount under lifetime/step is refused (design recorded in
docs/specs/vfx.md). - PW285 · 52c735cvfx.build has no lifetime randomness, so a built burst dies on one frame where the accepted one frays
An effect declares randomness, 0 to 1, written to the particles node as Starship's trails set it, so a port keeps their uneven start (design superseded: it spreads emission, not lifetime).
- PW284 · d442bb4a trail's ribbon and its particles are two vfx effects, so the game places two scenes and a person judges two halves
An effect can be made of parts, one scene under a Node3D measured and watched as one; Starship's trails build as 7 scenes and 7 sheets (design recorded in
docs/specs/vfx.md). - PW282 · 9399687music.render refuses an unwritable format as music.no-engine on a machine without the engines
music.render names a format it cannot write as music.bad-format before it looks for engines, so the refusal and the CI gate read the same on every machine.
- PW281 · 1d223e9vfx.build cannot declare damping, spin, box emission, particle shape or a path ribbon, so no accepted trail builds
vfx.build declares the five trail keys and a path_ribbon drawn behind the emitter by a script in the scene; vfx.preview watches trails move (design recorded in
docs/specs/vfx.md). - PW280 · 733b460no capture can take a picture larger than the desktop, so a 4K key art on a 4K screen always comes back shrunk
capture.run retakes a shrunk picture with the window borderless, which holds sizes past the desktop, and keeps the size for later runs (design recorded in
docs/specs/engine.md). - PW279 · a2268eda spec cannot give contrast_min its ring or a target's radius, so a shot measured from a spec reads 1.0 in silence
A contrast predicate takes ring, radius and a JSON or log targets file; a ring inside its shot is refused, not read as 1.0 (design recorded in
docs/specs/measurements.md). - PW278 · 4fda914a kept expectation on a dictionary or array of numbers fails every replay, since 1 is compared to 1.0 as text
The driver compares numbers as numbers inside a Dictionary or Array, so an expectation on a tally replays as passed and a wrong one still fails.
- PW277 · c8c36cba selector cannot pick out an unnamed node by its place under a named one, so buttons inside a screen stay fragile
A selector may name the ancestor it looks under and the node's order there, so re-keying Cottony left no generated path in either flow.
- PW276 · ef30a09a flow kept before selectors still clicks at generated paths, and re-keeping it means driving every step again
game.rekey puts selectors in an older flow by sending it through a held session; Cottony's two flows were re-keyed and replay to the same frames.
- PW275 · c3c62d7store.capsules reads only a raster logo, so a wordmark kept as SVG has to be exported by hand at a guessed size
store.capsules draws an SVG logo through Godot at each capsule's size and measures its stroke there; Starship's clear wordmark cut nine capsules.
- PW274 · 6c07efaa cube and a plate over the same box fill different cells where a face falls on a cell centre
A plate or prism takes a centre on its edge as a primitive takes one on its face, so one box fills the same cells whichever op draws it (design superseded: closed, not half-open).
- PW273 · dfcec69capture.movie asked at a size records at the project's window size, and is refused after as though the script erred
capture.movie sizes Movie Maker with a run-long override.cfg of window overrides, so a movie asked at 320x240 keeps 320x240 frames.
- PW272 · ca7ad8bno measure says how well a target stands out from what lies behind it, so a shot's legibility is scripted by hand
measure.contrast gives each target's WCAG ratio and CIEDE2000 distance against its ring, and a spec bounds contrast_min over targets a log names.
- PW271 · 9cf6caba flow that needs many moves costs thousands of calls, so losing a later Cottony level was never kept
game.batch sends many commands in one call, so Cottony's lose-a-later-level flow was kept in seven calls with start_level, and replays to one frame.
- PW270 · 77a0ec1a kept flow names nodes by Godot's generated names, so any node added before them breaks it
The driver takes a selector wherever it takes a path, and game.keep writes one for each generated path, so a flow survives a node added ahead of it.
- PW269 · b39a878compose.place writes its picture with no record, so a composed capsule cannot say which pictures it came from
compose.place and compose.sheet write a record naming the pictures they were made from, so provenance_dependents on a key art finds what was composed from it.
- PW268 · 0124b9ca store's capsule set cannot be cut from one key art, so each project crops and places its logo by hand
store.capsules cuts a store's whole set from one key art and a logo, shapes as data, refusing any upscale and failing a capsule whose logo won't read (design recorded in
docs/specs/store.md). - PW267 · 09e4d14capture.run trusts the size a script says it applied, so a window the OS shrank records a picture of the wrong size
A capture holds the size its pictures have, several sizes hold none, and a picture the OS shrank is refused naming its size and the cause.
- PW266 · 119891bthe review page admits a picture to a canon only from a gate lane, so a family never gated cannot start
[style] candidates lists pictures a person may admit to a canon from the review page with no gate run, and a board under two pictures says it judges nothing.
- PW265 · eabb3cba refused picture can be promoted only from the review page, so a verdict given in chat has no operation to carry it
verdict.promote carries a promotion given in conversation as the refused lane's own write, from the CLI or MCP, and mesh.buy then models from the picture.
- PW264 · 590d515mesh.buy asks which paid service to use even when only one of the declared services sells meshes
A buy naming no service takes the one whose prices row carries its model, so mesh.buy in Starship reaches Meshy; it asks only when none or several do.
- PW263 · 15fe5aageometry.fit scores at the reference's own aspect, so a declaration held to another box is squeezed to its range edges
geometry.fit names each view's aspect gap and the best values bound by their ranges, and boxed=true scores shape inside each view's box.
- PW262 · cd8aeb4a one-cell paint region centred on a cell boundary silently takes both cells, so a row of mullions paints a whole face
A voxel build names each thin paint region that takes more cells across than its width, with the node, the axis and the half-cell move.
- PW261 · 79c5682a sitting given bare picture paths as members raises and takes the MCP server down instead of refusing
A sitting reads a bare path as a picture and refuses any other bad member by index (verdict.bad-member); an operation that raises comes back to MCP as op.crashed.
- PW260 · 89a4825a capture run through the tool never writes its picture's record, since no caller can pass engine.run's produces
capture.run records every picture its expect lines name, as Starship's citadel now is, and says why_unrecorded when a run names none (design superseded: PW246 had already fixed it).
- PW259 · d394ed2a visual effect such as a trail or a burst of particles cannot be declared, built or accepted
Starship's seven trails are declared, built and accepted through vfx.build and vfx.preview, and the game wears the built scenes with no drawing code of its own.
- PW258 · edc5203what a change costs a frame is found only by stashing, re-importing and timing both sides by hand
engine.cost times a script on the tree and a revision's worktree, alternating, with each measure's difference, interval and sure; RK131 read +1.11 ms GPU (design recorded in
docs/specs/engine.md). - PW200 · 4132376Starship's screen still shows names its world bible replaced
Starship's 174 crew lines are judged into its lines canon, and its Lancer is bought from the world with entity=, the sidecar naming it.
- PW257 · c3c8cedwords.check reads the plural of a declared name as a name the world does not show
words.check takes a declared name's English plural as the name (Gleaners, Foremen), an entity may state an irregular plural, and a near miss names the name it is near.
- PW256 · e7ededaa sitting shows pictures only, so a person cannot hear a new sound beside the old one and give a verdict
sound.sitting plays each sound beside the one it replaces on the review page, a loop looped; verdict.judge keeps the answer in its record (design recorded in
docs/specs/acceptance-spec.md). - PW255 · 8c5bdecmusic.render always writes both WAV and OGG, so a game that loads one ships the other or deletes it by hand
music.render writes only the formats a game loads: those named, else its declared cue's format, else both; an OGG asked for without ffmpeg is refused, not dropped.
- PW254 · a81bff9a synthesised effect is normalised to a peak alone, so a replacement lands 10 dB louder than the sound it replaces
An effect may declare its loudness or match the sound it replaces and lands within 0.5 dB of it, peak a ceiling said when it binds (design recorded in
docs/specs/effects.md). - PW253 · 6a35a29a voxel preview's front view puts +x where a camera at -z sees -x, so an asymmetric model reads mirrored
The voxel sheet draws each view as a camera there sees it, +x on the left from -z as a Godot camera shows it, so asymmetry reads true (design recorded in
docs/specs/geometry.md). - PW252 · 3c94fd4a paint whose marks cover none of its body's cells builds clean, and the detail is silently missing
A voxel build names each paint member that covers none of its body's cells, and each declared material no cell wears, as findings (design recorded in
docs/specs/geometry.md). - PW251 · 29dff9bcapture.run kills every script at frame 6000, and no parameter raises it
capture.run takes frames and timeout, so a late moment runs to its end, and a silent run's why names the budget that may have cut it (design recorded in
docs/specs/engine.md). - PW250 · 450d9e6finding a seed where a game shows a moment means flying it by hand, one seed at a time
engine.sweep runs one script over a grid of arguments in parallel and returns the runs whose log shows a pattern, recorded per build (design recorded in
docs/specs/engine.md). - PW249 · 4a81444a game can be captured as one still, never as the frames of a run between two ticks
capture.movie keeps every frame between two marks a script prints, via Movie Maker, with the audio and one record naming ticks and dropped frames (design recorded in
docs/specs/engine.md). - PW248 · 697505fa project cannot ask which files it ships were made by a generator, directly or through their inputs
provenance.generated names every shipped file whose lineage reaches a purchase, with its chain and service, beside the authored and unrecorded ones (design recorded in
docs/specs/provenance.md). - PW247 · 3c0b47ca list parameter passed from PowerShell never arrives as JSON, so the CLI refuses it
A list flag may be given once per item or as @file.json, so it survives PowerShell 5.1, and a mangled list is refused naming both forms (design recorded in
docs/specs/tool-surface.md). - PW246 · 943cb2acapture.run answers ok false with verdict ok and an empty why when only the environment differed
A capture whose environment did not hold now names the cause in verdict and why at the top, and lists the pictures its expect lines named (design recorded in
docs/specs/engine.md). - PW245 · d7df1f7a capture asked at 1920x1080 comes back at the project's window override, since each script applies the size
capture.run puts the declared size on the engine's command line, which beats a window override, and checks the saved picture's own size (design recorded in
docs/specs/engine.md). - PW217 · 18c423dCottony's flow from title screen to a won level is checked by no test, so a broken menu ships unseen
Cottony's export check replays two flows a blind agent kept, a won first level and a setting that sticks, beside a clean release check (design recorded in
docs/specs/driving.md). - PW216 · 23d1d66A real-time game has never been driven frame by frame, so the driver is proven on a turn-based board only
Starship, driven into its first phase with fire held and kept as a flow, replayed ten times to the same score, ship and wave on frame 732 (design recorded in
docs/specs/driving.md). - PW215 · d43745fNothing stops the driver addon from shipping inside a release export
game.release_check names every preset, autoload or exported pack that would ship the driver, and refuses as a gate with strict (design recorded in
docs/specs/driving.md). - PW214 · b38762eA flow an agent found by driving the game is lost when the session closes, so nothing replays it
game.keep writes a session's steps as a flow file, and game.replay runs it in one launch with no agent, naming the first step that broke (design recorded in
docs/specs/driving.md). - PW213 · 42887d7An agent has no tool that opens a game, acts in it and reads it back within one session
game.open, query, input, step, wait, call, shot and close drive a held game over MCP or the CLI, each answer naming the errors it printed (design recorded in
docs/specs/driving.md). - PW212 · f7b248dA running game cannot be held between two tool calls, so each question an agent asks it costs a fresh launch
A polyweave_driver addon holds a game by blocking its main loop and answers query, input, step, wait, call and shot over loopback JSON (design recorded in
docs/specs/driving.md). - PW211 · 6b0d43dNobody knows if an agent can drive a Godot game from its menu to a won level and get the same result twice
A GDScript harness drove Cottony from its splash to a won level 1 by input alone, and ten runs agreed to the frame and the board.
- PW244 · 0c311f3words.check reads the pronoun I's contractions mid-sentence as unknown names, failing ordinary English dialogue
In an English locale words.check reads I'm, I'll, I've and I'd as ordinary words, so dialogue passes with nothing listed in [words] ordinary (design recorded in
docs/specs/world.md). - PW243 · dc45284words.check glues the lines of a cell with a real line break, reading two words as one unknown name
words.check reads the table as one stream, so a real line break in a quoted cell splits it exactly as the escaped \n does (design recorded in
docs/specs/world.md). - PW242 · dffd55fa capture of a moment in play misses its subject when spawns vary between runs
capture.run with until_visible takes the run again, up to tries, until the script reports its subject on screen before the picture (design recorded in
docs/specs/engine.md). - PW241 · dfac94ca declaration cannot say its asymmetry is meant, so a one-armed pose fails the symmetry check the project applies to all
A declaration or one variant may set near_symmetry or asymmetric in its [voxels], and the symmetry finding names its model (design recorded in
docs/specs/geometry.md). - PW240 · 417c6b7no operation compares two voxel models cell by cell, so proving a declaration rewrite changed nothing takes a script
geometry.compare answers whether two voxel models hold the same cells in the same materials, naming what moved and how the grids differ (design recorded in
docs/specs/geometry.md). - PW239 · 20a31cda mesh of small triangles projects as a speckle of dots, so its silhouette is mostly missing
project samples each face across its whole barycentric set, so a finely cut surface draws the outline one quad does (design recorded in
docs/specs/fetching.md). - PW238 · f5c3111capture.run over MCP and the CLI takes no arguments for the script, so a capture that needs any falls back to Python
capture.run takes the script's own args over MCP and the CLI, passed after one -- ahead of the environment (design recorded in
docs/specs/engine.md). - PW237 · 2e60810a voxel detail painted onto a body needs two carves and a helper node, as no op repaints cells without adding any
A paint node repaints a body's own cells where another node covers them, cell for cell the two-carve trick, and reads back in words (design recorded in
docs/specs/geometry.md). - PW236 · f6062c9a voxel preview does not say which way its front view looks, so a face declared on +z is found by rebuilding
The spec states a model faces -z, the sheet labels where each view looks from, and describe warns of a face part on +z (design recorded in
docs/specs/geometry.md). - PW235 · 94a9884the Godot addon reads a voxel model but cannot draw one, so each game writes its own MultiMesh drawer
The Godot addon's VoxelDraw node draws a model's skin, shared per file and centred, with per-node wash and fade and a default shader (design recorded in
docs/specs/geometry.md). - PW234 · b0d0deca voxel model over budget on cells no one sees is hollowed by a hand-sized cutter, by trial
[voxels] hollowkeeps a skin of whole cells and drops the inside before the checks, and a budget finding names the buried share (design recorded indocs/specs/geometry.md). - PW233 · 737fc2ca primitive has one size and no cone or frustum, so every disc and drum is a scaled, turned unit cylinder
A primitive takes a size per axis and an axis to stand on, with cone, frustum and torus answered exactly on the voxel grid (design recorded in
docs/specs/geometry.md). - PW232 · 7348c05a fit to a Meshy mesh scores the gaps in its surface as empty, so the fitted model shrinks to match them
geometry.fit fills a mesh reference's silhouette from its border, so a leaky mesh is fitted to its outline;
filledsays how much each view needed (design recorded indocs/specs/geometry.md). - PW231 · 6d1f3daa misspelt key under a declaration's [voxels] builds without it and names nothing
A key under [voxels] that nothing reads is refused as geom.unknown-field at voxels.<key>, naming the nearest real one (design recorded in
docs/specs/geometry.md). - PW230 · bbdb0e9fitting a voxel model to its reference has no operation, so a project writes a script to run it
geometry.fit fits a voxel declaration to a drawing or mesh from the command line or MCP, and writes the best values into its [params] on request (design recorded in
docs/specs/geometry.md). - PW229 · 0a7d296a project's voxel declarations cannot share one cell size, so each repeats it and a drift is found by eye
A project's [voxels] cell is the cell of every declaration stating none, the build says so, and a declaration drifting from it is warned (design recorded in
docs/specs/geometry.md). - PW228 · 01c8baban artefact built on Windows is written with CRLF, so its provenance fails once a checkout normalises line endings
Text artefacts and records are written with LF everywhere, and verify says a record taken over CRLF was, not that it changed (design recorded in
docs/specs/provenance.md). - PW227 · 4a37d3ca build stamp records its outputs as absolute paths, so it cannot be committed or shared between checkouts
A build stamp names its source and outputs relative to the root with LF endings, so two checkouts write the same bytes and it can be committed (design recorded in
docs/specs/geometry.md). - PW226 · b6f79e0a voxel build always writes a .glb too, which a Godot project imports and never uses
[voxels] mesh = false, or mesh=false and --no-mesh on the builds, writes the cells alone, taking back a .glb an earlier build recorded (design recorded in
docs/specs/geometry.md). - PW225 · 54073eeA loop cut mid-bar in a dense mix passes both seam measures
seam_grid holds a loop's length to whole bars from its record, or to beats off its onsets: a dense-mix cut reads 0.19 to 0.38, a whole loop 0.001 (design recorded in
docs/specs/measurements.md). - PW224 · 7ad4772A sound ffmpeg cannot decode escapes sound.read as a raw process error, not a refusal
A sound ffmpeg cannot decode is refused with spec.unreadable-sound naming the file, and sound.declared names that one cue while the others still measure.
- PW223 · c36b652A chiptune score cannot play its percussion on an sfxr drum kit
A score plays drums on a chip:<kit> of sfxr hits, each placed on its tick by velocity, with a kit lacking a hit named before any render (design recorded in
docs/specs/music.md). - PW222 · fa628a2seam_flux reads a loop that restarts on a crash cymbal as a cut
seam_flux weighs the wrap against the track's own strong onsets, so a clean loop opening on a crash reads below one; cuts still read above (design recorded in
docs/specs/measurements.md). - PW221 · 52fb2e4sound.measure refuses every one-shot effect as too short for a seam
A one-shot measures its loudness, peak and duration with no seam, so an effect can be bounded; a seam bound on one is refused with the length needed (design recorded in
docs/specs/measurements.md). - PW191 · 67792a1Rendered audio does not record which instruments made it or what their licences owe
Every rendered or synthesised sound's record names its engines, libraries and patches with their licences; provenance.credits lists what a game owes (design recorded in
docs/specs/provenance.md). - PW190 · c6d8db0Realistic sound effects have no bounded way to be bought from a service
sound.buy buys an effect from ElevenLabs under its price row and ceiling, transcodes it to its declared cue's format and ledgers it first (design recorded in
docs/specs/effects.md). - PW189 · 28155a9Retro sound effects are synthesised by each consumer's own script
sound.synth makes retro effects with a seeded sfxr from a *.sfx.toml, at the declared cue's file, redrawing seeds until a duration bound holds (design recorded in
docs/specs/effects.md). - PW188 · 9716908One theme cannot play at several intensities that stay in step
A score's tracks name layers, and music.render writes one file per layer at the mix's exact length, each riding the master's gain so they add back up to it (design recorded in
docs/specs/music.md). - PW187 · ebeb5efA composed score cannot become a WAV or OGG file without a DAW open
music.render turns a valid score into a mastered WAV and OGG through Surge XT and FluidSynth, folding a loop's tail onto its start, with no DAW open (design recorded in
docs/specs/music.md). - PW186 · 53b8b5aAn agent cannot write multi-track music as data that polyweave validates
A *.music.toml score in mini-notation compiles to a piano-shaped note model; music.validate names every problem with its line, and music.to_midi writes it (design recorded in
docs/specs/music.md). - PW185 · 4303611No declaration says which music and sound effects a game needs or where they land
A game declares its audio as [sound.<family>] cues, and sound.declared says where each lands, what it measures and which files are missing (design recorded in
docs/specs/project-config.md). - PW184 · e193a3dNobody knows if agent-composed, headlessly rendered music sounds good enough to ship in a game
A person judged three agent-written loops and ten seeded effects, rendered headlessly through Surge XT and FluidSynth, to sound professional, so Block P proceeds.
- PW220 · 75d4f9cNothing says an adopted project has drifted: an engine gone, a path missing, a stale agent section
init --check reports each adoption gap with its remedy and exits non-zero on an error; init's own output and a hand-written adoption check clean (design recorded in
docs/specs/project-config.md). - PW219 · 2712e84A configured project still hides polyweave from its agent: no server declared, no skill, no word in AGENTS.md
init --agent declares the server unless the plugin is on, and writes a stamped AGENTS.md section from the config that CLAUDE.md imports (design recorded in
docs/specs/project-config.md). - PW218 · 7160e4aA new project writes polyweave.toml by hand, key by key, against a spec it has to read first
python -m polyweave init proposes polyweave.toml from the tree, writes it only when asked, merges without overwriting, and never proposes a budget (design recorded in
docs/specs/project-config.md). - PW210 · c13ecfca scene script's expected line anchored with ^ never matches below the log's first line
A script's expected line is matched in line mode, so an anchored pattern finds the line wherever in the log the script printed it.
- PW209 · b69ce63a variation is held to its parent pixel for pixel, which a service that redraws the whole picture can never meet
picture.against_parent measures what was kept as the outline framed alike and the look's drift, floored by accepted variations; pixels only where a service preserves.
- PW208 · df7b6b7a picture a person promoted from the gate's refused lane cannot be bought from, because mesh.buy asks only the gate
mesh.buy accepts a picture the gate saw and a person promoted from its refused lane on the review page, as well as one the gate passed.
- PW207 · 6e9085eEvery public description still calls polyweave a tool for 3D assets
The manifests, skill trigger, README, docstring, llms.txt and site describe a game's parts, claiming only what shipped and naming levels as next.
- PW199 · 22ae225Whether a line keeps the world's tone has nowhere to be answered but a chat
words.sheet puts unjudged lines on the review page beside the world's tone; verdict.judge keeps each in a lines canon world.read returns (design recorded in
docs/specs/world.md). - PW198 · aaa71ceA character's picture or mesh is bought from a description retyped by hand
picture.buy and mesh.buy take entity=, compose the prompt from its look, and record it so only its own changes read as outdated (design recorded in
docs/specs/world.md). - PW197 · f518f44Text a player reads is never checked against the world's names and rules
words.check holds Godot's translation CSV to the world per locale; words.unlisted counts scene literals outside it (design recorded in
docs/specs/world.md). - PW196 · 7255e0cNo declaration says which names, factions and characters a game's world holds
A *.world.toml declares a game's entities; world.validate reports duplicate names, unknown factions and style families on their lines (design recorded in
docs/specs/world.md). - PW195 · a63a91ba transparent picture is uploaded with the colour its generator left under full transparency
Every picture a service is sent has the colour under full transparency cleared to black, so a service that drops alpha shows only what a viewer saw.
- PW194 · dd9cea2the picture gate compares silhouettes where each service framed them, so placement and size swamp the shape
The gate trims each silhouette to its alpha and fits it into one square before comparing, so a shape scores the same wherever and however large it was drawn.
- PW193 · d1092f1a paid picture's download is refused by Ideogram's image host, because the plugin sends Python's default agent
Every request the plugin sends names it as polyweave, so Ideogram's image host hands over a paid picture instead of refusing the download.
- PW183 · 8e39fb1a mesh is bought by each consumer's own Meshy client, so the plugin never sees a mesh bought from a picture
mesh.buy buys an untextured mesh from words or a gated picture, measured by two balance readings, and refuses a picture the gate never passed.
- PW182 · 5a9f56ea verdict sheet is sized to its member rows, so the choice lines under them are cut off at the edge
A verdict sheet measures every line with the font that draws it, choices included, so none is cut off on a sheet of narrow pictures.
- PW181 · 8aee039an approved picture cannot be reframed to another aspect ratio, so an icon and a banner of it are two separate pictures
picture.vary reframes a picture into a new frame, and against_parent finds where the parent landed and refuses if it changed (design recorded in
docs/specs/fetching.md). - PW179 · e38a493a picture paid for whose download then fails is charged to no ceiling, so the next spend is judged too high
A picture charged for and never delivered is owed beside the ledger and counted against the ceiling; picture.collect lands it later (design recorded in
docs/specs/fetching.md). - PW178 · 90d4811a picture is bought only synchronously, so each call holds a connection open until it is drawn
picture.buy sends the async route, polls the generation id to its end or a timeout, keeps it as the task id, and runs as a fetch job (design recorded in
docs/specs/fetching.md). - PW177 · 369d5a6the canon is a folder of files, so what a family is meant to look like is never seen whole
Each family's canon is one board with its palette, skeleton and floors, each picture's effect on them, and joins and removals only by a click (design recorded in
docs/specs/acceptance-spec.md). - PW176 · 23a65eftwo versions of an asset are compared side by side, where a few ΔE of drift or a grown silhouette goes unseen
A mesh compares as a turntable baked at the rig's own camera, frame by frame, with the drawing laid over its front view (design recorded in
docs/specs/acceptance-spec.md). - PW175 · eb2b27da person sees the pictures the agent kept and never the ones it refused, so a wrong refusal is invisible
The page lays each gate run out as kept and refused lanes with their numbers, and a person promotes a refused picture through judge (design recorded in
docs/specs/acceptance-spec.md). - PW174 · 93fb61ba person can say what is wrong with a picture only in words, so where it is wrong is the agent's guess
A person can mark where on the page; the mark is kept as a mask tied to the picture's digest, and an edit of that picture is bounded by it (design recorded in
docs/specs/acceptance-spec.md). - PW173 · bf7dbadan answer given on the page reaches the agent only when the person says so again in chat
Each page answer is a line in answers.jsonl, and verdict.answers hands back what was said since a time and carries it into the agent's open run (design recorded in
docs/specs/acceptance-spec.md). - PW172 · a46a186a person sees a render or picture only by opening files by hand, so a verdict rests on the agent's description
polyweave review serves one page on 127.0.0.1 that shows every sitting's sheets from disk and has one write, verdict.judge (design recorded in
docs/specs/acceptance-spec.md). - PW171 · 510fc842D art from a picture service arrives at the size and margin it chose, not the project's grid
picture.fit defringes, trims and fits a picture to its family's cell and anchor, pixel art unsmoothed, with the transform on its record (design recorded in
docs/specs/fetching.md). - PW170 · a3f1788a variation of an approved picture can change what was approved, and nothing compares it to the one it came from
picture.vary buys a remix or masked edit with its parent on record; against_parent refuses change outside the mask and drift from the canon (design recorded in
docs/specs/fetching.md). - PW169 · 1476966lettering drawn into a picture can be misspelt or lose its accents, and nothing reads the letters back
picture.letters reads lettering back with tesseract in the project's language, keeps accents, and reports an absent engine as unchecked (design recorded in
docs/specs/fetching.md). - PW168 · 73c84cea reference drawing reaches the mesh service unchecked, so a wrong silhouette is found only once the mesh is paid for
picture.gate refuses a picture that is no drawing, runs off the frame, misses the outline or drifts, says why, and keeps the best IoU (design recorded in
docs/specs/fetching.md). - PW167 · c3fee96a picture that drifts from the canon is found by a person looking, after it was already offered as a candidate
style.drift holds palette, value, saturation, line, edge and light to the canon's own spread and says which way a picture drifted (design recorded in
docs/specs/project-config.md). - PW166 · 4f5ea1dnothing says what a project's pictures should look like, so each prompt restates a house style by hand and drifts
Each family's palette and skeleton are declared once and composed into every structured prompt, and only a verdict adds to a canon (design recorded in
docs/specs/project-config.md). - PW165 · 2716384a picture cannot be made again from its record, because the service rewrites the prompt it was given
A picture's record keeps the prompt sent and the one drawn from, its seed and size; json_prompt is drawn as written, and describe makes a picture one (design recorded in
docs/specs/fetching.md). - PW164 · 9b12d44an image service reports no balance, so what a picture cost cannot be measured the way a mesh's is
A picture is priced from the declared table and says it was quoted; reads report quoted spend, and reconcile holds each quote against the bill (design recorded in
docs/specs/fetching.md). - PW163 · d9646d5no picture can be bought, so every drawing a mesh starts from still has to come from a person
picture.buy buys one Ideogram picture against its own ceiling, checked first, refused as a code, and captured before its link expires (design recorded in
docs/specs/fetching.md). - PW162 · a3c3434a project can name only one paid service, so a second one's key, schema and ceiling have nowhere to live
Each paid service is a named table with its own key, schema and ceiling in its own unit, and a spend among several must name one (design recorded in
docs/specs/project-config.md). - PW161 · 15874cca look digest's palette is one mean colour, so restyling the small slot of a two-material asset may not move it
A bake paints each slot flat in a one-sample pass at its rig, so the look palette is a colour per slot and a recoloured rim moves it (design recorded in
docs/specs/measurements.md). - PW160 · fe35b11a clip is baked to an animation and a sheet only from Python, since every step takes a mesh and a rig in memory
motion.bake takes the clip, mesh and plan by name, fits, weights, compiles and bakes, and answers with the paths and whether both outputs match (design recorded in
docs/specs/motion.md). - PW146 · 4d8169ea misspelt key in a geometry declaration is accepted silently, at the top level or on a node
parse refuses a key nothing reads with geom.unknown-field, per document, node, repeat and op; it caught a fixture whose bevel said amount (design recorded in
docs/specs/geometry.md). - PW145 · 2c299dda bake after
preview_sizechanged is served the old-size picture from the cache, as a hitEvery bake keys on the frame it draws, so a changed preview_size misses and renders at the new size; every existing key changed once (design recorded in
docs/specs/engine.md). - PW144 · 4f95643the rig a search found is kept nowhere, so each run searches it again and no other game can start from it
A passing searched port keeps its rig beside the family file; the next port renders at it before searching, and another family can start from it (design recorded in
docs/specs/adoption.md). - PW143 · 647fcd8an acceptance spec bounds how an asset looks and never what it costs the game to draw
A spec bounds triangles, materials, draw calls, texture bytes and cells, read off the .glb, voxel model or texture it names, so costly looks fail (design recorded in
docs/specs/acceptance-spec.md). - PW142 · f10a8c5a voxel model is drawn with every filled cell, including the ones buried where no face of them can be seen
The addon draws skin() alone on request, read off depths or neighbours, and exposed_by() names what a hit uncovers; the frame cost is unmeasured (design recorded in
docs/specs/geometry.md). - PW141 · 739a7a7a bake does not say whether its silhouette moved or only its look, so two bakes are compared by measuring both again
A bake returns and records a shape and a look digest quantised at the rung's noise floor; measure.digest reads both off any picture (design recorded in
docs/specs/measurements.md). - PW140 · 936804ea build is reported cached after the plugin that built it changed, because its stamp hashes the inputs alone
A build records each output's provenance and its stamp is that record's key, so a new plugin version or --preview rebuilds (design recorded in
docs/specs/geometry.md). - PW139 · 40c82batwo jobs started at once can both pass the capacity check, so
[render] max_parallelis exceededAn O_EXCL start lock spans the count and the record, so two starts at a bound of one give one refusal; a job not yet spawned is no longer reaped (design recorded in
docs/specs/tool-surface.md). - PW138 · b637e19the tool-surface spec names twelve error areas and the code declares nineteen, and nothing reads one against the other
Six readers hold the specs and skill to the code's areas, names, measures, config, key and commands; the drift they found is fixed (design recorded in
tests/test_spec_names.py). - PW137 · 627421fthe site's own test requires the page to say there is no implementation, after a hundred lines have shipped
The site states built blocks and open lines from the generated roadmap, a test holds it; README, CLAUDE.md, specs and capabilities() dropped stale status (design recorded in
site/README.md). - PW136 · 0729d24no pytest or ruff runs anywhere but a desk, so a consumer pinned to a commit gets one nobody gated
A gates workflow runs ruff and the gate on Python 3.11 and 3.13, prints the stamp saying CI proves the pure half, and validates the plugin manifests (design recorded in
.github/workflows/gates.yml). - PW135 · 9a47279a test log written at the repository root is staged by the commit tool, because nothing ignores
*.logA log at the repository root and the gate's own files are ignored, so a redirected run can never be staged with the fix it was taken for.
- PW134 · e041787a green suite with Blender and Godot absent reads the same as one that rendered, and leaves no record it ran
tools/gate.py runs the suite under a lock, keeps its log and a red copy, and stamps the counts and how many tests skipped for each absent engine (design recorded in
tools/gate.py). - PW133 · 6cbe3b4an agent may hand-edit a built mesh or voxel file, and nothing notices the output no longer follows its declaration
The plugin's guard denies a hand edit to a built or recorded file, naming the declaration, and a Stop hook catches one that slipped by (design recorded in
docs/specs/adoption.md). - PW132 · a5d7a24an agent in a consumer is never told the plugin exists, because it ships no manifest, skill or session notice
The repo is a Claude Code plugin and marketplace: an MCP server, a driving skill, and a one-line SessionStart notice, held to size by a test (design recorded in
docs/specs/adoption.md). - PW131 · e10b40fstarting work on an asset means opening its declaration, spec, record and last verdict one file at a time
asset.brief says where an asset stands in one read: its shape, its bar and origins, its artefact against its record, its last verdict, a digest (design recorded in
docs/specs/tool-surface.md). - PW130 · 824480fevery test calls the surface correctly, so a silently dropped argument or a wrong first call is never measured
A canonical task runs in three counted calls, and a naive client's first guesses are each refused; validate now type-checks every argument (design recorded in
docs/specs/tool-surface.md). - PW129 · 1200f7enothing bounds what
describe,capabilitiesor an error costs the turn that reads itA test holds describe, capabilities, the largest refusal, --help and a search's answer to measured ceilings, and a long allowed list is cut to 40 (design recorded in
docs/specs/tool-surface.md). - PW128 · c75532da refused name says what was wrong but never which names would have worked
Every unknown-name refusal passes allowed, so each names the names that work, the nearest and where; test_names holds all 62 sites.
- PW127 · dd2e214a remedy is a sentence, so nothing checks that the call it names exists or accepts those arguments
A remedy naming a call carries it as a door, operation and arguments, and a test parses every door in the source and codes table as a command (design recorded in
docs/specs/tool-surface.md). - PW113 · 4ca6659the acceptance spec is only ever aimed at a 3D bake, though nothing in its format is 3D
The owner put sound in scope: a spec bounds a WAV's seam step and spectral change, loudness, peak and length, checked and verified like a picture (design recorded in
docs/specs/acceptance-spec.md). - PW159 · fc50d02a mesh's outline, a reference, an ingest and a composed picture are made only from Python, since describe lists none
Eight operations cover shape, reference, normalise, compose and texture by path, choices read off the code; pending falls to 40 (design recorded in
docs/specs/tool-surface.md). - PW158 · 8e27fbethe engine is found, run and captured only from Python, since describe lists nothing of the engine side
engine.find and run, capture.run and declared, offscreen.routes and godot.install are operations, free of test hooks; pending falls to 73 (design recorded in
docs/specs/tool-surface.md). - PW157 · eb0308fthe purchase ledger and the service schema are read only from Python, since describe lists neither
Seven purchase and three schema operations are registered, a date taken as text; writing and learning stay behind the fetch; pending falls to 94 (design recorded in
docs/specs/tool-surface.md). - PW156 · 7430cc0a declaration is built or read back only from Python, since describe lists no geometry
geometry.build, build_all, describe and variants are operations taking a declaration's path; pending falls to 112 (design recorded in
docs/specs/tool-surface.md). - PW155 · 139315ca picture is measured only from Python, since describe does not list the measurement vocabulary
measure.take, same and available are operations, take naming the four arguments a measure takes; pending falls to 147 (design recorded in
docs/specs/tool-surface.md). - PW154 · 3ad5351a render's plan and an asset's scale are checked only from Python, since describe lists neither
render.plan and units.check, engine_scale and read_number are operations describe returns; pending falls to 163 (design recorded in
docs/specs/tool-surface.md). - PW153 · c545a95an artefact's record, and what depends on a file, are read only from Python, since describe lists no provenance
provenance.read, verify, unrecorded, dependents and outdated are operations describe returns; pending falls to 174 (design recorded in
docs/specs/tool-surface.md). - PW152 · 1c87300a family's port and a search's trace are reached only from Python, since describe lists neither
port.run ports a family by its file path and trace.read reads a sweep's trace back, both by name; pending falls to 193 (design recorded in
docs/specs/tool-surface.md). - PW151 · 39c8f99the loop ledger is kept only from Python, since describe does not list loop
The ledger is ten loop operations, the open run passed as JSON between them; pending falls to 200 (design recorded in
docs/specs/tool-surface.md). - PW150 · 328af84a person's verdict is carried only from Python, since describe does not list verdict
verdict.sheet, verdict.sitting and verdict.judge are operations, judge's three choices declared; pending falls to 213 (design recorded in
docs/specs/tool-surface.md). - PW149 · f2200a2a bound is calibrated from the noise only from Python, since describe does not list calibrate
calibrate.run and calibrate.apply are operations; apply by name cannot replace a person's bound, and pending falls to 216 (design recorded in
docs/specs/tool-surface.md). - PW148 · 7a723c0a rendered search is reached only from Python, since describe does not list search
search.sweep, asynchronous with a spec path, and search.worth_parallel are operations describe returns; pending falls to 222 (design recorded in
docs/specs/tool-surface.md). - PW147 · 97a201aan acceptance spec can be checked or verified only from Python, since describe does not list accept
accept.check, accept.verify and accept.check_screen are operations describe returns, called with paths alone; pending falls to 236 (design recorded in
docs/specs/tool-surface.md). - PW126 · 1762834an agent's first call is guessed from prose, because no tool schema carries the plugin's names, ranges and choices
python -m polyweave serve lists each operation as an MCP tool whose schema has its ranges, choices and required fields, within budgets (design recorded in
docs/specs/tool-surface.md). - PW125 · 941a353an agent in a consumer can ask what the machine can do, explain a code or start a job only by writing Python
Every operation is a python -m polyweave subcommand derived from its declaration, with --job for async work and text read off the JSON (design recorded in
docs/specs/tool-surface.md). - PW124 · 99682f6
describeknows one operation, so search, accept, geometry and voxels are still learned by reading their sourceEvery public function is registered, an entry read or internal with its reason; capabilities lists nothing unregistered and pending is 0.
- PW123 · c522f21
build --allskips a declaration it refuses to read, so a typo drops an asset from the build and exits 0build --all tells a declaration from other TOML by its nodes or voxels key, so one that fails comes back refused and the build exits 1 (design superseded: no geom.unknown-field existed (PW146)).
- PW122 · 76a92a0a voxel model's cubes mesh is refused when a material carries a game key or its colours came from a texture
A voxel model's cubes mesh wears its palette with only the keys the shader has, so game keys ride in the cells alone and found colours are materials.
- PW121 · f534fb9on Windows every console program a background job starts opens a terminal window of its own
A background worker on Windows gets a hidden console of its own, so the engine or a Python child it starts no longer opens a terminal window.
- PW120 · daa1809every family port is a hand-written script repeating the same build, search, check, bake and record steps
A family file states members, axes and bake targets, and port.port runs the build, family search, final bake and ledger record from it (design recorded in
docs/specs/adoption.md). - PW119 · 21c6d10nothing answers which captures and renders depend on a file, so a changed sprite means re-taking all of them
provenance.dependents names every capture and render made from a file, and outdated fails while one depends on a file that has changed since (design recorded in
docs/specs/provenance.md). - PW118 · e683fd1a capture that changes blames an undeclared setting when what moved was a file the game loaded
A capture hashes its script and every resource the game loaded, so a changed sprite names itself instead of an undeclared setting taking the blame (design recorded in
docs/specs/engine.md). - PW117 · 630739eevery symptom in the backlog was measured on one game, so the config boundary is tested by a single adopter
A web-page adopter needed no new key but found two Cottony shapes compiled in: all three rungs assumed, and scales read only from GDScript (design recorded in
docs/specs/adoption.md). - PW116 · aeb764fa ledger side that never measured the hand work still yields a conclusive verdict
A run names what it never measured, and compare lists it and calls a side with untimed seconds inconclusive instead of not reduced (design recorded in
docs/specs/adoption.md). - PW115 · 18921c6a run's render count is whatever its caller adds up, so a cache hit can be charged as a render
Inside loop.recording, every bake counts itself into the run as a render or a cache hit, so no caller's arithmetic reaches the ledger (design recorded in
docs/specs/adoption.md). - PW114 · c8f8768the loop ledger only times a first port, where the old rig is a three-second re-bake of constants already found
A run can name a change to a ported asset, record a person's minutes, and be compared on that change alone, the baseline rule held per change (design recorded in
docs/specs/adoption.md). - PW112 · 0311334a spec is checked against the bake and never against what the engine draws on screen
A capture script names where it drew each asset, a spec's screen points at one, and verify checks it there and says when screen and bake disagree (design recorded in
docs/specs/acceptance-spec.md). - PW111 · 800c99fno command checks committed artefacts against their specs, so a spec binds only while a search runs
A spec may name its artefact, and
python -m polyweave verifychecks each one as committed, with no render, and exits non-zero on a failure (design recorded indocs/specs/acceptance-spec.md). - PW110 · 6782b32nothing lists which assets wait on a person's look, so each family waits its turn in series
loop.pending lists every asset whose newest render no person has judged, and verdict.sitting lays all their sheets out for one look (design recorded in
docs/specs/adoption.md). - PW109 · 5bff758a person judges a port from a file an agent points at, and the verdict is typed back into the spec by hand
verdict.sheet shows a family with its failures in words; verdict.judge logs the reply and rewrites a wrong bound as the person's (design recorded in
docs/specs/acceptance-spec.md). - PW108 · 0023c92a person's verdict is stored per run, so nothing learns which bound a rejection was about
A verdict keeps each predicate's value and the ids a person blamed, and loop.bounds names a bound overruled twice one way, with the values behind it (design recorded in
docs/specs/adoption.md). - PW107 · 1f0c080a margin around a measured value is chosen by eye, never derived from how much the measure moves on its own
calibrate re-renders an accepted picture under seed, samples and size, and proposes each bound as its value plus three spreads (design recorded in
docs/specs/acceptance-spec.md). - PW106 · 347ab20a spec bound does not say whether it was measured, guessed as a margin or agreed by a person
A bound may say it was measured, a margin or a person's, and a miss names that bound and what it means, listing misses on a margin as guessed (design recorded in
docs/specs/acceptance-spec.md). - PW105 · 6d1c136a rig can only be searched against one spec, so a family is fitted on one member and hoped for on the rest
A family search scores each sample by its worst member and, where nothing holds on all, names the two predicates that never hold together (design recorded in
docs/specs/acceptance-spec.md). - PW104 · bb0f4dba search stops at the first sample inside every bound, however close to one of them it sits
A check reports each bound's headroom and the tightest, and a search keeps looking past the first pass while a pass still raises the headroom (design recorded in
docs/specs/acceptance-spec.md). - PW103 · d655d78a family of models that differ in a few numbers is one document copied per member
A document declares [variants] overriding parameters and material keys, and a build writes every member under its own name, read back side by side (design recorded in
docs/specs/geometry.md). - PW102 · ad47631a Godot project reading a voxel model must write its own loader and MultiMesh setup
A polyweave_voxels addon installs into a Godot project and reads a voxel model into a resource with a ready MultiMesh, checked in Godot 4.7 (design recorded in
docs/specs/geometry.md). - PW101 · fd54970building a declaration takes a Python script of the project's own
python -m polyweave build writes a declaration's outputs with its readback and findings, as text or JSON, and --all skips what has not changed (design recorded in
docs/specs/geometry.md). - PW100 · f6fc847a fetched mesh cannot be the starting block of a voxel model
A textured mesh node's cells wear its texture's colours, sampled off the surface and quantised to the count the node states; the hammer takes two seconds (design recorded in
docs/specs/geometry.md). - PW99 · 1bffff9a game breaking a voxel model must work out its fragments and damage order itself at runtime
A [voxels.fracture] plan splits cells into seeded connected fragments that keep to one material, and ranks each cell by its depth from the surface (design recorded in
docs/specs/geometry.md). - PW98 · e72a645fitting a voxel model to a concept drawing or a fetched mesh is guessing numbers by hand
A voxel fit searches declared ranges for the best overlap with a drawing or mesh per view, in under a second, scoring floating or over-budget cells zero (design recorded in
docs/specs/geometry.md). - PW97 · 14d156fa voxel model with floating cells, one-cell threads or too many cells builds without complaint
Every voxel build reports floating and edge-held pieces, long threads, near-symmetry, budget and extent, naming the cells, with the project's limits (design recorded in
docs/specs/geometry.md). - PW96 · b31cee3a symmetric shape must be declared whole, so its two halves can drift apart
A mirror op joins a half to its reflection across any plane, faces still outward and materials carried, and in cells keeps a column on the plane once (design recorded in
docs/specs/geometry.md). - PW95 · 465baa8a shape placed cell by cell, like layered pixel art, has no op and would take dozens of cube nodes
A cells node draws a block as text rows per layer with a legend, painting over earlier nodes, carvable, and built as cubes in a mesh document (design recorded in
docs/specs/geometry.md). - PW94 · 5e06e76a voxel model cannot be seen without starting Blender and paying for a render
A voxel build writes a contact sheet beside its cells: front, side, top and isometric views in flat colour, drawn in milliseconds with no renderer (design recorded in
docs/specs/geometry.md). - PW93 · 5aa33d7a declaration can only become a triangle mesh, so a game that draws and breaks cells has nothing to read
A [voxels] declaration builds as cells in milliseconds, painted by the last node covering them, written as flat arrays beside the same cubes as mesh (design recorded in
docs/specs/geometry.md). - PW76 · d2ae97cCottony's four progress stars are lit by three constants found by hand, and no search sees them
The four stars bake through polyweave from one searched rig, key 15 W and ambient 6, after a person accepted the dim at 0.3977 against a 0.37 margin that was never a look.
- PW92 · 6af8dc0a mesh can only be sized by its height and set on its base, so a flat flying model is rescaled by hand in the game
Ingest sizes a mesh on its height, length or longest extent and holds it from its base or centre, per asset and on the record, so a ship is two units long and centred.
- PW91 · e015365orienting a mesh against its drawing finds which way round it faces but never how far it leans
Orient now finds how far a drawing leans its subject, without a render: Cottony's hammer comes out at 22 degrees, the roll found by hand, at IoU 0.79 from 0.43.
- PW90 · eea936ba fetched mesh put in the project's frame by ingest comes back without its texture
Ingest moves the arrived object in place and exports it whole, so Cottony's fetched hammer comes out oriented, sized and still painted.
- PW89 · 1efb93ba model kept as a .blend cannot be rendered by the plugin at all
A .blend is read as it is, its mesh appended in its own materials, so Cottony's 42 MB logo file renders through a plugin bake in 3.4s.
- PW88 · b7d6890a declaration scaled by a transform comes back wearing no material, and a mirrored one inside out
A transform now carries the mesh's material groups and reverses a mirrored mesh's faces, so a tray scaled into cells keeps its two materials and faces out.
- PW87 · 47326fca silhouette checked with no region scores a render missing half the drawn shape close to 1
With no region named the silhouette measures compare over the whole frame, so a render missing half its drawing reads 0.5, not near 1 (design recorded in
docs/specs/measurements.md). - PW86 · de65fcea region's colour can only be bounded at its mean, so a spotted cap reads whiter than its body
pixel_delta_e bounds a region's colour at a percentile, so a spotted cap reads at its body colour and delta_e still means the mean (design recorded in
docs/specs/measurements.md). - PW85 · 48d12a6a bake that declares the rectangle it covers answers with the rung's size, not the picture's
A bake answers with the width and height it drew, on a fresh render and a cache hit alike, and keeps the rung's square beside it as rung_size.
- PW84 · d0812a6a rig found on a 96 px star goes dark and flat on the same star at 192 px
Light power scales with the square of the subject's size, so Cottony's gold star now passes its spec at 96 and 192 px under one rig (design recorded in
src/polyweave/render/rig.py). - PW83 · a68ef3da colour a declaration writes as #FFC43F renders lighter and greyer than #FFC43F
A declared hex colour now reaches the shader linearised, and bake(material=) takes one too, so #FFC43F rendered under emission reads back within 2 of itself in delta E.
- PW75 · fae7981a project that has made every capture reproducible has no way to keep it that way
[capture] reproducibleturns a picture that stopped reproducing into a refusal, for the project that has pinned its captures and wants to keep what it earned. - PW74 · 35b93b3a capture of an animated scene draws a different picture every run, and no declared setting holds it still
A
differsnow names the settings the run pinned and the frame it never recorded, turning a statement of the fault into a statement of where to look. - PW73 · f203b0aa message with an em dash reaches the terminal with a replacement character in it
A runner calls
polyweave.readable()and the prose arrives whole; the strings were never the fault, and the premise that they were is corrected in the record. - PW72 · ae09e52the provenance record's script path is absolute, so a record committed beside its artefact names one desk's drive
Every path a record carries is now relative to the root, a single kind's own included, and
builddoes it so that no call site has to remember to. - PW71 · 898d788two runs of one capture with the same declared settings produce different bytes, and nothing says so
A capture now reads the record the last run left and says when the same declared settings produced a different file, proved against the Cottony capture that does not reproduce.
- PW70 · ddad82dCottony finds Godot two ways now, and the runner CI depends on is the one that ignores the config
Cottony reaches the plugin as a pinned git dependency, so the runner CI depends on finds Godot the same way the other two do (design recorded in
docs/specs/adoption.md). - PW69 · 44b7bf0a declaration that has been built reaches no renderer and no file, so the only way to see one is a test
A declaration writes itself to a file that bake takes, carrying the coordinates and the materials the build worked out (design recorded in
docs/specs/geometry.md). - PW68 · 2c729d6a built mesh has no texture coordinates, so a drawn panel is the right shape wearing nothing
Inflate takes a drawing as well as an outline, blurring its alpha into the height, so what is inside a drawing shapes the panel and not where it stops (design recorded in
docs/specs/geometry.md). - PW67 · 36f986da model in two materials builds into one mesh that carries neither of them
A build says which faces wear which material, and the renderer takes a slot per material, so a rope rim on a cushion face stays two colours (design recorded in
docs/specs/geometry.md). - PW66 · 8baede9a crowned star reaches 82 units outside its own outline, and the op promises it will not
A crowned dome keeps the silhouette it was given, concave or not, because a concave ring shrinks toward its centroid rather than along its miters (design recorded in
docs/specs/geometry.md). - PW65 · 82577aean annulus is a ring between two radii, so a rim that is not round cannot be declared at all
An annulus takes two edges, so a rim that is not round is a ring rather than a boolean between two plates (design recorded in
docs/specs/geometry.md). - PW64 · 9564517an outline naming a shape cannot be given a points count, because points already names a list of them
A shape is given the points count the document wrote, so Cottony's star builds from a declaration and the review and the build agree about it (design recorded in
docs/specs/geometry.md). - PW63 · 7024e7ethree of Cottony's rig constants share a name with a plugin parameter that means something else
Every rig parameter declares its unit and a search says each axis back as fill (W), so a number that meant a fraction elsewhere shows as it is written (design recorded in
docs/specs/adoption.md). - PW62 · 1e3b8c7a render resolves its noise floor without naming its rung, so a sphere is judged at the floor measured for a final
A render is judged at its own rung's noise floor, so the sphere gets the 0.025 measured at four samples rather than final's 0.013 (design recorded in
docs/specs/project-config.md). - PW61 · 642a88cthe site understands one of the backlog's three dep forms, so a block or a range becomes a dangling id
The site asks roadkeep how each dep resolved instead of splitting the string, so a block survives whole and the gate reads all three forms (design recorded in
site/scripts/roadmap.mjs). - PW60 · 883c4d3a declaration is read, resolved and reported on, and nothing turns one into a mesh
A declaration builds into the mesh it describes, and the spec's own tray comes out 928 by 928 by 6 with a report per node (design recorded in
docs/specs/geometry.md). - PW58 · 04442fcnothing a game ships has been through the skeleton, the clip or the sprite sheet
A game's own settle pair lays out as one sheet with an index, and its shipped pixels recover the squash its constants declare (design recorded in
docs/specs/adoption.md). - PW55 · 8112fd4a Cottony fetch is bounded by nothing a tool can see, and records itself in a ledger the plugin cannot read
A ledger another client kept replays into this one for nothing, and every hash it recorded is compared with the file for the first time (design recorded in
docs/specs/adoption.md). - PW54 · dfdeb3aa Cottony shape is a bmesh program that exists only inside a bake, so nothing can read, diff or search it
Cottony's three model routes are declarations that build, and writing them down is what found the four ops the vocabulary was short (design recorded in
docs/specs/adoption.md). - PW52 · f6e5a62a render holding two opaque pixels in one corner is empty for every purpose and passes every check
A render whose subject reaches too little of the frame is refused on extent rather than area, so a speck is caught and a correctly framed rope is not (design recorded in
docs/specs/tool-surface.md). - PW51 · 14027aaa record says nothing about the tolerances its measurements were taken against
A record carries the tolerances its measurements were taken against, and a cache hit names which of those bars have moved since (design recorded in
docs/specs/provenance.md). - PW50 · 449fa82a fuzzy surface cannot be declared at all, because shell texturing is a technique and no table holds one
A material declares a fuzzy surface as a depth and a coarseness, and eight shell constants are derived from those two, so fur asks as cotton does (design recorded in
docs/specs/geometry.md). - PW49 · 9299259a fetched mesh arrives with shading painted into its texture, and nothing can take the marks back out
A texture's painted marks are found against a measured bar and lifted, opt-in and at the final rung, where the repair is 2.5x the floor not invisible (design recorded in
docs/specs/fetching.md). - PW48 · 0cacaadevery test input is synthetic, so nothing is ever checked against an artefact somebody made
A real drawing, a fetched mesh and a plush body are in the suite through LFS, and the scene script is a file, so the plugin is checked against real work (design recorded in
docs/specs/adoption.md). - PW47 · 4f5115fa bake renders square at the rung's size, so a declared world rectangle can be refused but never met
A declared rectangle now decides both axes and gets an orthographic camera, and the key needed no new field because the declaration already rides in params (design recorded in
docs/specs/engine.md). - PW46 · 7110c16a normalised mesh sits beside the paid one with nothing recording what it derives from
A normalised mesh carries a record naming its parent by hash and holding the transform, so the chain from credits spent to mesh in scene is followable (design recorded in
docs/specs/provenance.md). - PW45 · 871a15ba search renders its samples one after another, so a budget of twenty-four costs twenty-four waits
A pass can be handed over whole and rendered through job handles, and the crossing is measured: a loss on the sphere rung, 3.7x on the final one (design recorded in
docs/specs/acceptance-spec.md). - PW44 · 304a856one configured noise floor calls every preview-sized render a change, because the floor moves with the rung
The floor is keyed by rung and read for the one a render records, and a twin render measures it outright, right at any sample count anywhere (design recorded in
docs/specs/project-config.md). - PW43 · 11b3366a colour measured off a render is not the colour that was authored, and nothing says so
Capabilities renders one known colour and reports what came back, so an installation that cannot measure colour says so before a spec is built on it (design recorded in
docs/specs/tool-surface.md). - PW42 · 645dadaa render that is black to any observer passes the check for a blank render, on one bit of edge noise
Flat is now the spread across the visible pixels against the noise floor, so the unlit render that used to pass on one bit of edge noise is refused (design recorded in
docs/specs/tool-surface.md). - PW41 · 318fb2dan artefact that was produced without a record is invisible, because verify starts from the records
Verify now walks the produced directories as well as the records, so a file with no sidecar is named, and a project says which it made by hand (design recorded in
docs/specs/provenance.md). - PW40 · 32c2f35a tolerance has one default in the project config and a different one in the function that uses it
A tolerance is resolved once by the operation holding a root, and the pure functions below default nothing, so a second value has nowhere to live (design recorded in
docs/specs/project-config.md). - PW39 · fbf3f07a job checks only that an argument exists while a direct call checks its range, so one call has two contracts
A registered operation is validated in the caller before a job spawns, and an unregistered target is left to the worker's signature check (design recorded in
docs/specs/tool-surface.md). - PW38 · 15d250ba height field survives an eight-bit round trip as a staircase, and every assertion says it is fine
A field is its own checked kind, holding the file's own bit depth and its distinct values per channel, with a shallow write and a flat buffer apart (design recorded in
docs/specs/tool-surface.md). - PW37 · 02ea505a renderer outlives the worker that started it, and a sweep on Windows cannot find it to end it
A worker writes every process it spawns down before waiting on it, and a sweep ends those pids directly, while the recorded start time still matches (design recorded in
docs/specs/tool-surface.md). - PW35 · 8917a7fthe plugin's value is asserted and never measured against what it replaced
One asset's cost is recorded each way, with a baseline that cannot be written after the port and a verdict allowed to say the plugin made things worse (design recorded in
docs/specs/adoption.md). - PW34 · 22ffdbda declaration that cannot express a shape leaves no way back to code
One node may be a project function, handed resolved arguments and its inputs as meshes, with its source hashed so a change to the code costs a rebuild (design recorded in
docs/specs/geometry.md). - PW33 · f73f124a shape cannot be reviewed without building it, so a wrong construction is found in the render
A shape reads back in words before it is built, beside what is odd about it, and a built one reports a face count per node (design recorded in
docs/specs/geometry.md). - PW32 · d7ebefaa shape's own numbers are unreachable from the search that tunes everything else
A shape's parameters and a rig's search as one space, ordered so the shape is rebuilt once per shape rather than once per sample (design recorded in
docs/specs/geometry.md). - PW31 · 963b652a format covering only primitives would leave every real asset in code
Carve, bevel and inflate complete the vocabulary, with the boolean asserted non-empty because that is what protects a build rather than the solver chosen (design recorded in
docs/specs/geometry.md). - PW30 · 0353d1ea shape is a Python script, so stating one means writing and debugging a program
A shape is a TOML document of named parameters, expressions over them and a repeat, resolved into a flat graph that says what a change rebuilds (design recorded in
docs/specs/geometry.md). - PW29 · 30d817da 2D screen needs frames and a 3D scene needs a clip, so the motion is authored twice
One clip produces the engine's animation and a trimmed sprite sheet with its atlas, both carrying the digest that says they are the same motion (design recorded in
docs/specs/motion.md). - PW28 · d8916f5an animation lives in a binary track, so a curve cannot be reviewed or edited as text
A clip is authored as TOML with one key per line, so a timing change is one line in a diff, and the glTF export is a compile step keyed on that text (design recorded in
docs/specs/motion.md). - PW27 · 487c1b6motion is expressed as a second static render, so nothing longer than two frames exists
A clip has a name, a duration and channels over time, each frame renders as a still, and one measurement runs across all of them rather than at rest (design recorded in
docs/specs/motion.md). - PW26 · c5ba4cca fetched mesh has no skeleton, so it cannot be posed at all
The fitted skeleton and its weights are written into the mesh file as a glTF skin, proved by turning a joint in the re-imported file and watching it follow (design recorded in
docs/specs/motion.md). - PW25 · 1be08e5a capture takes its picture in whatever language and settings the runner happens to have
A capture is passed the settings it must be taken under, prints back what it applied, and is refused where the two differ; the answer is recorded beside it (design recorded in
docs/specs/engine.md). - PW24 · b5eadcethe baked sprite and the running game agree on scale only because a constant was tuned
An asset declares the rectangle it covers and the scale it is baked at, checked against the engine's own number before a render, both numbers in a refusal (design recorded in
docs/specs/engine.md). - PW23 · 3d0eca4a real renderer needs a window, so a capture cannot run where there is no screen
One call captures real pixels by whichever route draws on this machine, each route proved by a picture it drew and read back rather than assumed (design recorded in
docs/specs/engine.md). - PW22 · 6ddcdbcthe engine's exit code is not the verdict, so each project writes its own output parser
One runner drives a scene script and returns a verdict read off the printed line, the errors and the file, with both bounds set and the log kept (design recorded in
docs/specs/engine.md). - PW21 · 6b74804a reference photograph brings whatever stood behind the subject back as geometry
A reference photograph is cut, flattened and checked before a fetch carries it, and the prepared picture is what the record names (design recorded in
docs/specs/fetching.md). - PW20 · 34e1e1aa fetched mesh arrives at an arbitrary orientation, scale and origin
A fetched mesh is oriented, scaled and stood on its origin on arrival, against the drawing that asked for it, and the correction is kept as one matrix (design recorded in
docs/specs/fetching.md). - PW19 · 1175cf8an unknown field is dropped in silence, so a payload that validates proves nothing
The service's shape is probed for free, kept as a file, and payloads are refused locally, so a typo is a refusal rather than a field dropped in silence (design recorded in
docs/specs/fetching.md). - PW18 · b65aaccevery fetch needs a human decision, so work stops between approvals
A ceiling set once is spent against without asking, refused when it would be passed, and what each call really cost is the balance either side of it (design recorded in
docs/specs/fetching.md). - PW17 · 5518067a paid asset is deleted by the service seventy-two hours after it is made
A bought artefact lands on disk, is hashed and recorded, and only then ledgered, so nothing ever claims an asset the service has since deleted (design recorded in
docs/specs/fetching.md). - PW16 · 8fac484a generated mesh's silhouette is checked after its credits are spent
A returned shape is compared against the drawing that asked for it, on a preview where there is one, and a mismatch is a refusal with the picture (design recorded in
docs/specs/fetching.md). - PW15 · c0edc29a search reports the winning numbers and not what it rejected
A search writes down every sample it scored and lays the best handful side by side, so a spec satisfied by a wrong render is visible as that (design recorded in
docs/specs/acceptance-spec.md). - PW14 · 23ec6b0a search re-renders states it has already rendered
An identical render is returned from the store instead of paid for again, keyed on everything that can change it, and a hit says it was one (design recorded in
docs/specs/provenance.md). - PW13 · ea4f5aba rig number is found by rendering, looking, and changing it by hand, one sample at a time
A rig number is found by searching the range the spec permits, on a stated budget of renders, reported against every predicate it was scored on (design recorded in
docs/specs/acceptance-spec.md). - PW12 · e3b9509what counts as a correct render lives in somebody's head, so it is approved by opinion
A file per asset states what makes a render of it correct, and every predicate returns a verdict and a margin a search can climb (design recorded in
docs/specs/acceptance-spec.md). - PW11 · 52872eea bake is not byte-reproducible, so a file diff cannot say whether anything changed
Two renders are compared with a tolerance rather than byte-wise, and a path tracer's own noise sits fifty times below a real change (design recorded in
docs/specs/measurements.md). - PW10 · 5fa2f0fan asset is judged alone and then lands beside five siblings it does not match
An asset is composited onto a sheet with its siblings or into the screen it belongs to, and the measurement runs on that rather than the lone file (design recorded in
docs/specs/context.md). - PW9 · 9c43d74a mean over an image agrees while the look is plainly wrong
Saturation, luma and hue spread come back as distributions over the frame or the subject, so a picture that is wrong at the 99th percentile says so (design recorded in
docs/specs/measurements.md). - PW8 · e6dd42aa render is judged by opening the file it wrote, so every verdict costs a second call
A render returns the picture and its measurements in one answer, each measurement naming the region and the rung it was taken at (design recorded in
docs/specs/measurements.md). - PW7 · ff4573ejudging a material costs a two-minute render when the verdict needs three seconds
A question is answered from the lowest rung that carries it, on one shared rig, and the answer names the rung it came from (design recorded in
docs/specs/rungs.md). - PW6 · cd8780ethe renderer's version is not recorded, so a render that moved cannot be told from a change
Every artefact carries a record of the engine, seed, samples, inputs and params that made it, and the same record is the cache key (design recorded in
docs/specs/provenance.md). - PW5 · c85cffbpaths, palette and rig defaults are written into the tool, so a second project cannot run it
Every path, tolerance, binary and budget is read from polyweave.toml on each call, over a default the plugin ships for all of it (design recorded in
docs/specs/project-config.md). - PW4 · 576cef8a failure arrives as a stack trace, so the fix is guessed from the frame that raised it
Every code is declared with what it means and what produces it, explain answers any of them, and a code the table lacks cannot be raised (design recorded in
docs/specs/tool-surface.md). - PW3 · 638b17ea tool's parameters are learned by reading the source that implements them
One call returns an operation's parameters with type, range, default and a sentence, read from the signature; another says what this machine can do (design recorded in
docs/specs/tool-surface.md). - PW2 · 924bc7fa tool reports success on an empty result, so the failure is found a render later
Every operation asserts its own output before returning, and an empty boolean, a blank render or a short download is an error naming what failed (design recorded in
docs/specs/tool-surface.md). - PW1 · 8d1c9aban operation that takes minutes holds the turn, and nothing reports progress until it ends
Long work returns a handle at once; poll names the stage it reached, result the artefact or the typed failure, cancel the whole process tree (design recorded in
docs/specs/tool-surface.md). - PW495a declared finish reaches the game only through glTF import, so a look a person accepted is rebuilt in a game shader
A build writes a finish as a Godot .tres, a shader for a sheen, with the bake's numbers; Godot reads them back.
- PW480reference.objects counts a background of the enemies' own hue as enemies, so a busy reference cannot be counted
reference.objects keeps only what moved against the scene's scroll, and reference.sample cuts a kind's crop from a frame and reads its colour.
- PW450no picture can be bought from a model trained on the project's own art, so its style reaches a service only as words
style.train trains a Scenario model on a family's canon against the ceiling, and picture.buy draws from it, naming the model and its members.
- PW368a game's states and transitions live only in code, so a state nothing reaches or nothing leaves is found by playing
engine.states reads each enum state machine a game wrote and names a state nothing reaches or nothing leaves, with no run.
- PW57every Cottony look gate restates its own floor, so no asset has a bar a search can aim at
Cottony's vivid floor is two acceptance specs a search can aim at, read by a new saturation_hsv measure, and check_vivid.py only runs them.
- PW36a real project cannot adopt the plugin without carrying its own paths and palette into it
Cottony's whole config is a fixture no key had to be added for, and the one thing that did not survive it, a spec axis the renderer has no knob for, is refused before a render.