Skip to content
Changelog

What every product shipped.

The latest 150 entries, read at build time from each product's roadkeep ledger in its public repository and dated by the commit that wrote them. Newest first.

Atom feed
  1. winwright
    A case cannot drive the common Open or Save dialog, so choosing a file through it has no case

    'choose file' fills the common Open or Save dialog's name box by id and confirms; a read absent proves it closed, and pick sets the type (design recorded in src/Winwright/Acting/Act.cs).

    WW551 · e826dc4
  2. winwright
    A case cannot drop a file from Explorer onto the application, so a drop zone has no case

    'drop file' drops a file onto the app by a real drag carrying CF_HDROP; a target that answers no effect is a named hole (design recorded in src/Winwright/Acting/FileDrop.cs).

    WW550 · e6c2602
  3. winwright
    A case first in its run cannot type: the window it launched never comes forward before any synthesised input

    A launch hands the started process the foreground first, so a case first in its run or soaked alone comes forward (design recorded in src/Winwright/Windowing/ForegroundLock.cs).

    WW549 · da0d785
  4. winwright
    A case cannot claim a window covers its monitor, so a full-screen mode that leaves a border or a pixel uncovered passes

    A step claims fillsMonitor: its element covers the whole monitor it is on, so a full screen leaving a border fails naming both rectangles and each edge left uncovered in pixels.

    WW548 · 7c853f3
  5. winwright
    Typing into a terminal substitutes the last character for an earlier one about once a send in fifty, unrepaired

    Typing into a terminal repairs the last-character substitution before Enter, proven by quickshell's tab case passing 300 of 300 guest runs on 1.1.2, the repair firing on two.

    WW545 · d87820d
  6. Quickshell
    The UI cases still carry a synthesised-input workaround for a foreground winwright 1.1.3 now takes itself

    The UI cases run on winwright 1.1.3, which takes the foreground at launch, so the nudge is gone and the tab case soaked alone passed 20 of 20.

    QS369 · 7d4fcf1
  7. Quickshell
    Winwright 1.1.2's repair of the tab case's typed substitution is unproven, so winwright's WW545 stays blocked

    The tab case passed 300 of 300 guest runs on winwright 1.1.2, the repair firing on two; run-tests-vm -Soak repeats any one case on one build.

    QS368 · 00a82b3
  8. polyweave
    A 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).

    PW565 · 0b75d59
  9. polyweave
    A 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.

    PW564 · fb8b87a
  10. polyweave
    A 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.

    PW563 · fb8b87a
  11. polyweave
    A 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.

    PW562 · fb8b87a
  12. polyweave
    A 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.

    PW561 · 1078fb1
  13. polyweave
    sound.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).

    PW560 · 0f2969d
  14. polyweave
    A 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).

    PW559 · 277c640
  15. polyweave
    A 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.

    PW558 · 64dd88e
  16. polyweave
    the 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).

    PW557 · eea6655
  17. polyweave
    a 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).

    PW556 · af68216
  18. polyweave
    the 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).

    PW555 · 7e65557
  19. polyweave
    a 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).

    PW554 · eedbbaa
  20. polyweave
    game.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).

    PW553 · 7841a56
  21. polyweave
    the 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).

    PW552 · 89b7913
  22. polyweave
    a 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).

    PW551 · 99fecd7
  23. polyweave
    a 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).

    PW550 · ba6bd79
  24. polyweave
    an 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).

    PW549 · df1ac7f
  25. polyweave
    no 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).

    PW548 · 7fd4d4b
  26. polyweave
    a 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).

    PW547 · fa3d6fb
  27. polyweave
    a 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).

    PW546 · 245cb3e
  28. polyweave
    the 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).

    PW545 · 00a45cb
  29. polyweave
    kit.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).

    PW544 · 89261b0
  30. polyweave
    loading 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).

    PW543 · 4b38c83
  31. polyweave
    the 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).

    PW542 · 29a08bc
  32. polyweave
    the 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).

    PW541 · b747585
  33. winwright
    A run's summary says "1 case that ran say what they catch", plural verb and pronoun on a single case

    A run's two catches lines agree with one case in every word, saying "1 case that ran says what it catches", and the tests assert the whole singular sentence.

    WW547 · c40adc6
  34. winwright
    A case's type step drops the resend count, so a repaired substitution traces exactly like a clean send

    A case's type step that WW249 had to resend stays green and its trace line names how many resends it took, so the fault rate can be read off an adopter's own runs.

    WW546 · b871ebe
  35. roadkeep
    no writing verb can be asked what it would write, so an agent probes a replace with a real write

    section amend --check runs every refusal and prints the prose as it would read, writing nothing, on the CLI and the served tool (design recorded in plugin/src/roadkeep/sections.py).

    RK1713 · b09b009
  36. roadkeep
    show refuses a deferred id and only names where it sits, so a paused line's section is read by grep

    show joins a paused line from the deferred store with its reason and the resume door, alone or among other ids; brief still refuses one (design recorded in plugin/src/roadkeep/showing.py).

    RK1712 · 4cbaae4
  37. roadkeep
    section add --role strategy refuses every anchor on a fresh init --strategy scaffold, and its remedy is the refused call

    An id project's prose takes a non-id top-level anchor before the first block, so a scaffolded strategy file opens (design recorded in plugin/src/roadkeep/sections.py).

    RK1711 · 2860ae7
  38. roadkeep
    non-goal list elides entries past twelve, and neither --json nor any flag prints the rest

    non-goal list --all prints every entry, --json always carries every lead and reason, and the elided count names the flag (design recorded in plugin/src/roadkeep/briefing.py).

    RK1710 · 52f6a01
  39. roadkeep
    anchors --next names no free top-level when a family is not one numbering

    anchors names each numbering's free top-level with its family count where they differ, and a trailing colon no longer reads as a namespace (design recorded in plugin/src/roadkeep/history.py).

    RK1709 · c4ffc54
  40. Quickshell
    In a split tab every pane blinks its cursor and nothing marks which pane has the keyboard

    Only the focused pane blinks; the others draw a steady hollow cursor and ask for no blink frames, and in a split tab the focused pane is framed in the accent.

    QS367 · 6533daf
  41. Quickshell
    A default window hides the menu bar until Alt is tapped, so a person who does not know the tap never finds it

    A default window shows the menu bar under the title bar, menuBar now defaulting to Always; Alt and Hidden stay, and Block G's criterion names the menu bar as part of a default window.

    QS366 · 7d14260
  42. Quickshell
    The palette's Document sessions as PDF writes only the connected session instead of every saved one

    Document all sessions as PDF, in the palette, writes every saved session whatever the sidebar selected; the sidebar's own menus still document the session, folder or rows chosen there.

    QS365 · fe69a45
  43. Quickshell
    The UI cases still work around three winwright gaps that 1.1.2 closed

    The cases name the checkout by {root/}, stage the agent feed and request as written now, and bring the menu bar up by an Alt tap, all on winwright 1.1.2.

    QS364 · 26aee1e
  44. Quickshell
    Choosing several sidebar rows is proven by automation peers in a unit test, not by a UI case

    A UI case Ctrl+clicks two sessions and a folder, Shift+clicks a range and reads each row chosen; the set they stand for is still read in process.

    QS349 · d40640f
  45. Quickshell
    That a tab's close cross is drawn inside its tab is proven by an in-process render, not by a UI case

    A UI case retitles a tab short and then long and claims its close cross is drawn inside it and not empty, so QS312's geometry is proven in the guest.

    QS348 · 81b35c3
  46. polyweave
    the 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).

    PW540 · 39c64f9
  47. polyweave
    the 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.

    PW539 · 1f7de80
  48. polyweave
    the 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.

    PW538 · 1f7de80
  49. polyweave
    the 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.

    PW537 · 1337aaf
  50. polyweave
    a 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).

    PW536 · 90ea7ac
  51. polyweave
    the 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).

    PW535 · 2d35cf6
  52. polyweave
    the 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.

    PW534 · a328c3f
  53. polyweave
    a 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.

    PW533 · dd99a18
  54. polyweave
    kit.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.

    PW532 · cbe3ba8
  55. polyweave
    [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.

    PW531 · cf3a5f5
  56. polyweave
    migrate 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).

    PW530 · 07cfe52
  57. polyweave
    A 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.

    PW529 · 7329797
  58. polyweave
    the 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.

    PW525 · 565aae2
  59. polyweave
    a 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).

    PW524 · d238113
  60. polyweave
    the 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.

    PW523 · 39f6092
  61. polyweave
    Spinhold 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).

    PW522 · 96136f7
  62. polyweave
    Cottony 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).

    PW521 · 8d3465f
  63. polyweave
    A project's polyweave.toml and the Python importing polyweave break on the new layout, with nothing to carry them over

    polyweave migrate rewrites a project's imports from a data table and adds [layers] on; Cottony and Spinhold copies map whole (design recorded in docs/specs/adoption.md).

    PW520 · 293b350
  64. polyweave
    An 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).

    PW519 · bd552a6
  65. polyweave
    a 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).

    PW372 · 005f78d
  66. polyweave
    Cottony 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).

    PW371 · 98ea6d5
  67. polyweave
    Starship 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).

    PW370 · 4c6e773
  68. winwright
    A case cannot press Alt alone, so a menu bar shown the Windows way by an Alt tap has no case

    A press of a modifier alone, such as Alt, is a tap sent down and up with nothing between, so a classic menu bar shown by an Alt tap has a case.

    WW544 · 01119e1
  69. polyweave
    Training 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).

    PW528 · 528427b
  70. polyweave
    The 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).

    PW527 · 4271311
  71. polyweave
    Meshy, 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).

    PW526 · b661a26
  72. polyweave
    A 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).

    PW518 · ced4e89
  73. polyweave
    A 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).

    PW517 · 6e0c946
  74. polyweave
    Each 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).

    PW516 · efccc0c
  75. polyweave
    A 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).

    PW515 · c73bce7
  76. polyweave
    Voxels 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).

    PW514 · 6472f5c
  77. polyweave
    A 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).

    PW513 · d7f38ef
  78. polyweave
    Nothing 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).

    PW512 · 6c28a5c
  79. polyweave
    census.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).

    PW511 · 333de7c
  80. polyweave
    The 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).

    PW510 · 3c4dcaa
  81. polyweave
    A 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).

    PW509 · af80075
  82. polyweave
    Every 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).

    PW508 · 7459a9a
  83. polyweave
    Every 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).

    PW507 · c0cc5d2
  84. polyweave
    A 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).

    PW506 · 5d832a7
  85. polyweave
    asset.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).

    PW505 · a500c98
  86. polyweave
    search.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).

    PW504 · 935f16e
  87. polyweave
    accept.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).

    PW503 · e83130c
  88. polyweave
    provenance 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).

    PW502 · 713a0b1
  89. polyweave
    A 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).

    PW501 · bbb5a98
  90. polyweave
    A 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).

    PW500 · 3ac13b0
  91. polyweave
    The 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).

    PW499 · 957aba2
  92. polyweave
    union 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).

    PW498 · 5a2fb91
  93. polyweave
    nothing 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).

    PW497 · 1e3c758
  94. polyweave
    a 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).

    PW496 · 58777fc
  95. polyweave
    a 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).

    PW494 · 08a328b
  96. polyweave
    a 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).

    PW493 · 4c4a113
  97. polyweave
    inflate 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).

    PW492 · 0b81e5d
  98. polyweave
    four 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.

    PW491 · 20e48ad
  99. polyweave
    panel.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).

    PW490 · 56726bb
  100. polyweave
    a 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).

    PW489 · fd19ed9
  101. polyweave
    a 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).

    PW488 · a83c8d1
  102. polyweave
    engine.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).

    PW487 · 66a4cea
  103. polyweave
    a 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).

    PW486 · f48c1a2
  104. winwright
    A staged fixture file keeps its source's modification time, so a rule about how recent a file is fails a day later

    A staged copy is written now, or as old as a file's modified age says, so a rule about how recent a file is holds the day after the fixture.

    WW543 · f19b711
  105. winwright
    A step's with cannot name the project's root, so a case types a checkout's path whole and is red on any other desk

    A step's with fills {root}, {root/} and {files}, and fixtures fill {root} where {files} was, so a case reaches its checkout on any desk.

    WW542 · f19b711
  106. winwright
    A case cannot add an item to a selection or click with Ctrl or Shift held, so a list choosing several has no case

    A click takes holding ctrl or shift, sent in one batch with the click, so a list answering only the gesture adds a row or a range.

    WW540 · f19b711
  107. Quickshell
    The Claude Code plugin names quickshell.exe by its Windows path, which a Claude Code inside WSL2 cannot start

    Install into WSL in Settings finds a distribution's claude and installs a plugin naming quickshell.exe by its /mnt path, measured answering tools/list.

    QS363 · eebcb65
  108. Quickshell
    The tab-strip UI case's typed "first-tab-marker" once reached cmd as "first-tabrmarker"

    Traced to winwright: both typos are WW310's last-character substitution, which its resend cannot repair on a terminal; filed there as WW545, nothing for the client.

    QS361 · 7d14b26
  109. Quickshell
    An agent account set up from the session menu cannot be removed from it

    Remove the agent account from the session menu: the removal shown, run in the person's tab under their sudo, and the session's own identity and key forgotten.

    QS359 · 8e0b91f
  110. Quickshell
    On native Windows nothing below the shell stops an agent's own script from opening SSH around the gateway

    On Windows the wall is WSL2 with its sandbox and the Windows gateway as MCP server, measured; firewall rules by program or user lost (design recorded in docs/design/agent-gateway/README.md).

    QS358 · 7975315
  111. Quickshell
    The echo-delay pipeline test goes red in the guest when ConPTY prints under 300 KB/s for thirty seconds

    The echo-delay test reads until a byte count or its patience, skips naming cmd's rate when too little printed, and still fails a parser that falls behind.

    QS357 · a33b93f
  112. Quickshell
    exec quotes every argument for a POSIX shell, so on a Windows server a word with a space or a quote arrives altered

    On a Windows server exec goes through PowerShell to CreateProcess, quoted as Windows reads it back, so a space, quote, % or & arrives byte for byte.

    QS356 · 57990f5
  113. Quickshell
    Every action is reached only by a hotkey or the palette, so a user who has not learned them cannot find a feature

    An Alt tap shows a menu bar built from the palette's own bindings, every action under a heading with its keys; a default window still holds no menu.

    QS354 · 894c751
  114. Quickshell
    A connected recent card on Home clips its New connection and Go to tab buttons when the window is not maximised

    A connected recent card gives its when a row of its own and wraps Go to tab under New connection, so a restored window cuts neither button.

    QS353 · 4f69916
  115. Quickshell
    Whether a narrowed bash pane's extra prompt line on a split is bash's or this client's reflow was never traced

    Traced on the fixture's bash: it redraws its prompt in place with no line feed; the prompt moves down only by lines the client's reflow wraps, and shows once.

    QS350 · 1255719
  116. Quickshell
    A middle click closing a tab is proven by routed events raised in a unit test, not by a UI case

    UI cases in the guest middle-click a tab closed and right-click Close tabs to the right, now that winwright 1.1.1 names a click's button.

    QS347 · 845c66a
  117. Quickshell
    Wiring the gateway into Claude Code means hand-editing MCP config, hooks and sandbox rules, so few will

    Settings offers a Claude Code plugin quickshell writes itself: the gateway, the hook and a skill installed in one answer, refused by a gateway of another version.

    QS343 · 4b94970
  118. Quickshell
    Asking a local Claude Code about what a pane shows means copying the scrollback by hand into another window

    Open Claude Code runs it in a local pane wired to the gateway and hook; Send to Claude types a pane's selection or screen into it under its session and tags.

    QS342 · bcae1bc
  119. Quickshell
    An agent's key on a server is valid until someone removes it, so a key that leaks works for months

    The agent signs in on a certificate quickshell signs for minutes per connection; its key alone and an expired certificate are refused by the server.

    QS341 · 9cc9fac
  120. Quickshell
    A client-side policy is advice the server never hears, and nothing helps set up an account that limits an agent there

    Set up an agent account from the session menu: the exact script shown, run in the person's tab under their sudo, and the identity recorded on the session.

    QS340 · 2b00401
  121. Quickshell
    An agent able to write files can rewrite the very policy that limits it, and grant itself whatever it wants

    The hook keeps an agent's tools off its policy and approvals; a policy changed outside quickshell holds every call until accepted (design recorded in docs/design/agent-gateway/README.md).

    QS339 · 8c7f3e6
  122. Quickshell
    Text an agent read from a server can steer its next command, and the policy treats that command as if nothing happened

    After an agent reads server text, every change asks, even a granted one, until the person trusts it again in the palette (design recorded in docs/design/agent-gateway/README.md).

    QS338 · 9d004cb
  123. Quickshell
    A call the policy says to ask about has nowhere to be asked, so the gateway can only allow or refuse it

    An ask shows in a quickshell dialog, each call as its words with session, tags and diff; the answer binds to the batch hash, may grant (design recorded in docs/design/agent-gateway/README.md).

    QS337 · 165ba39
  124. Quickshell
    Every call an agent makes through the gateway is allowed, whatever the host and whatever the command

    Each gateway call is judged first: a read runs, a mutation asks or is refused by tag level, and a grant or break-glass admits it (design recorded in docs/design/agent-gateway/README.md).

    QS336 · 9758de9
  125. Quickshell
    What an agent runs on a server is invisible to the person until it reports back, if it reports at all

    Each gateway run shows in quickshell as a read-only tab badged agent, every call and its result in it, behind the tab in use (design recorded in docs/design/agent-gateway/README.md).

    QS335 · 39fe5ab
  126. polyweave
    the 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).

    PW485 · 03707eb
  127. polyweave
    the 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).

    PW484 · ee8a696
  128. polyweave
    measure.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).

    PW483 · 43dc115
  129. polyweave
    voice.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).

    PW482 · eaf1b29
  130. polyweave
    verdict.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).

    PW481 · 9e49f03
  131. polyweave
    a 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).

    PW479 · 14e7430
  132. polyweave
    picture.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).

    PW478 · 65fdf63
  133. polyweave
    a 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).

    PW477 · f5a7efb
  134. polyweave
    picture.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).

    PW476 · 6347c05
  135. polyweave
    port.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).

    PW475 · 99f5a0e
  136. polyweave
    a 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).

    PW474 · 4227a68
  137. polyweave
    a 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).

    PW473 · 361e1e4
  138. polyweave
    a 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).

    PW472 · 188f3aa
  139. polyweave
    engine.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.

    PW471 · 1319367
  140. winwright
    A catches that is the case name with a word added passes WW537 and runs unnamed, so the claim diff reads the name

    A run names the cases whose catches begins or ends with their own name, quoting the claim and refusing nothing, so a pasted title past WW537 is seen.

    WW541 · af968ff
  141. winwright
    A case cannot claim an element is drawn inside another, so a control clipped or laid out empty passes every case

    A step claims within, its element drawn inside a second locator's and not empty, failing with both rectangles, so a control clipped or laid out empty has a case.

    WW539 · dcd5b7b
  142. winwright
    A case cannot click with the middle or right button, so a tab closed by a middle click has no case

    A click names its button, middle or right beside the default left, in its step and its rendered name, so a tab closed by a middle click has a case.

    WW538 · 31abf0f
  143. winwright
    A case whose catches is only its own name again loads, so the claim diff between runs turns back into a diff of names

    A catches that only repeats the case's own name, folded for case, spacing and punctuation, is refused where it is written, so the claim diff stays a diff of claims.

    WW537 · f99f58b
  144. winwright
    A fixture cannot open the window a drop lands in, so a drop onto Explorer needs code outside the case

    A fixture's opens puts an Explorer folder beside the window under test and closes it with the case, so a drop onto Explorer needs no code outside the case.

    WW536 · 953220b
  145. winwright
    A case cannot read a file on disk, so a drop onto Explorer cannot be checked by the case that made it

    A step naming a file takes read and claims sameBytesAs, waited for over the resolve timeout, so a drop onto Explorer is checked byte for byte by the case.

    WW535 · 953220b
  146. Quickshell
    CI is red on every push: the app tests skip three on a clean runner against a budget of two

    The app tests may skip three on a clean desk, PuTTY's and MobaXterm's two real-file readers, so CI is held to what a runner without either has.

    QS355 · f40c0a7
  147. Quickshell
    The recording test stops its recording on the first byte, ConPTY's mode sequences, before the line it reads back

    The recording test waits until the echoed line is on the pane's screen before stopping, so a fast run no longer records only ConPTY's escapes.

    QS352 · 3b65301
  148. Quickshell
    Only the prod tag has a look on the strip, and no import brings tags in from MobaXterm or PuTTY

    A MobaXterm folder named exactly prod, production or prd imports tagged prod, named in the preview first (design recorded in docs/SESSIONS.md).

    QS351 · a7cf15e
  149. Quickshell
    Reading a KDBX 4 vault encrypted with ChaCha20, or derived with AES-KDF, is proven by no vault

    A ChaCha20 vault and a KDBX 4 AES-KDF vault written here open in keepassxc-cli and read back through KdbxReader.

    QS346 · 69f90ab
  150. Quickshell
    An exported vault restores the passwords but not the key files sessions name, so a new machine still lacks the keys

    An export can carry each key file sessions name, once with its .pub, read back unchanged by KeePassXC, and a kept vault keeps them (design recorded in docs/SESSIONS.md).

    QS345 · 3516aaf