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
    The fixture died once with 0xC0000409 right after a file was chosen in the Open dialog, and nothing kept why

    A red guest run brings back each WER report written during it and prints what faulted, read by position so a localized guest still says it (design recorded in tools/blame-gather.ps1).

    WW623 · eefb201
  2. winwright
    The README's -Carry example fence has prose after it on the same line, so GitHub renders what follows as code

    The -Carry example's fence stands alone again, its sentence joined the -Name paragraph, and ReadmeTests refuses any block closed by a fence with text after it.

    WW622 · 605bbaa
  3. roadkeep
    two branches that each added a block of their own are refused as prose both sides moved

    Block headings each side inserted under labels the other does not use join one frame verbatim, and their lines and sections land under them.

    RK1750 · a994c3f
  4. roadkeep
    syncing main into a feature is refused when main shipped a line the feature waits on

    The driver composes the other side's ledger and store from git's GITHEAD, resolves deps against them and re-derives the annotations the merge moved.

    RK1749 · fb75a57
  5. roadkeep
    the renumber the merge driver names derives a destination the other branch already spent

    renumber --past REV derives past the ids that revision spent, read through git, and the driver's refusal names it.

    RK1748 · 49b0e21
  6. roadkeep
    the prose merge refuses two branches that each shipped a decision

    The prose merge decides record lines by id with the roadmap's rule and keeps them out of the frame, so decisions merge like sections.

    RK1747 · d7149c1
  7. roadkeep
    declare leaves a new governed file out of a merge driver the project already wired

    declare extends .gitattributes to the new file wherever a governed file already merges through the driver, and names the line.

    RK1746 · 55c8f7e
  8. roadkeep
    the prose merge refuses or misplaces sections when one branch added a block

    The prose skeleton folds blank runs like the roadmap's, and a section arriving in a block-organised file goes to the end of its own block.

    RK1745 · 0da6b39
  9. roadkeep
    no tested strategy keeps one backlog consistent across parallel long-lived branches

    Twenty-one merge scenarios ran against the driver, seven defects were fixed as their own tasks, and the strategy is in the skill.

    RK1744 · a244e9a
  10. roadkeep
    merge refuses a branch that adds a block while the other only files lines under an existing one

    The merge skeleton folds blank-line runs, so a block added on one side merges with lines filed under an existing one on the other.

    RK1743 · 38de24a
  11. roadkeep
    A vendored engine falls behind the checkout on the same machine, and nothing refreshes it until a session refuses a line

    SessionStart re-vendors a copy older than the engine install --vendor would pick and names both versions (design recorded in plugin/src/roadkeep/installing.py).

    RK1741 · 6b58c47
  12. roadkeep
    install --vendor deletes the whole .roadkeep/ tree, so the capture reports kept under .roadkeep/reports are lost

    install --vendor keeps .roadkeep/reports through the engine swap, every capture byte-identical and counted (design recorded in plugin/src/roadkeep/installing.py).

    RK1740 · e19a269
  13. roadkeep
    A file that fails the grammar wholesale is blamed on its author, even when the running engine predates the format

    A wholesale grammar failure names this engine and the newer wired one, with the restart; an empty [grammar] reads as declared (design recorded in plugin/src/roadkeep/linting.py).

    RK1739 · c640420
  14. roadkeep
    The distributed plugin only declares a Claude installation

    The plugin ships a portable plugin.json and stdio mcp.json for Codex, stamped with one version; Codex reuses its hooks and marketplace, never twice (design recorded in tests/test_plugin.py).

    RK1736 · 138d16e
  15. roadkeep
    Install, check and uninstall cannot manage Codex project wiring

    install --host codex wires .codex/hooks.json, the config.toml server and .agents/skills, names the /hooks review; check and uninstall follow (design recorded in plugin/src/roadkeep/installing.py).

    RK1735 · 6a49bb6
  16. roadkeep
    Bundled workflows assume Claude command syntax and tool names

    codex_skills renders the four commands as roadkeep-<verb> Codex skills with the real launcher and no Claude-only spelling; one main skill (design recorded in plugin/src/roadkeep/installing.py).

    RK1734 · 13da96e
  17. roadkeep
    Engine discovery and installation diagnostics only recognize Claude wiring

    engines judges the enabled Codex copy beside the Claude plugin, names Codex's remedy and launcher, and a write pinned behind either is refused (design recorded in plugin/src/roadkeep/installing.py).

    RK1733 · 5610c52
  18. roadkeep
    MCP startup does not establish the Codex workspace it governs

    The MCP server binds to -C, then ROADKEEP_PROJECT, then cwd, says which on stderr, and refuses calls when started inside its own install (design recorded in plugin/src/roadkeep/serving.py).

    RK1732 · cff4545
  19. roadkeep
    Shell refusals return a decision that Codex does not support

    Under Codex (turn_id or guard --host codex) a governed shell mention is denied, not asked; staging, history and roadkeep stay allowed (design recorded in plugin/src/roadkeep/guarding.py).

    RK1731 · 864411d
  20. roadkeep
    The guard ignores Codex apply_patch calls that edit governed files

    The guard decodes every apply_patch target, both ends of a move included, and denies a governed one; undecodable input gets the mention test (design recorded in plugin/src/roadkeep/guarding.py).

    RK1730 · 800519b
  21. roadkeep
    Both product sites run a prerender script of their own, and neither is registered with the design system

    The gui site prerenders through prerenderSite 2026.3.26, its Markdown link via headTags, output byte-identical; both sites registered (design recorded in gui/site/scripts/prerender.mjs).

    RK1729 · f17b592
  22. Modelado
    Every task runs the whole UI suite, 16 minutes and now past its 20 minute hang limit, for one or two cases

    MODELADO_CASES=tag runs only the tagged UI cases on the guest (1 min, not 16), and the full suite fits a 35m hang limit.

    MOD135 · b09a59d
  23. Modelado
    About lists only the models already downloaded, so a missing or removed model vanishes instead of showing as missing

    About lists every model the operations and sources use, a missing one with what uses it and a Download, and Download everything names its count and size.

    MOD97 · 175488a
  24. Modelado
    About says a cloud key is stored yet shows an empty key box, without saying which key or where it came from

    A key in MESHY_API_KEY or IDEOGRAM_API_KEY wins over a stored one, and About names its source and last four characters (design recorded in src/Modelado.Cloud/CloudKeys.cs).

    MOD96 · 16a7cad
  25. Modelado
    Paid Ideogram images are lost: unchosen candidates are discarded, the chosen one lands in a folder the app hides

    Every Ideogram candidate is written to Pictures\Modelado under the object's name and seed as soon as the job returns, and the drop zone lists the latest with a link to the folder.

    MOD95 · 9dfc7ff
  26. Modelado
    With the Ideogram panel open, its opening button stays on the drop zone and pressing it again seems to do nothing

    While its panel is open the Ideogram button reads Hide the photo generator and closes it, and opening the panel puts the typing in its object field.

    MOD93 · 481389f
  27. Modelado
    The app forces en-US on every thread and has no way to show its interface in another language

    Text follows the language chosen in About, else Windows', where a translation ships; numbers stay en-US (design recorded in src/Modelado.App/InterfaceLanguage.cs).

    MOD86 · bb95796
  28. Modelado
    Interface text is hard-coded in XAML and code-behind, with no English resource file for translations to fill

    Every string the window shows comes from Strings.resx; tests refuse a literal in XAML or code (design recorded in tests/Modelado.Architecture.Tests/StringResourceTests.cs).

    MOD85 · 3362361
  29. FreeHarbor
    The pins trail upstream: Moby and the CLI at 29.7.2, Compose 5.4.0, Buildx 0.36.1, Alpine 3.24.1

    Pins now Moby and CLI 29.9.3, Compose 5.7.1, Buildx 0.39.0, Alpine 3.24.4; a reinstall over a live machine came up on all of them with its 6 containers, 77 volumes and 37 images intact.

    DD349 · b414959
  30. FreeHarbor
    A reinstall keeps the distribution's Alpine packages at the release first imported, so its security patches never land

    Provisioning runs apk upgrade before its adds, so a reinstall moves a kept distribution to its branch's latest patch; simulated here: 3.24.1 to 3.24.4, OpenSSL included.

    DD348 · 5482e6e
  31. FreeHarbor
    Edit details offers 16 Segoe MDL2 glyphs, too few to describe what a container or project is

    Tiles draw Fluent UI System Icons (MIT) bundled in the exe; Edit details searches its 2,935 concepts, labels name any of them, and saved names still draw.

    DD347 · e73e02a
  32. askround
    The site is not built to be read by assistants, and askround never measures whether they name askround itself

    The site ships a checked llms.txt and JSON-LD, and shows askround's own dated round: named by no assistant yet.

    AR43 · d8e135c
  33. askround
    There are no docs pages: install, a first session in Claude Code, the MCP tools and the CLI reference live nowhere

    site/docs builds the docs at /askround/docs/, its MCP and CLI reference generated from the package.

    AR42 · 3205896
  34. askround
    Nothing builds and deploys the site when it changes

    site.yml deploys the site to Pages; alegauss.github.io/askround/, its docs and llms.txt answer 200.

    AR41 · ad343d5
  35. askround
    askround has no public site: nowhere to see what a round reports, install it or read the docs

    site/ prerenders the page at /askround/ with a real recorded round; Lighthouse scores 100.

    AR40 · 6e4b939
  36. askround
    askround is not wired into a project the way roadkeep is: one install that every clone and every surface gets

    The plugin, askround install and a vendored copy for the web wire every clone.

    AR38 · 32beff6
  37. askround
    Nothing measures how many tokens each MCP response costs the agent, so outputs grow unnoticed

    Every MCP tool's response is counted on the recorded rounds against a budget in budgets/mcp-tokens.json, and askround_run returns one brief per question.

    AR37 · 647a056
  38. askround
    An agent asking the same question again the same day pays for the same round twice

    A question asked again the same way within the day returns the stored round with its age and calls no provider; --fresh asks anew, and a round with failures is asked again.

    AR36 · 7d06a8c
  39. askround
    A round takes minutes of searched calls, longer than an MCP call should block the agent

    With background: true a round or set starts as a job and returns at once with its estimate; askround_job reads its progress and result, and each answer is kept as it lands.

    AR35 · bf4c5d6
  40. askround
    An agent could spend the user's API money on rounds without the user ever agreeing to the amount

    The person sets a day and month budget in a config no tool writes; a run past it is refused before any call as an approval request, and spending comes with every paid result.

    AR34 · 296d9fc
  41. askround
    A bad round is discovered after it is paid for: a leading question, personal data or a cost over budget

    Every pre-call check runs first and a refusal lists all problems with a code and its fix; askround explain covers each code, and MCP schemas carry the limits.

    AR33 · f24f009
  42. askround
    Output is meant for a person to read, with no stable schema an agent or a script can rely on

    Every command's JSON names a versioned schema published in schema/ and validated in tests; each fact carries its answer id and passage range; exit codes are documented.

    AR32 · 04c6e61
  43. askround
    A round hands the agent every raw answer, so one check of a product spends tens of thousands of tokens of context

    Agents get a brief: a round in a few hundred tokens with answer ids on every fact; askround_answer returns one answer or just the passage around a quote.

    AR31 · 760b955
  44. askround
    No written laws bind askround's design, so the agent-first rules can erode one feature at a time

    askround's six laws open IMPROVEMENTS.md as §0.1, from context is cost to the person sets the money, and the project skill says a rationale names the law it serves.

    AR30 · 6607611
  45. askround
    Tests would call live APIs, costing money and breaking on every provider change

    The suite runs with no key and fails any network call; adapters are tested on a recorded live round, and ASKROUND_LIVE=1 runs each keyed adapter against its API.

    AR29 · d011e62
  46. askround
    No Claude Code skill tells an agent when to use askround instead of asking the user to test a prompt

    A skill tells an agent when to run askround itself (visibility, discovery, research), how to ask neutrally and within budget; a validated plugin installs it with the MCP server.

    AR27 · 47048f4
  47. askround
    Disagreements between assistants on a fact, such as a model's licence, are not flagged for a check at the source

    Research mode reports where the assistants disagree on a fact first, with both sides, their passages and the primary sources to settle it; one provider's own sources are not read.

    AR26 · 412d3b7
  48. askround
    Researching a question across assistants means reading each answer and merging the sources by hand

    askround research asks every provider with search, merges the answers' verified statements into claims ranked by provider support, with passages and sources primary first; also an MCP tool.

    AR25 · 6f711a3
  49. askround
    An agent in Claude Code cannot ask other assistants mid-analysis; it has to stop and ask the user

    askround mcp serves ask, answer, run, report, diff and doctor over stdio with every refusal and the cost cap; a stdio client asked two providers and read an answer.

    AR24 · dc20d1c
  50. askround
    A round cannot be exported to a dashboard or another project's data

    askround export writes a product's rows from the series per day, provider and question as CSV, JSON or a daily.json shape, and the README shows a weekly schedule on Windows and cron.

    AR23 · c2fb2ed
  51. askround
    The cost of a round is unknown before it runs, and web search is billed apart from tokens

    A run prints its estimate from a dated price table, refuses one above --max-cost before any call, and reports the actual cost per provider from each API's usage.

    AR22 · a4f3f48
  52. askround
    Nothing compares a round with the previous one: a new rival, a rank lost, a product dropped

    askround diff compares two rounds or set runs per question and provider, naming share and rank changes, rivals and cited pages that appeared or left, and claims made or dropped.

    AR21 · dc8fe96
  53. askround
    Rounds are not kept as a series, so a product entering or leaving the answers goes unnoticed

    Every saved round appends a row per answer to series.jsonl, rebuildable from the rounds; askround series gives a product's share per week, day or month per provider.

    AR20 · 78d9113
  54. askround
    A question could carry personal data, an email or a person's name, to every provider at once

    Every question, seed, variant and lookup is scanned for emails, phones, CPFs, IPs, API keys and the person's private names, and stops before any call naming what it found.

    AR19 · 859982c
  55. askround
    Nothing warns when a question names the product it tests, which makes its answer worthless

    A question naming the product, an alias, a place or a listed phrase is refused before any call; a brand question (--brand, brand = true) runs, marked and reported apart.

    AR18 · 6b972a6
  56. askround
    Finding which question leads an assistant to a product took four manual tries

    askround discover writes variants of a seed that never name the product, runs them and ranks them by rank and frequency; a 1-run live test ranked the seed first.

    AR17 · cc82580
  57. askround
    Questions live in chat history; there is no prompt set per product to run again next week

    A product file's [[question]] entries form a prompt set; askround run asks them all as one set with a question-by-provider table, and examples/modelado.toml holds the four 12/11 questions.

    AR16 · a75b9f9
  58. askround
    Claims about the product are not checked against what is true, so a wrong 'needs NVIDIA' goes unnoticed

    A product file holds a product's facts and pages; with --extract the answers' claims are judged against them, and a contradicted or doubted fact is reported with the page that should say it.

    AR15 · b32ac56
  59. askround
    A cited link or picture may belong to another product, like a Store page of a different app shown for Modelado

    --check-links follows each link and image an answer gives beside a product and flags those landing on another product's page or broken; Modelado's real Store, site and repo pass.

    AR14 · a216930
  60. askround
    A product an answer names may not exist, like two Windows apps no search could find

    askround lookup and --check-rivals check a rival on GitHub, then a searched call; both 12/11 'invented' names exist (design superseded: they exist).

    AR13 · a3d2c31
  61. askround
    There is no short report of a round; reading it means opening every raw answer

    askround report turns a stored round (the latest by default) into one Markdown or JSON report: frequency and ranks per provider, claims, cited pages and rivals, without the answers' text.

    AR12 · 133a5cb
  62. askround
    What an answer claims about the product is not captured, such as 'CPU only: Check build' in a table

    With --extract each answer's claims about every product (table cells and prose) are read as attribute and value with a verified quote, and a product's claims are aggregated per provider.

    AR11 · 22e6df6
  63. askround
    The links an answer cites are not collected, so which page brought the product (site, repo, store) is unknown

    Each answer's cited pages are normalised; given its domains, a product's cited pages are counted per provider by kind, and third-party domains and rivals' pages are counted too.

    AR10 · 8eb6517
  64. askround
    The rivals an answer recommends are not listed, so a competitor like Modly is found only by reading

    With --extract a round lists every rival the answers recommend, with answer counts, ranks, providers and a quote; on 12/11 Modly led, but a live round today ranks it lower.

    AR9 · 29d139c
  65. askround
    Whether a product is named, and in which position, is read by eye in each answer

    --extract lists each answer's recommendations in order with quotes, checked against its text, so a product ranks by "Best fit" or prose; live and synthetic answers checked, 12/11 originals not kept.

    AR8 · 4d5805d
  66. askround
    A rate limit, timeout or provider error aborts the round instead of being retried and reported

    Rate limits, server errors and timeouts are retried with backoff and Retry-After; a call that still fails is recorded with its attempts and the round finishes, listing failures.

    AR7 · f9777a8
  67. askround
    A question cannot be asked as someone in a given country and language would ask it

    --locale COUNTRY:LANG asks each provider as that locale through its search settings, records what its API ignored, and repeated locales are compared side by side.

    AR6 · 29d9738
  68. askround
    The model, tools and settings behind an answer are not recorded, so a change cannot be told from drift

    Every answer records the requested and served model id, search tool, temperature, locale, settings, run and time; --model pins a model and frequency groups by served model.

    AR5 · be499da
  69. askround
    One answer is taken as the answer, though the same question gives a different list on the next run

    A round asks each provider three times by default (--runs) and --product reports per provider the share of runs naming it and its position in each, raw answers kept.

    AR4 · 20b6ab1
  70. askround
    Which providers can run depends on keys in the environment, and nothing says which ones are there

    askround doctor lists each provider's key variable (never its value), model, search tool and a free check call, telling rejected keys from missing models.

    AR3 · 9f822bf
  71. askround
    Providers are called without web search, so an answer cannot name a product newer than the model's training

    Every adapter searches with its provider's own tool and keeps queries and cited sources, with --no-search to compare; OpenAI and Gemini were checked live.

    AR2 · c5ce2a8
  72. askround
    No code exists to send one question to several assistants and keep their answers side by side

    askround ask sends one question to every provider with a key (OpenAI, Gemini, Anthropic) in parallel, prints the answers together and saves each raw response with the date.

    AR1 · f47df19
  73. Modelado
    Modelado has no Store listing, screenshots, privacy URL or certification notes, so the package cannot be submitted

    Modelado passed certification and is listed in the Microsoft Store as 9PB86WW5NRR2 (design recorded in build/msix/store-listing.md).

    MOD79 · 7400bce
  74. Modelado
    Nothing checks the packaged build, so a Store submission would be its first real install

    check-msix.ps1 -Cases registers the layout, checks Open with and both aliases, and runs cases-packaged; all pass on the host (design recorded in cases-packaged/packaged.cases.json).

    MOD78 · 817ffff
  75. Modelado
    The Blender add-on and a terminal cannot start Modelado or modelado-cli from a Store install

    Both aliases start the registered package from outside it, CLI on the console, and the add-on resolves them where no install folder exists (MOD78, FIND checks).

    MOD76 · 5556718
  76. Modelado
    Open with in Explorer would not list Modelado for .glb, .obj, .ply or .stl once it comes from the Store

    The registered package is in Open with for all four types, and the window opens a .glb passed as Open with passes it (MOD78; activation itself, WW619).

    MOD75 · 5c94cf1
  77. Modelado
    A Store install would still offer to download and run the Inno installer over itself from About

    On the registered package About says updates come from the Store with no check, chip or installer offer (cases-packaged, MOD78).

    MOD74 · 0da44dc
  78. Modelado
    No MSIX package exists for the identity reserved in Partner Center, so nothing can be uploaded to the Store

    The registered layout starts Modelado from its Start entry under the reserved family name, checked on the host with Developer Mode (design recorded in build/msix/AppxManifest.xml).

    MOD73 · b96cde6
  79. Modelado
    Every first download meets a SmartScreen warning that the README and the release notes have to explain away

    Modelado installs from the Microsoft Store signed by it, so no SmartScreen warning; the README and site lead with the Store, and the add-on finds the CLI via its alias.

    MOD72 · 7400bce
  80. Modelado
    A local 3D Object comes out well below cloud services and newer open models, with the back of the object invented

    Six candidates weighed on licence, ONNX and memory: TripoSR stays, and TripoSG, the one that fits, goes to MOD80 (design recorded in docs/local-3d-models.md).

    MOD71 · 14187b0
  81. Modelado
    The README teaches compiling before it mentions the release, never links the site, and calls the sibling PhotoBoost

    The README opens on its reader, links the latest release's installer and the site, moves the build steps to a contributors section and names Revelei as the sibling.

    MOD69 · db0a326
  82. FreeHarbor
    The tray balloon says there is nothing to click while WSL itself is not answering

    Once the journal names HCS_E_CONNECTION_TIMEOUT after the engine went away, the tray says once that WSL itself stopped answering, and a click opens the Engine page on Restart WSL.

    DD345 · 379d9c5
  83. FreeHarbor
    A hung WSL (HCS_E_CONNECTION_TIMEOUT) leaves the host retrying every 5 minutes with nothing offered that would fix it

    While the journal's latest word is HCS_E_CONNECTION_TIMEOUT, the Engine page offers Restart WSL and do engine takes restart-wsl; both name who else stops.

    DD344 · 5b2f686
  84. FreeHarbor
    A ping answered by wsl.exe's own UTF-16 error reads as the daemon replying, cut to one letter

    A ping that reads something other than HTTP now decodes it, so wsl.exe's UTF-16LE refusal is quoted whole as wsl.exe answering in the daemon's place.

    DD343 · 8b3b05b
  85. FreeHarbor
    The site pins the design system at 2026.3.23 while 2026.3.26 is published

    The site builds on design system 2026.3.26; routes, twins, sitemap, robots and OG card match, the one change being the brand name span VDS228 added so the nav fits a phone.

    DD336 · 8157f2d
  86. Aduzi
    A UI case's client still outlives its case now and then, failing a run whose every assertion passed

    winwright.json gives a stop 15 s, so a killed client tearing down Direct3D on a busy guest exits in time; the vault-export case passed 20 of 20 guest soak runs.

    QS392 · 4f76657
  87. Aduzi
    KeystrokePathTests' queue-full test sometimes throws ChannelClosedException within 3 ms

    A queue closed under the reader's write now ends the pipeline as a stop, not a throw from dispose; not reproduced, and 300 disposes on a full queue pass in the guest.

    QS391 · e742070
  88. Aduzi
    A UI case that sets no ADUZI_DATA reads the guest's real profile, so whatever was left there changes its verdict

    Every case fixture gives the client its own ADUZI_DATA folder, and a test refuses one that does not, so the guest profile no longer decides a verdict.

    QS390 · 9cabcb9
  89. Aduzi
    A sessions.json saved with a UTF-8 byte-order mark leaves the sidebar empty

    A session store or settings file saved with a UTF-8 byte-order mark is read as the same file without it, so a hand edit in Windows PowerShell or old Notepad no longer empties the sidebar.

    QS389 · 28dc895
  90. Aduzi
    A reader who looks the name up finds Portuguese dictionaries and a bean, never why the client is called Aduzi

    The README, the site's footer and llms.txt say Aduzi is Portuguese for "I brought", from the Latin adducere, as an SSH client brings a remote machine.

    QS387 · 9bb0be9
  91. Aduzi
    There is nothing to download: no release or tag, only a CI artefact that expires in five days

    Aduzi 0.1.0 is on GitHub as an unsigned pre-release with SHA256SUMS; the download installs in the guest, and the README and site link to it (design superseded: a pre-release, not latest).

    QS386 · 2259045
  92. Aduzi
    A search for the name finds the Linux Quickshell and winget's Quick Shell, not this client

    Aduzi is the exe, archive, install, data folder, Claude plugin and docs; installing over quickshell removes it and moves its data, sessions included (design superseded: /quickshell/ not redirected).

    QS384 · c9f7cad
  93. Aduzi
    The release archive is built only on this desk, so no signing service can prove it came from the source

    The v0.1.0 tag ran release.yml on GitHub, which built aduzi-0.1.0-win-x64-unsigned.zip and SHA256SUMS.txt as that run's artifact, ready for a signing service to trace.

    QS377 · 2259045
  94. FreeHarbor
    A card's state words are left-aligned in their column, so running, failed and stopped end at different points

    The state word on a card and on the detail page's service list is right-aligned in a fixed column, so running, failed and stopped end on one line.

    DD342 · 9bf1688
  95. FreeHarbor
    A crashed service and one that finished cleanly both read "exited", told apart only by colour

    The window writes failed for a non-zero exit and stopped for a clean one, keeping the daemon's state for filters, the CLI, and paused, restarting or created.

    DD341 · bf9c02f
  96. FreeHarbor
    --capture-window cannot photograph this machine's own containers: without --fixture it always draws an empty page

    --capture-window --live asks the engine first and draws this machine's real containers; the read now resumes on the UI thread, and fixture captures stay byte-identical.

    DD340 · 4515db3
  97. FreeHarbor
    A card warning names two services with the same title as "DSpace and DSpace were shut down"

    A card warning names its services only when their titles tell them apart; repeated titles read as a count, such as "2 services were shut down".

    DD339 · c3f7335
  98. FreeHarbor
    States use four shapes (dot, square, triangle, half circle) that read as different kinds of information

    Every state in the window is one dot in its tone's colour beside the state word; L8 is amended for the window and the tray badge keeps its shapes.

    DD338 · b47e4b7
  99. FreeHarbor
    A card with many failed services lists one red exit-code line each and a colourless row of triangles

    A card now groups its failures by kind in plain words (22 services failed, backend was killed), keeps exit codes in tooltips and the detail page, and caps its service list at six.

    DD337 · 9e772ad
  100. polyweave
    voice.lines plans again takes sound.speak bought with the same words, voice and model, and cannot take them over

    voice.lines lists matching sound.speak takes as adoptable, and adopt=true writes the line into their records so they count current (design recorded in docs/specs/world.md).

    PW691 · 9af51ed
  101. polyweave
    No capture records a web page, so a product video films its browser scenes with a project script around Playwright

    capture.web films a declared visit in Chromium as a WebM for video.cut, recording the URL and step marks, and refuses a broken page (design recorded in docs/specs/video.md).

    PW690 · bd6ffd2
  102. FreeHarbor
    A database's published port resolves to an http:// link, so the edit dialog offers http://localhost:5432

    A port that does not speak HTTP is no longer resolved to a web link; its chip still copies it, and the resolver and chip share one list.

    DD334 · 711798f
  103. FreeHarbor
    The edit dialog is narrower than spec, picks an icon from a dropdown, and lacks the board's rail tiles and Editing strip

    The dialog's header, Editing strip with kind chip, preview panel and footer match the board; swatches went to DD335 (design recorded in docs/specs/DD294-containers-redesign.md).

    DD333 · 0d54c65
  104. FreeHarbor
    A project tile can only draw an image's glyph, so Storefront shows a globe where the boards show a bag

    Five bundled names say what a project is for (shop, search, docs, chat, analytics): Storefront draws a bag, Search lab a magnifier (design recorded in docs/specs/DD294-containers-redesign.md).

    DD332 · bc2e22e
  105. FreeHarbor
    The edit details dialog has no capture, so it has never been compared with edit-project.png or edit-container.png

    --capture-window --edit=project[/service] photographs the edit dialog from the fixture, refusing a name that opens nothing (design recorded in docs/specs/DD294-containers-redesign.md).

    DD330 · 1dddeda
  106. FreeHarbor
    The fixture has one three-service project with no icons, named links or tiers, so most boards cannot be captured

    --fixture captures four iconed projects, named Open links, and a 20-service Platform in four tiers with two failures (design recorded in docs/specs/DD294-containers-redesign.md).

    DD329 · 59d9caf
  107. FreeHarbor
    The detail page clips its header verbs at the right edge and stacks Services and Recent output, unlike detail.png

    Services sits beside Recent output, and the rail marks the open project with counts and coloured shapes under a Filter box (design recorded in docs/specs/DD294-containers-redesign.md).

    DD328 · c8a3a09
  108. FreeHarbor
    Standalone containers in the cards view are one full-width strip each, not cards in the grid

    Standalone containers are cards in the project grid, each with tile, chip, description, a mono details line, Open, its verb and ⋯ (design recorded in docs/specs/DD294-containers-redesign.md).

    DD327 · fa9303e
  109. FreeHarbor
    A project card lacks the board's meta line, ⋯, link row, service ports and states, and the uptime in its footer

    The page head has a Containers title, pill state chips with dimmed counts on a line of theirs, and a segmented view switch (design recorded in docs/specs/DD294-containers-redesign.md).

    DD326 · dbae632
  110. FreeHarbor
    A port reads 8080->8080/tcp and Open has no glyph or name, where the board shows a :8080 chip and Open site

    A port chip reads :8080 in mono on an accent tint with its mapping as tooltip, and Open carries a glyph and the link's name (design recorded in docs/specs/DD294-containers-redesign.md).

    DD325 · b9c59f7
  111. FreeHarbor
    In the list a project is loose rows under a header, not one bordered group, and its description is cut at NAME

    Each project and the standalone block is one card with dividers, and a header's description runs under its title to PORTS (design recorded in docs/specs/DD294-containers-redesign.md).

    DD324 · ef55308
  112. FreeHarbor
    --capture-window --detail= photographs the list, so the detail page cannot be compared with its board

    The page keeps a key asked for before the first refresh, and a capture whose --detail opens nothing exits 2 naming the project, writing no file.

    DD323 · 270bdff
  113. FreeHarbor
    On CI a tool's stderr line once came back after a stdout line it was written two seconds before

    CI run 42626319551 showed 83 pool items queued; each pipe is now read on its own thread, and the lock test releases off the pool.

    DD308 · 56c058c
  114. winwright
    An invoke whose handler exits the application can throw, since the process dies while UI Automation is returning

    An act whose application exits during the call or its read-back lands, saying the application exited, so the exit claim after it is what checks it (design recorded in README.md).

    WW617 · 324b037
  115. winwright
    An in-app render of a window is sized to its frame but drawn to its client area, so its right and bottom edges are blank

    An in-app render of a window draws its client area at its client size, so no blank band runs down the right and bottom where its frame is (design recorded in README.md).

    WW616 · 75c9e3f
  116. winwright
    The file-arrives case writes its file from the pool 300 ms in and waits 3 s, so a loaded guest reds it

    The file-arrives case writes from a thread of its own and gives the step 15 s, so a loaded guest still sees the file and the case reds only when it never comes.

    WW615 · 7a9c104
  117. winwright
    A locator's order written as a number parses, so [order=1] means left and [order=9] an order that does not exist

    A locator's order is read by name only, so [order=1], [order=9] and [order=-1] are refused with the four orders there are.

    WW614 · 5145182
  118. winwright
    An in-app render of a window whose background is the system backdrop draws dark-theme text on white

    An in-app render of a backdrop window composes what shows there: the capture key, the theme's ApplicationBackgroundBrush, or the Mica base (design recorded in src/Winwright.InApp/Renders.cs).

    WW611 · bc10b8d
  119. winwright
    A case cannot put focus on an element before a press, so Enter or Space on a row goes wherever focus already is

    A "focus" act puts the keyboard focus on its element through UI Automation and reads it back, so the press after it lands on that row (design recorded in README.md).

    WW610 · b7d4d69
  120. winwright
    A read after an invoke can run before the handler, and no step waits for a reading to pass through a value

    An act takes "passes": a key whose string must show after it, watched by UIA events and looks armed before it, so a flash is seen (design recorded in src/Winwright/Asserting/Passing.cs).

    WW608 · 3e6c95a
  121. winwright
    A hung guest run brings back only its largest dump, so the application's own dump stays in the guest

    A red guest run brings back every dump: the test host's as hangdump.dmp, each other under its own name and process, and what a size cap left is named (design recorded in tools/blame-gather.ps1).

    WW607 · 9825676
  122. winwright
    A case cannot start the application again after it exits, to read what a clean close left for the next run

    A process step "launched again" starts the app the way its fixture did after a claimed exit, without restaging files, so later steps read what the close kept (design recorded in README.md).

    WW606 · 55b75dc
  123. winwright
    A press of a bare digit loads and then breaks: Enum.TryParse reads it as a traversal key's number

    A press of a bare digit is a chord and reaches the window as that digit; the press reads traversal keys by name only, never by number.

    WW605 · 8173733
  124. winwright
    A drag cannot hold Ctrl, Alt or Ctrl+Alt, so a drop whose edit depends on the key held has no case

    A drag takes "holding" (ctrl, shift, alt, ctrl+alt), down from the press to after the release, with Alt's release masked by a Ctrl tap so no menu opens (design recorded in README.md).

    WW604 · 92f3404
  125. winwright
    A click lands only on an element's clickable point, so a spot on a canvas is reached by a drag

    A click step takes "at": "x,y" in drag's point grammar and presses there; a point past the element is refused naming its size, and nothing is pressed (design recorded in README.md).

    WW603 · 1860f1e
  126. winwright
    A case cannot double-click, though the engine's pointer can, so what opens on a double click has no case

    A click step takes "clicks": 2 and double-clicks in one batch at one point; other counts are refused, and the fixture's strip opens a tab on a double click only (design recorded in README.md).

    WW602 · aa05516
  127. winwright
    A locator miss lists every shut menu and tab in the window with a bare state word that reads as their current state

    A miss names each shut door by its state ('not selected', 'collapsed') and lists only the doors under the step that resolved (design recorded in README.md).

    WW601 · c976aac
  128. winwright
    The note after a red run on a 'shell' desk says the tree is not broken, whatever the run excused

    A red run on a 'shell' or 'stale' desk no longer calls the tree fine: the note quotes vm-run.log's excused count, or says the runner cannot tell (design recorded in tools/desk-note.ps1).

    WW600 · 137f807
  129. roadkeep
    The README has never been held to the five-second first-screen test the visibility repository applies

    The README's first screen leads with the site's token pitch and the measured cost, approved by Alexandre on 2026-11-06; the CI gate moved to its own section.

    RK1717 · 222f51f
  130. winwright
    The readings case needs seven polls inside a 200 ms budget, so a loaded host sees only two of its three readings

    The readings case polls for a second, so even a loaded host reaches the seventh poll and the case reds only when a change of reading is lost.

    WW613 · cbb3eff
  131. winwright
    The settles-late case gives the act 400 ms before the box commits, so a slow guest reads the settled value

    The settles-late box commits 1500 ms after the write, so a loaded guest's act still reads what it wrote and the case reds only when the read-back is wrong.

    WW612 · 0559a8f
  132. winwright
    The code is named Paneproof while every published package, plugin, site page and adopter still says winwright

    The code is Winwright again: WW590, WW591 and WW597 are reverted with no paneproof alias, since no Paneproof release ever shipped, and renaming is now a non-goal.

    WW609 · 92f4b12
  133. winwright
    A red guest run prints the guest's log whole but never names the file it kept on the host

    A guest run's last lines, after the verdict, name the host path of the guest's log and of each file it brought back this run, so any tail of the console still points at the evidence.

    WW599 · 97e267b
  134. Claude Code Tray
    T447 made every counted string that can reach one a .one/.many pair, and the self-test now sweeps en.json for a count before a plural noun, each remaining match allowed with its reason.
    T447 · bebea05
  135. Claude Code Tray
    A repository check that throws is reported as one failure naming the claim and the exception, and the rest of the suite runs on to its summary.
    T446 · 4d38049
  136. Claude Code Tray
    A status-line command that names a ClaudeTray no longer installed reads as stale: Settings says so and offers the entry to paste again, instead of calling it set up.
    T445 · 99cece2
  137. Claude Code Tray
    settings.json is saved through a temp file and a move, a file that does not parse is kept aside before defaults are used, and one that cannot be opened is never overwritten with them.
    T444 · b0a67dd
  138. Claude Code Tray
    A .claude.json caught mid-rewrite is read again a moment later, and a read still torn keeps the identity last read for that dir, so the profile's store key and alarms stay put.
    T443 · ad878f6
  139. Claude Code Tray
    A project whose context has not changed in the drift window reads as unchanged against the value it has held since, and pruning keeps each project's newest history line however old.
    T442 · 4f27b49
  140. Claude Code Tray
    The never-invoked advice counts a plugin:skill call for its skill, dates each call by its own line, and treats a transcript that could not be read as an incomplete pass rather than a zero.
    T441 · 5a6d3eb
  141. Claude Code Tray
    Session dates follow the display language's field order through Dates.MonthDayTime, and every yyyy-MM-dd stamp is Gregorian on any system calendar through Dates.Iso, the fixtures included.
    T440 · 5bb6094
  142. Claude Code Tray
    The Statistics outage banner paints its wash, border and glyph with the theme's critical-severity brushes, so it reads in a light theme as in a dark one.
    T439 · 5074465
  143. Claude Code Tray
    The Sessions rows, the live chart's project strip and the Context overview's rows open from the keyboard: the rows take focus and answer Enter or Space, and the overview rows are named buttons.
    T438 · 029d54a
  144. Claude Code Tray
    Settings renews its opened snapshot from the page's own values after each Save, so a second Save in one visit leaves a toggle the tray menu moved since the first.
    T437 · c25a1d0
  145. Claude Code Tray
    The Sessions pane keeps its list through a poll that found nothing new, and a rebuild keeps every call tree the user opened, re-walking only a conversation that moved.
    T436 · 98c3f8f
  146. Claude Code Tray
    A Context rescan keeps the panes on screen, the All projects selection and the list's scroll, and a rescan asked for mid-scan runs once more instead of being dropped.
    T435 · 47aa0b4
  147. Claude Code Tray
    Encode-Clip stops with ffmpeg's exit code instead of reporting a failed encode as written, and closing --main or --settings-tray ends the process, which the self-test holds for every WinForms-pumped preview.
    T434 · 2e9d91f
  148. Claude Code Tray
    The build's fallback publishes build/release-notes.md and refuses notes for another version, and the installer's tasks, shortcuts and finish page read from per-language messages, so an English install reads English.
    T433 · e4a78d7
  149. Claude Code Tray
    The thirteen counted strings T432 named read in the singular at one in all five languages through L.N, the two hand-rolled 1/N pairs included, and the self-test refuses a .one copied from its .many or a code-side == 1 choice.
    T432 · d26a9ef
  150. Claude Code Tray
    The About page names the Apache License 2.0 in all five languages, and the self-test holds every disclaimer to the licence LICENSE declares.
    T431 · 9ab0ce6