Skip to content
Shipped and released

Now

Page 9 of 14. Every release ever published is still here — across these pages, in theAtom feed, and at its own permanent link. Nothing is dropped as it ages.

Released highlights, page 9

  1. core 2.26.3

    • workspace-status can now prune an explicitly approved selection of delivery artifacts. A successful exit guarantees that every selected artifact directory and every workspace membership resolving to it are absent, proven in one coherent observation taken while the shared workspace lock is held. If either half survives, the command fails and names which one, rather than reporting success.
    • An interrupted prune is now recoverable from the command's own output: a failure names the selection and how far it got, and a busy lock names the lock file and the process holding it.
    • Creating a durable work artifact now coordinates with that same lock, so an intake and a prune can no longer interleave and leave the register disagreeing with what is on disk.
    Release notes for core 2.26.3
  2. core 2.26.2

    • `workspace-status` shows you which initiative is which again. Orientation used to list bare slugs, because the projection replaced each initiative's name and milestone with a stand-in meaning "this value was not safe to hand to an agent." That guard was added when display text from workspace.toml was treated as untrusted input. It is not: workspace.toml lives inside the repository it describes, so anyone who can reach it already has the source, and the guard was costing readability for a risk that was not there. A session now opens with ini-002 — Platform Core (milestone: P5 · Adopt (M1–M5 shipped)).
    Release notes for core 2.26.2
  3. core 2.26.1

    • `workspace-status` no longer tells you an initiative is called "workspace.toml". An initiative's name and milestone are free text you type into workspace.toml, and the status tool deliberately never passes them through — they always come back as the literal workspace.toml, the same stand-in every other field uses to mean "this value was not safe to hand to an agent." The skill's own instructions had not caught up and still told the agent to print them, so a status run announced ini-002 — workspace.toml (milestone: workspace.toml). Active initiatives now show their slug alone.
    Release notes for core 2.26.1
  4. agentbundle 0.44.2

    • A catalogue you derive now keeps a working check on its vendored `credbroker` code. catalogue init --preset self-hosted copied the vendored copy of that code but left its source behind, and the check that compares the two passed by finding nothing to compare. The copy was frozen: an edit to it went unreported, and catalogue self-host never produced the staged floor it is meant to write. Selecting the credential-brokers pack now brings the source across too, so the comparison is real again.
    • `--attribution white-label` no longer leaves the upstream catalogue's name in a file you commit. That mode promises no upstream trace, and the scan enforcing it allows the upstream name zero occurrences anywhere — but the scan runs before .agentbundle/self-host-state.json is written, so the name landed there unchecked. The file now records your own catalogue's name. --attribution attributed is unchanged and still records the upstream name.
    Release notes for agentbundle 0.44.2
    • A surface can now declare the minimum viewport width it supports, and the rendered-page inspection stops asking for captures below it. A desktop-only tool that supports 1280 and up is asked for four captures per route in one channel instead of eight across two.
    • Declaring a minimum never hides a width the surface does claim. It only ever raises a band's lower bound, so a minimum that falls between the default bands leaves the wider one where it is rather than pulling a capture down into a gap that satisfies no channel.
    • A breakpoint above the minimum keeps its own band, so a high minimum cannot flatten a surface that really is responsive above it. Each run records the minimum it used and any breakpoint the minimum discarded, so a mistyped minimum is distinguishable from a deliberate single-channel surface.
    Release notes for frontend-engineering 0.2.5
  5. core 2.25.27

    • When a review finding says a claim promises more than its test checks, you now have two answers instead of one. Previously the only available answer was to shrink the claim, so the easy move was to weaken what you promised until the existing test covered it — quietly dropping the property from what anyone checks. Now: if any test can be made to cover the full promise, improve the test; shrink the claim only when none can.
    • After fixing a review finding, search twice. Guidance used to say this search was "a walk, not a text search", which read as permission to skip searching for exact strings. You now do both: search for the repeated words and names, and read for the places that say the same thing in different words. After a fix, also re-run the search for tests that pin file contents, across every file you touched — that is when an edit breaks a test in a file you never opened.
    • You can now move an obligation out of an intent or brief and still have something catch its deletion. Moving it requires something that fails if it is removed, and three of the four places you were told to move it to had nothing watching them. Editing Opportunity on an intent, or Rabbit holes or Design artifacts on a delivery brief, now counts as a material change, which cancels that artifact's approved review and sends it back for a fresh one.
    • How to prove a test actually catches a bug is now written down. To prove it, put back the original broken code — not an empty placeholder — and confirm the test fails. Undo it by editing, not with git checkout, reset, or stash. A test that still passes while the bug is back has proved nothing. This rule previously existed only if your own process happened to supply it.
    Release notes for core 2.25.27
  6. core 2.25.26

    • A frontend review now gets the pictures, not just the diff. When a surface has been inspected, the work-loop hands frontend-reviewer the capture set and what was observed in it, alongside the diff. A reviewer that only ever saw a diff could not see one element covering another, which is the class of defect it was most often asked about.
    Release notes for core 2.25.26
    • The rendered-page inspection now looks at both sides of your breakpoints. It used to permute viewport height and scroll position and nothing else, so a complete capture set could sit entirely on one side of every breakpoint a surface has — exercising each layout rule only where it already applies. A channel is a band of viewport widths, and a set is complete only when it covers every one your surface has.
    • Tell it your breakpoints and it captures either side of each. Declare them and the bands they bound become the required channels, captured at the widths that straddle each boundary — declare 1152 and you get 1151 and 1152. Declare none and two bands apply, narrow at ≤480 and wide at ≥1024, and the run records that it fell back. Those two leave 481–1023 uncaptured, which is where a great many real breakpoints sit; declaring yours is what closes it.
    • The floor rises from four captures per route to eight. Four heights-and- scroll-positions in each required channel, and four times *n + 1* where you declare *n* breakpoints. An existing capture set becomes incomplete at this version, which is the intended signal.
    • A capture's width now means something to the reviewer. frontend-reviewer is told to use it: it decides which breakpoint-scoped rules a capture exercised at all, so a failure absent from one channel is no evidence it is absent from another.
    Release notes for frontend-engineering 0.2.4
  7. core 2.25.25

    • You can now ask workspace-status which explicitly selected specs still have workspace membership and which do not, without changing workspace.toml or treating absence as permission to delete anything.
    Release notes for core 2.25.25
  8. core 2.25.24

    • A sustained shaping finding no longer reads as an instruction to edit. Intent, delivery-brief and spec authoring point at the work-loop's ordered response ladder — cut, route, fix, hold, walked until one applies — so an author can answer a finding by dropping a claim nothing is obliged by rather than writing more careful prose. The lifecycle gates are unchanged: whatever blocked before still blocks.
    • Each upstream artifact states where a demoted claim belongs. An intent sends a settled ground to Opportunity and a matter decided without the authority to decide it to Unresolved questions. A brief sends a design trap to Rabbit holes and informing provenance to Design artifacts, and never to Ready gaps, which it drops on leaving Draft.
    • A shaping reviewer no longer reopens a decision the artifact records as settled. A pre-existing defect stays reviewable however late it is found, so an author can refuse a reopened decision without dismissing a real defect from the same round.
    Release notes for core 2.25.24
  9. core 2.25.20

    • A legacy-only repository can activate its knowledge base even when the migration has nothing to import. Activating was the first command such a repository runs, and it crashed on the state those repositories are actually in: an empty patterns.jsonl. The migration now produces the canonical empty topic map instead of a traceback.
    Release notes for core 2.25.20
    • The pack now looks at the page, and writes down what it saw. Step 4 of the journey captures each route you name at two viewport heights, at rest and scrolled, and reports what a reader would actually meet — something covering something else, text running out of its container, a control too small to hit. The evidence manifest gains an inspection observations field that a list of screenshot filenames does not satisfy.
    • A skipped inspection can no longer pass as a completed one. Seven distinct result states replace a single unverified line, and the same state reaches the manifest, the step's output, and the acceptance gate — so a missing browser arrives as a decision rather than a green tick.
    • Measure the noise yourself. Four defect fixtures and four known-clean ones ship with a procedure for measuring the false-positive rate in your own environment. The pack publishes no rate of its own, because the rate moves with the judge and the viewport sizes and does not transfer.
    • A visible defect now costs something. A run that took every capture and found a banner covering the heading reports that it *ran* and that it did not *pass* — two answers, because "the browser would not start" and "the page is broken" need different fixes. The surface does not complete over an unresolved blocking finding.
    • The independent reviewer can finally see the page. frontend-reviewer is handed the captures, reads them, and can take its own when the ones it was given do not cover what the diff makes it suspicious of. Until now it read the diff, and no diff shows one element covering another.
    Release notes for frontend-engineering 0.2.3
  10. core 2.25.19

    • The conventions you install now say which projected paths a gate actually watches. Two entries were wrong: the repo hooks target is adapter-driven but no drift gate reaches it, and several seed-projected paths were described as hand-owned when the pipeline still regenerates them. Membership is decided by the exclusion list, not by the list in the prose.
    Release notes for core 2.25.19
  11. core 2.25.18

    • Shaping an intent no longer draws spec-grade craft findings on a four-paragraph artifact. The intent review answers one question — is this well-formed enough to shape further — in a vocabulary that cannot express a rewrite of your bet.
    • A second, optional read attacks the bet itself and may only hand back an open question with a named decider or a kill condition with its real-world trigger. It cannot ask you to reword anything, and an empty answer is a real answer.
    Release notes for core 2.25.18
    • After framing an intent, you can have the bet attacked rather than the wording reviewed — and whatever comes back is advisory, so it never moves the intent's status on its own.
    Release notes for product-engineering 0.13.12
  12. core 2.25.16

    • `new-spec` now tells you where a fact belongs, and hands you the facts to decide with. Plans kept accumulating design reasoning inside task lists — why an assertion had to take a particular shape — where it went stale against everything else and generated review findings of its own. The rule is now explicit: a fact belongs in the design unless a task must implement or verify it, because tasks are jobs to be done rather than containers for facts. And when a spec reaches you for approval, the skill reports the finding trend and every remaining concern with its consequence, rather than a verdict you cannot check.
    Release notes for core 2.25.16
  13. agentbundle 0.44.0

    • Installing a pack now sets up where its output goes, instead of quietly doing nothing.
    • Your agentbundle-layout.toml keeps its comments, formatting and permissions when a pack is installed.
    Release notes for agentbundle 0.44.0
  14. core 2.25.14

    • You can now measure how long each work-loop phase took, straight from the run log. Every transition line in .loop-run/events.jsonl carries when its phase began and how many seconds it lasted, so time-in-phase needs no guesswork about what happened between two entries. The first line's start is the run's own start, so the opening phase is a real measurement rather than a lower bound.
    • The retry budget is on the line, and so is the override flag. Every line carries the implementation and review retry counters beside their caps, so you can watch a run approach a limit without opening the cohort state file. A transition that carried --allow-retry-cap-override records that it did — the flag as passed, which is not the same as a cap having been exercised.
    • A repair cycle no longer looks like a give-up. Each line now says what the gate decided and, separately, whether the retry budget behind it still had room, so a routine repair round reads differently from a run continuing past a spent budget. Read the reachability note below before relying on the second case: on the ordinary path it does not arise.
    Release notes for core 2.25.14
  15. core 2.25.13

    • A machine that cannot run `git` now gets one line of explanation instead of a stack trace. Every loop-engine and loop-cohort command needs git to confirm the spec directory sits inside your repository. When git could not be run at all — not installed, or a PATH entry shadowing it with something unexecutable — the command ended in a 33-line Python trace that also printed internal file paths, more output than a whole successful run of the loop. Both tools now answer that situation the same way, in one line.
    Release notes for core 2.25.13
  16. core 2.25.12

    • Review feedback is guidance about the criterion, not an edit request for the sentence. new-spec's authoring rubric now says how to repair from a finding: name the property the clause establishes, ask whether that property is right, and look for its siblings before rewriting. It also gives you a way to notice when you have been patching text instead — and explains why a check that reads a whole document can silently pass on a second copy of the sentence it was looking for.
    Release notes for core 2.25.12
Back to the top