v0.9.9
No library behavior changes in this release. Every src/ edit in this range is
a documentation comment, so the published runtime is unchanged from v0.9.8; the
work is in the docs surface, the example apps, and the check suite.
Changed
- The public docs surface is now written for the public.
research/and the internal build trees are untracked, and the adoption and comparison pages are back in sync with the native transports: the AI SDK is the default path for seven of the eight providers rather than the only path, and both pages' AI-SDK-backed versus native counts are corrected. - Every example app now matches docs/blueprint.md.
pr-improve, the canonical reference, moved its four system prompts into markdown files with frontmatter, renamed its schemas tosnake_case, and moved the field-level output rules out of prose and into.describe()on the schemas, where they travel to the model as part of the JSON schema.red-green-refactor,swebench, andamplifypredated the blueprint and were translated: onecreate_enginecall site each, markdown prompts, andstate/stages/servicessplits.amplify's round loop was awhileover mutable parent state driving anensemblewhose score callback populated a captured map; it is nowloop+map+branchover immutable carry-state, withfallbackreplacing a buried try/catch, so the stop rule, the fan-out, and the accept/reject decision are all visible in the trajectory.
Fixed
docs/blueprint.md'sstate.tssnippet did not compile. It declared its scope-state readers overReadonlyMapand called.get(), butuse(keys, fn)handsfna plain object projection of the requested keys. The snippet now shows the real shape, with theReadonlyMapvariant documented for readers that go throughctx.stateinside a step body instead.examples/pr-improvecould not run on its own default provider. It defaulted every role to'sonnet'/'opus'and claimed in comments that the engine expands those per provider. It does not —modelis passed to the provider verbatim — so the documented default path (FASCICLE_PROVIDER=anthropic) sent a literal"sonnet"and got a not-found error. There is now one per-provider model table, resolved once and threaded as data, which also removes a second copy of that table and makes theFASCICLE_MODEL_*overrides reach the flow; they were previously parsed and discarded.
Internal
- The check suite is now checkride 0.6.0, replacing the hand-rolled orchestrator.
scripts/check.mjs,check-links.mjs,check-doc-snippets.mjs, andcheck-publish.mjsare deleted (~960 lines) in favour of built-in slots;scripts/check-deps.mjsstays as the one custom check, since the core/engine dependency invariant is fascicle-specific. Thepnpm check/check:all/check:json/check:bailcontract is unchanged andpnpm check --changedis new. - Existing debt is grandfathered in
checkride.baseline.json(308 diagnostics across lint, struct, dead, dupes, health, spell). The gate ratchets: frozen debt passes, new findings fail. Thedupesandhealthslots are now enforced rather than folded into a single fallow invocation that could not fail on them. - The packaging gate gains
publintand splits the old monolithicpublishstep intopack,smoke, andattw(pinned to theesm-onlyprofile). Doc snippets are typechecked against the built.d.tsas part ofpnpm check:publish, rather than as a separate CI step. - The blueprint is machine-checked on the examples. All six composition apps carry its ast-grep rules, run for every app by a new
examplescheck slot;check:ruleswas previously invoked by no CI job and no slot, and the library's own rules never matched the example apps because theirfiles:globs are anchored at the repo root.vitestnow globsexamples/*/src/**/__tests__, soswebench's andamplify's suites, which had never executed, run in CI: 13 example tests became 51. - Every module-level function in
src/now carries a doc block, enforced byrules/function-comment-required.yml, and the comments are written in the present tense with no design-history references. - Tooling: fallow 3.6.0,
publintadded, and the marketing site dropped from analysis (it reported every file as unused and its DOM handlers as complexity findings).