This release includes 4 breaking changes for platform teams planning a safe upgrade.
✓ No known CVEs patched in this version
Topics
Affected surfaces
Summary
AI summaryBroad release touches Deliverables, Contract changes, Behavior changes, and Syntax changes.
Full changelog
First connector contract audit + lock for v1.0 per Perry's thread b722bbf4.
Closes Q1-Q12 across three pressure-test rounds (sender/substrate lens →
agent-as-receiver lens → full code-audit reconciliation). Opens the
"connector house in order" gate-3 sequence; remaining contracts (McpConnector,
SkillStore, MemoryStore, LocalModel) audit + lock in subsequent v0.9.x slots.
Contract changes (src/connectors/agent.ts)
- Added
DeliveryMetaenvelope on bothDeliveryPayloadvariants (Q8).
Runtime auto-fillsdispatch_id(UUID per emit),sent_at(emit-clock),
origin.skill_name/origin.trigger_kind(required); optional
origin.entry_skill_name,origin.caller_agent_id,event_type,
correlation_idpopulate when context provides them. - Added
health_check()required method (Q6). Bootstrap-throws onfalse
viaregisterAgentConnector()— wiring failures surface at boot, not at
first skill-fire. - Added
request_response()required method (Q1) with lockedResponse
shape{ correlation_id, content, sent_at, agent_id }. Impl deferred to
v0.10 whenexchange()op ships; adopters throwNotImplementedError
until then. - Added
delivery_skipped?: booleantoDeliveryReceipt(Q7). Contract-
level signal for "accepted but not pushed" (offline agent, rate-limit drop,
etc.); runtime honors connector-set value, preserves NoOp fallback inference. - Dropped
manifest()(Q2). No production callers; folded into
conformance test surface. - Dropped
TriggerProvenanceinterface (Q12) and its envelope fields
(source_skill,triggered_by,delivery_context,templates,format).
Each folded intometaper Q8-Q11 or dropped to trace-only surface.
Syntax changes
# Delivery-context:→# Event-type:frontmatter rename (Q9). Vocab
consistency between skill-author and receiver-agent surfaces; the field
flows tometa.event_typeas the frontmatter fallback (notify(event_type=...)
kwarg takes precedence per-emit).notify()op gainsevent_type=andcorrelation_id=kwargs. Per-emit
override of frontmatter;correlation_idis the reply-correlation primitive
for the v0.10exchange()shape.
Behavior changes
Registry.registerAgentConnector()is nowasync— invokeshealth_check().triggerCtx.sourceenum migrated from{cron, session, event, agent-event, file-watch, sensor, manual}to Q8's{cron, session, webhook, agent, cli, dashboard, inline}. The pre-v0.9.6 "extra" values were parse-only (no production firing path emitted them).manual→inlineis the only meaningful migration.# Templates:frontmatter still parsed forunknown-template-referencelint
but no longer flows throughDeliveryPayload(Q10 — vestigial removal).
Deliverables
- New
docs/connector-contract-reference.md— canonical reference for adopters
(audience: adopter agents). Includes the four footnotes Perry pinned during
the audit (broadcast dispatch_id semantics, deeper-than-2-level chain elision,
caller_agent_id general rule, sent_at vs delivered_at distinction). - Updated
docs/adopter-playbook.mdAgentConnector method list. - Updated
docs/language-reference.mdAgentConnector + DeliveryPayload sections. - New
tests/v0.9.6-agent-connector-audit.test.ts(15 tests covering Q1-Q12);
includes Perry's plumbing-risk SHAPE test forentry_skill_namepropagation
(cites lesson1bc9d7a2).
Pre-adoption migration
Pre-adoption rule applies (no external users); breaking changes are cheap.
Adopters who experimented against pre-v0.9.6 code:
- Drop
manifest()from AgentConnector impls. - Add
health_check()+request_response()(throw NotImplementedError until v0.10). - Replace
source_skill/triggered_by/delivery_context/templates/
formatpayload field reads withmeta.origin.*/meta.event_typereads. - Rename
# Delivery-context:→# Event-type:in skill source.
Methodology lesson (per Perry, worth banking)
"Contract audits compound. Each pressure-test pass before lock has near-zero
cost; each pass after adoption has near-infinite cost. Spend pre-lock budget
liberally." Three pressure-test rounds (Q1-Q7 → Q8 → Q9-Q12 audit-reconciliation)
each caught real gaps the previous round missed. The pre-adoption rule made
the discipline cheap; the audit-as-methodology made the pass-count load-bearing.
LOC ceiling
Bumped narrow-core from 8300 → 8500. Third bump in the v0.9.x series — per §18
note, the "consolidate first" threshold. Most of the ~150 net LOC growth is
doc-comments on agent.ts; per the adopter-agent-as-author memory,
reference impls are the dominant signal source for adopter agents, so
docstring richness is load-bearing.
Breaking Changes
- Dropped `manifest()` method from AgentConnector interface
- Dropped `TriggerProvenance` interface and its envelope fields (source_skill, triggered_by, delivery_context, templates, format)
- Renamed frontmatter key `# Delivery-context:` to `# Event-type:`
- Migrated `triggerCtx.source` enum values: removed cron/session/event/agent-event/file-watch/sensor/manual; added cron/session/webhook/agent/cli/dashboard/inline (manual → inline)
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About Skillscript
All releases →Related context
Related tools
Earlier breaking changes
- v0.35.0 Editing `# Deadline:` on an approved skill drops it to Draft (signature invalidates).
Beta — feedback welcome: [email protected]