Skip to content

v3.11.0

Choose a tag to compare

@mrbro-bot mrbro-bot released this 17 Aug 23:23
· 297 commits to main since this release
4cead30

What's new

Features

The content-integrity gate's checkReferenceIntegrity validates references shaped systematic:<category>:<name> against real agent files, but anything spelled differently was invisible to it — 24 phantom ce--prefixed references and a subagent_type: Explore pointing at nothing sat in bundled content while the gate reported clean. v3.10.2 fixed those instances by hand, but the mechanism that let them rot in the first place was unchanged.

This release adds checkDispatchIdentifiers, closing the two decidable parts of that gap: a literal subagent_type value must resolve to a bundled agent filename stem, and an inline-code kebab-case token that ends with a real bundled stem but isn't itself resolvable is flagged as a near miss. Both checks are deliberately narrow — deciding whether arbitrary prose refers to an agent is undecidable, and structural exclusions (path tokens, canonical references, skill directory names) keep the gate quiet without an allowlist to maintain.

The gate's safety no longer rests on the coincidence that no bundled agent is named plan or review. Skill directories like ce-plan are now excluded explicitly rather than relying on an unenforced naming invariant that would have broken every ce-plan reference the moment an agent named plan shipped.

The change also fixes skills/using-systematic/references/opencode-profile.md, which had demonstrated dispatch using explorer and fixer — agents this package doesn't ship. Readers without those agents in their own OpenCode configuration would follow the example and hit an unresolvable dispatch; the examples now use bundled agents so every reader can run them.

Review surfaced four defects that fixtures missed, all reproduced before fixing: quoted property keys never matched (so {"subagent_type": "x"} passed unchecked), the unquoted-value branch didn't stop at a quote, updateFenceMarker kept only the first fence character, and a single path token suppressed near-miss detection for every token sharing its inline-code span. Verified against the real pre-fix tree: restoring the two files that shipped with 24 violations reproduces exit code 1.

Documentation

Plan item I5 is marked complete. Every approach bullet has shipped: src/lib/source-model-defaults.ts and src/lib/model-availability.ts were deleted rather than narrowed, no provider-name routing survives in src/ (v3.10.0), every bundled agent reference resolves under checkReferenceIntegrity, and the model: task-tool parameter that silently bypassed user model policy is gone (v3.10.2).

Two sets of provider literals remain deliberately: JSON Schema examples in config-schema.ts documenting the provider/model shape for users writing config, and sample application code in skills/agent-native-architecture/references/ that teaches tiered agent design. Removing either would make the artifact worse, not less market-pinned.

The dispatch-identifier gap (see Features, above) was folded into this plan item because unresolvable references bypass model policy, making bad routing the visible symptom. With every instance closed, the residual is scoped down to the reference-integrity gate itself and filed as a standalone issue rather than left as an open-ended initiative.

Also in this release

  • deps: update dependency typebox to v1.3.14 (#802)

Compare

v3.10.2...v3.11.0