Shipped and released
Now
Page 7 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 7
- A commit made for you by a workspace session now stages only that item's own files. If the directory you configure for a pack's output contains
*,?,[,{or}, it cannot describe a commit scope — a*in particular made the commit reach every uncommitted file under the directory above it. Such a value is now refused with an error naming the section to correct, and the rest of the session's git tools keep working. Rename the directory to one without those characters to commit again.
- A commit made for you by a workspace session now stages only that item's own files. If the directory you configure for a pack's output contains
- Verify mode's gate list now names the rendered-page inspection. The inspection gate has shipped for some time, and both the visual QA checklist and the evidence manifest already required it. The verify procedure now enumerates all five gates and counts five.
- A small defect noticed mid-loop now gets routed while both of its routes are still open. Deciding where it goes happens at the DECIDE pass, which the loop reaches at a definite point, so a fix that could have shipped in this change no longer reaches the close with nowhere left to go.
- You can now read one row of the close-time table and know where your defect goes. A ready-now fix that can ride along and one that needs its own review unit sit on separate rows, so telling them apart no longer means reading past the table into the paragraph below it.
- A work-loop close can now record a specific, real piece of leftover work that is genuinely blocked, instead of losing it. When a defect, an open question, or a decision is blocked on someone else's call, an instrument you don't have, elapsed time, or a dependency, the close captures it as a
work-item— with what "done" looks like and why it couldn't be finished now — rather than dropping it or writing a vague note that a later reader can't act on. - A work item is checked before it's written, not after. Each one runs through a cold review with no memory of the session that noticed it; an item that isn't real, isn't necessary, or is missing what its shape requires is refused with a specific reason instead of being written silently.
- A blocked defect may carry its own reproduction command, bounded to a small, read-only set of tools (
cat,wc,grep,ls) with no options and no path traversal, so a captured item can point at exactly how to confirm it without granting the record any power to write or execute.
- A work-loop close can now record a specific, real piece of leftover work that is genuinely blocked, instead of losing it. When a defect, an open question, or a decision is blocked on someone else's call, an instrument you don't have, elapsed time, or a dependency, the close captures it as a
- What the status surface reports about your output paths now follows the same rules as everything else it reports. If the directory you configure for a pack's output uses anything beyond letters, digits and
. _ - /, or points at the repository root itself, the status surface reports no output pattern and tells you which section to correct, rather than passing the value through. Renaming the directory to a plain, repository-relative path restores the reported path.
- What the status surface reports about your output paths now follows the same rules as everything else it reports. If the directory you configure for a pack's output uses anything beyond letters, digits and
- Closeout asks five questions instead of seventeen.
work-loop's finish checklist now reads as five assertions — acceptance criteria satisfied, verification passed, review passed with residuals surfaced, artifacts consistent, repository state valid — with the existing obligations grouped underneath each one. Nothing that blocked a release before stops blocking it; the list is easier to hold in mind and easier to answer honestly. - Knowledge capture leaves the critical path. Routing a session's scratch notes is no longer a condition of declaring done.
## Capturekeeps its routing rules and now runs after the loop closes — at session end, an explicit handoff, or before compaction. A capture obligation enforced at the completion boundary turns "is this lesson worth keeping?" into a blocking judgment, and the cheapest way past a blocking judgment is a low-value note. Recorded against RFC-0077 § Errata.
- Closeout asks five questions instead of seventeen.
- The status surface and the commit scope agree on where work goes.
workspace_statusreported an item type's built-in default output path even whenagentbundle-layout.tomlconfigured a differentoutput_dir, while the git tools already scoped commits to the configured one. Anyone reading the status surface saw one location and got another. Nothing was written to the wrong place — the label was wrong, not the write.
- The status surface and the commit scope agree on where work goes.
- A path that hands your work to another skill is fixed, not configurable, and the reference now says which paths those are.
workspace-status' layout page documented ashapingkey nothing reads and left outoutput_dir, the one every consumer does read. It now describes the real key, explains that the shaping folder is composed under it rather than configured beside it, and states plainly that your briefs and intents folders are hand-offs — redirect them and the artifact stops being found. - A new intent now gets a readable name, not just a slug. An intent admitted through
work-intakeat a recognized altitude lands asCAP-0004-external-tracker-projection.mdrather thanexternal-tracker-projection.md, so you can say which one you mean out loud. The number is per altitude, so a capability and a feature can both be0001. - Admission never stops because a number was unavailable. If the altitude has no prefix, or the allocator cannot be sure of its answer, the intent is still written and registered under its plain name and records why — so nothing you were doing is lost, and the number can be added later. The slug is the identity; the number is a label for humans.
- Nothing is renamed. An intent already on disk keeps its filename whatever its altitude, so existing links and registry entries keep resolving.
- The layout reference answers your question instead of citing ours. Where it used to say that two of our internal proposals disagree about whether a skill offers the default path before asking you, it now tells you what to do: do not rely on either order, and set
output_direxplicitly if the distinction matters.
- A path that hands your work to another skill is fixed, not configurable, and the reference now says which paths those are.
- `frame-intent`'s layout page now tells you which intents it places and which it does not. An intent you author for yourself, including in a personal vault, goes where you configured. A repository intent goes to the folder core's admission reads, and that path is fixed — the same treatment briefs already had, now written down for intents too. Authoring privately and admitting to the repository are two steps of one flow, not two rival destinations.
- The page also names its real readers. It claimed two skills read
[product]; eight do, and one reads a different pack's section entirely.
- A review pass runs when something names a reason for it.
work-loopselects reviewers from one table instead of several scattered triggers:adversarial-revieweralways, and security, user-facing, architecture and quality lenses only as the change reaches them.quality-engineerjoins that rule rather than running on every full-mode loop — it is warranted when the change warrants at least oneoperational-safetymodule, is structural, or is explicitly requested. The three conditions reuse routers the catalogue already ships; none is a new predicate.adversarial-reviewerkeeps correctness and scope; testability, reliability, observability, maintenance cost and test-strength judgment belong toquality-engineeralone, so work tripping none of the three conditions ships without that lens — a deliberate trade of the lens for speed. Recorded against RFC-0025 § Errata.
- A review pass runs when something names a reason for it.
- Ordinary work stays on the short path, and the loop stops when the work is done. A
work-looprisk trigger that names something you can modify — a security or governance boundary, a structure or public interface, a persistent representation — now fires when a change modifies that thing. Reading it, calling it, testing it, documenting it, or regenerating a projection of it no longer routes the work to full mode. The triggers that name an act still fire on the act, even when everything they touch is unchanged. - The loop stops searching once the work is done. Resolve the findings the current intent requires, and do not expand the frontier unless a finding blocks correctness, security, or a stated acceptance criterion. Meeting the stop condition ends the iteration: do not continue searching for additional improvements.
- Not knowing a file no longer sends ordinary work down the heavy path. The Unfamiliar trigger asks whether you can predict the design, not whether you know the territory. Write down the design you intend and what grounds it; the trigger fires when you cannot, or would be guessing.
- Ordinary work stays on the short path, and the loop stops when the work is done. A
- A work-loop no longer drops a small fix just because it sits outside the task at hand. When it notices a mechanically verifiable fix along the way — one it can prove correct with a command, a search, or a check against a named authority — it now lands that fix instead of discarding it or writing it down for later.
- Whether a fix rides along turns on its risk, its behavior, and how it was checked — not on how close it sits to the change already in flight.
- A design call that is already settled — because a rule says so, or because the owner answered in one line — no longer disqualifies a ride-along. Anything that would still change a convention, a contract, or a published interface keeps requiring its own separately reviewed change.
- Nothing noticed during a loop is dropped silently. At the end of a loop, every item gets routed somewhere; anything genuinely stuck is written down together with the one fact needed to unstick it later.
- Arriving with an unshaped idea, you can pick your shaping route from
frame-intentalone, instead of inferring it from three skills' descriptions. discovery-leadnames the skill it runs at every gate, so a discovery can be driven from the agent definition without reading the loop's gate table.- A discovery hands off through
work-intakewhether or not Core advertises the handoff object, so the route into delivery no longer depends on the envelope. - Writing an
assumption-testordelivery-contractslot, you can read its field set and its starting data classification off the sidecar schema. diverge-solutionsno longer asks for a minimum option count, so options are generated to expose the decision rather than to reach a threshold.ux-writingoutput follows the same rendering directives as its sibling product-engineering skills, instead of falling back to unguided formatting.frame-situationno longer tells you two shipped skills are unshipped.
- Arriving with an unshaped idea, you can pick your shaping route from
- The experience-design pack's own description of the copy handoff points at a skill that exists, so a reader following it reaches
ux-writing.
- The experience-design pack's own description of the copy handoff points at a skill that exists, so a reader following it reaches
- `architect-design` now reaches for a system-shape concern when your design turns on one. When an open decision in your design depends on how a system shape coordinates — an event-driven system, a layered application, a distributed service — the skill now loads that shape's concept in full, so the concern reaches the document without you having to name the shape yourself. A design with a live decision in each of several shapes loads every one of them. Where no decision turns on a shape, none is loaded and the working receipt says so, so you can tell the axis considered your design and found nothing to add.
- The paragraph-length check now sees a bold lead-in. Counting sentences needed a space straight after the full stop, so any closing mark standing between the two hid the break: an emphasised or code-spanned sentence, a parenthesised aside, or a closing quotation mark each read as no sentence end at all, and a paragraph that emphasised every sentence read as one. A long paragraph written with bold lead-ins could therefore pass the check it should have failed. Measured over the thirty-seven design documents in this repository's own architecture folder, the check reported eighty-one over-long paragraphs where the true number is one hundred and twenty-seven — it missed forty-six that crossed the budget unseen, and the mark that hid them was a bold span in one hundred and twenty-one of the one hundred and twenty-six mis-counted paragraphs. Those paragraphs are counted now, and the check reports the same file and line it always did.
- A closing mark in any script closes a sentence. The marks recognised are every Unicode close-punctuation and final-quote character, so a document written with corner brackets, guillemets or angle brackets is counted the same way as one written with parentheses — and so is a strikethrough span. The set is those Unicode categories rather than every character that looks like a closer: an ASCII
>stays out, because in Markdown it closes an autolink around a URL, and admitting it would misread more documents than it would fix. One shape stays undecidable and is unchanged: a single-letter sentence end inside a code span reads as an enumeration label, because an enumeration label written the same way has to keep reading as one. - The decomposition rubric names the third place a candidate can land. It offered a document of the part's own or a row in the element catalogue. A part can satisfy the qualifying rule and still belong above the document holding it, so the rubric now says to route it upward and how to record that. The case this catches is a document that carries the changes it is asking of a ratified parent: ratifying it would accept those changes by implication, because its own reviewer has no standing to accept them. The qualifying rule now says plainly that it does not settle which document holds the result, and that none of the six criteria will tell you: they ask whether a candidate differs from its parent, not at what altitude the people who must accept its decisions hold that authority. So standing is a question to ask separately every time the rule is met.
- A design review no longer reports a correctly routed part as a missing document. The reviewer's decomposition checklist asked whether a qualifying child had a document of its own. A child whose decision only someone above this document can accept — a ratified parent's reviewer, say — has a link instead, by design, and would have been reported as a defect. The checklist now looks for either, and says which correction the part needed turns on standing. It also gains an item of its own for the case that started this: a document carrying the changes it is asking of a document above it that someone else accepts.
- A design document now gets a runnable check for two of its ten quality gates. A gate script flags any prose paragraph over three sentences and any document over a 3,300-word size bound, both reported with the exact file and line, so those two checks no longer depend on a reviewer catching them by eye.
- Reviewing a design document now asks for a verdict on all ten named quality checks, every time. The checks cover present tense, named cross-references, model-before-prose ordering, single-sourced concerns, removed decision history, diagram clarity, buildability from the models, linked evidence, and document size — so a check nobody looked at and a check that passed no longer read the same in the result.
- Seven of those checks now give an author narrowing hints before a design document is ever sent out for review, including future-tense wording, an unnamed cross-reference, and a model-after-prose section — a reviewer still decides, but an author sees them first.
- A pull-request template ships with the pack.
work-loopnow carriesassets/pull-request-template.md, with a copy step for GitHub and for GitLab in the adapt-to-project guide. It is not installed for you: a repository that already has a pull-request convention keeps it. The template states three things that do not belong in a body — what you tried, the method behind a result, and the diff restated — in comments that do not render, so an author reads them while writing and a reviewer never sees them. - The template ships with no checklist. Its verification section asks for commands and their observed results, which a checkbox cannot supply.
- A `Review focus` section is available and optional. It names the one decision the author wants checked, as a question about the code.
- Worked pull-request bodies and writing rules. A new
references/pr-authoring.mdcarries seven rules and two worked bodies of different size, so the shape is shown scaling down rather than only described. - The end of a run asks before it offers.
work-loopdecides whether it can open a pull request from the exit status ofgh api userand the value ofviewerPermission, and when either refuses it completes the checklist and says nothing. A blocked credential store makesgh auth statusreport an invalid token andgh repo viewreport a connection failure, so neither message states the cause — an exit status makes no such claim.
- A pull-request template ships with the pack.
- A shipped spec is the record of what was agreed, not a rule the code must keep obeying. An agent that meets an older spec disagreeing with today's change now reads that as the system moving on, and says so instead of raising it as a defect. The spec directory your repository is seeded with says the same thing in plain words, so a person opening it meets the limit of a spec's authority beside its conventions.
- A design decision in a plan now names the task that builds it. Every
## Design (LLD)sub-section carries anOwned by:field alongside its existingTraces to:, and the pre-review walk checks that every interface, type, symbol or ownership decision has an owning task. The traversal runs one way only — design down to tasks — because over a third of tasks have no design origin and a reverse rule would fire on every one of them. - A plan that uses the field gets its ownership checked. Once any sub-section carries
Owned by:, the contract-alignment lint reports a body-bearing sub-section that names no task, and a named task that no heading defines. A plan written before the field is reported as predating it, never failed, so existing plans need no migration. - The plan template no longer promises an edit the engine refuses. It said an implementer corrects the design in place "without an amendment"; approval hashes the whole plan, so that edit was always rejected. The permission is now bounded to before approval, and the two post-approval cases are named: grounding for a seam the plan marked
no stub (implementation-discovered)goes to the verification ledger, and a settled decision that execution falsified is a plan error taking controlled amendment. - A review finding is now classified by cause depth before it is answered. A finding whose cause is a design decision repairs the design and every task that decision owns, rather than patching the one place it was spotted.
- A design decision in a plan now names the task that builds it. Every