All notable changes to the openwop v1 spec, schemas, OpenAPI/AsyncAPI, conformance suite, and reference SDKs.
Format follows Keep a Changelog loosely. Versions are spec-corpus-wide (one date, multiple artifact updates per row); per-artifact versions live in their respective package.json / schema $id fields.
Status legend (per
/governance/spec-status/):Stable · Stabilizing · Draft · Experimental — see individual doc headers for current state. The legacy
STUB / DRAFT / OUTLINE / FINALvocabulary still appears in older releases below; both are valid in the corpus.
Package version map. The version headers below are spec-corpus versions, not package versions — each package advances independently on its own per-package release tag. So a corpus version may be skipped here when its number was already consumed by a single-package release, and not every published package version has a corpus row. Notably there is no corpus
1.1.6: that number was taken by a TypeScript-SDK-only npm patch (@openwop/openwop@1.1.6, published 2026-05-31, the agent-platform/roster helper catch-up), so the corpus skipped straight to1.1.7. A deep-link like#v1-1-6therefore has no anchor here by design — the TS SDK's own history lives insdk/typescript/CHANGELOG.mdand on npm. Current published per-package versions (as of the1.1.7corpus release):@openwop/openwop1.2.0 (npm) ·@openwop/openwop-conformance1.18.1 (npm) ·openwop-client1.1.7 (PyPI) ·github.com/openwop/openwop/sdk/gov1.1.7 (Go modules).
Unreleased · unreleased
Unreleased- Workflow-chain gallery visibility —
internalchains (RFC 0135Draft → Active, 2026-07-23). Adds one OPTIONAL boolean to the manifest'sWorkflowChain(schemas/workflow-chain-pack-manifest.schema.json§WorkflowChain):internal— marks a composition-only fragment (typically an RFC 0133 sub-chain child). A host's default template-gallery/picker listing MUST omitinternal: truechains (a host MAY offer an explicit opt-in author/admin view);internalMUST NOT change any non-presentational behavior (load/validate, resolve-by-id, expansion,from-chain, RFC 0133 composition all unchanged) and is explicitly NOT an authorization boundary (a host MUST NOT treat it as access control). Absent ⇒false. Motivation: RFC 0133 made chains composable, which creates children that exist only to be composed — indistinguishable in the manifest from runnable templates, so galleries list half-a-workflow fragments as peers of their parent (the openwop-applesson-batchchild, tracked as that host'sCGX-1; the stop-gap was a naming convention).additiveperCOMPATIBILITY.md§2.1 — new optional field, every existing chain byte-identical + listed exactly as before; no new capability flag. The 7-day comment window was waived under the bootstrap-phase single-maintainer steward waiver (CONTRIBUTING.md§"Bootstrap-phase notes"; same mechanism as RFC 0132/0133/0134), architect-reviewed by the steward. Landed atActive(wire shape LOCKED): schema + spec (workflow-chain-packs.md§"Chain visibility (RFC 0135)") + the always-on server-freeworkflow-chain-internal-flag.test.tscorpus legs (suite1.57.0 → 1.58.0, 400 → 401 scenario files). GraduatedActive → Accepted(2026-07-23) on the openwop-app tier-1 reference-host witness (reve9e0a5ed0, PR openwop-app#2470): vendored schema synced,lesson-batchmarkedinternal: true, the gallery route + zero-config seeder omit internal chains (host regression legs), and theworkflow-chain-internal-flag+ RFC 0133 composition scenarios passed non-vacuously underOPENWOP_REQUIRE_BEHAVIOR=trueagainst the published suite 1.58.0 (internal-flag 3/3, sub-chain 16, workflow-chain 67). Corpus RFC counts moveAccepted 130 → 131 / Active 4 → 3.
- Edge-condition
truthy/falsyoperators (RFC 0134Draft → Active, 2026-07-23). Adds two members to theEdgeCondition.typeenum (schemas/workflow-definition.schema.json§EdgeCondition + the inlinedschemas/workflow-chain-pack-manifest.schema.json§EdgeCondition):truthyandfalsy, which take aleftpath and NOrightoperand and route the edge iff the value atleftis (resp. is not) truthy — treating a skipped upstream (output absent) as falsy, which is what reject-safe fan-in wiring depends on (equals true/notEquals trueevaluate a skipped source the opposite way). Closes a gap between what hosts do (they already compute a boolean gate output's truthiness) and what the wire can say, and unblocks the approval-gate + reject-safe-barrier pattern (a challenge-authoring factory, multi-channel campaign orchestration) from converting to portable chain packs.truthy/falsyrequire a non-emptyleft(elsechain_edge_condition_invalid, never a silently dead edge) and a host MUST ignore a strayright.additiveperCOMPATIBILITY.md§2.1 — new optional enum members; every existingEdgeCondition(one of the five prior operators) is byte-identical and replays identically; no new capability flag (the operator set is part of the always-present workflow-definition contract). The 7-day comment window was waived under the bootstrap-phase single-maintainer steward waiver (CONTRIBUTING.md§"Bootstrap-phase notes"; same mechanism as RFC 0132/0133), architect-reviewed by the steward. Landed atActive(wire shape LOCKED): schema + spec (workflow-chain-packs.md§"Edge-condition operators (RFC 0134)") + the always-onedge-condition-truthy-falsy.test.ts§A corpus legs all pass server-free; GraduatedActive → Accepted(2026-07-23) on the openwop-app tier-1 reference-host witness (revc8854cb5, PR openwop-app#2438): the host mapped the operators (edgeConditionMappingWIRE_OPtruthy→truthy/falsy→falsy, vendored schemas synced) and theedge-condition-truthy-falsy§B host-mapping leg passed NON-VACUOUSLY underOPENWOP_REQUIRE_BEHAVIOR=true(4/4). Corpus RFC counts moveAccepted 129 → 130 / Active 4 → 3.
- Workflow-chain composition — sub-chains + produced variables (RFC 0133
Draft → Active → Accepted, 2026-07-22 → 2026-07-23). Extends RFC 0013 workflow-chain packs with two OPTIONAL, additive capabilities so composed/stateful workflows need not stay hard-coded. (1) Sub-chains — a chain fragment MAY declaresubChains[](a siblingchainId, or an external published chain) and reference one from acore.subWorkflow/core.dispatch(child-run) node viaconfig.subChainRef. Unlike RFC 0013's author-time inline splice, the host co-expands and co-registers the referenced chain as its own owned workflow, minting a deterministic, TENANT-SCOPED id from(tenantId, childChainId, version)(no cross-tenant collision on the global registry; a child shared across parents in a tenant registers once; a repeat instantiation converges), and rewrites the referencing node'ssubChainRef→ the minted childconfig.workflowId— so the parent holds a runtime child (realizes "workflows can hold workflows", the future-RFC forward-reference RFC 0013 anticipated). Bounded by a cycle check (sub_chain_cycle) + a depth cap (maxSubChainDepth, RECOMMENDED 8 → the distinctsub_chain_max_depth_exceeded); an unresolvable ref →sub_chain_unresolved; a host without runtime child dispatch refuses asubChains-bearing chain withsub_chain_unsupported(422), never silently flattening. (2) Produced variables — a fragment MAY declareproducedVariables[](a value a node writes to the run bag that a downstream node reads by name via{ type:"variable" }, distinct from author-timeparameters), emitted into the expandedWorkflowDefinition.variables[]and closed-world validated (variable_undeclared); explicit output→input edges remain PREFERRED. New optionalcapabilities.workflowChainPacks.subChainssub-block gates the runtime path (producedVariablesneeds no flag).additiveperCOMPATIBILITY.md§2.1 — every new field optional; asubChains-free chain expands byte-identically; dispatch rides the existingcore.subWorkflow/core.dispatchnodes (no new primitive); child ids minted at instantiate time (no run-log non-determinism;:forkreplays byte-identically). Amends RFC 0013 (adds anAmended byrow; qualifies its spec §Expansion step 9 + §What hosts dispatch for the opt-in runtime-child mode). The 7-day comment window was waived under the bootstrap-phase single-maintainer steward waiver (CONTRIBUTING.md§"Bootstrap-phase notes"; same mechanism as RFC 0043/0121/0131/0132), architect-reviewed by the steward. Landed atActive(wire shapes LOCKED): the schema + spec + reference library + three server-free scenarios (chain-subchain-sibling,chain-subchain-cycle-rejected,chain-produced-var-roundtrip) + the protocol-tiersub-chain-expansion-boundedinvariant all pass non-vacuously server-free. GraduatedActive → Accepted(2026-07-23) on the openwop-app tier-1 reference-host witness (reve199bd96c, PR openwop-app#2429, ADR 0471): against@openwop/openwop-conformance@1.56.0underOPENWOP_REQUIRE_BEHAVIOR=true, all 5 scenarios / 22 tests PASS with the two capability-gated §B legs (chain-subchain-fanout,chain-subchain-unsupported-refused) NON-VACUOUS (host advertisedsubChains {supported:true,maxDepth:8}; negative postureOPENWOP_CHAIN_SUBCHAINS=0→ block omitted, realsub_chain_unsupportedrefusal). On this witnesssub-chain-child-tenant-scopedGRADUATED reference-impl → protocol (RFC 0079 / RFC 0132 precedent); a second non-steward host is the dual-witness strengthening, tracked indocs/KNOWN-LIMITS.md. All 3 §Unresolved questions swept: external-ref version pinning → resolved (pin SHOULD);maxSubChainDepth→ resolved (8); child ownership lifecycle → carried forward (WCP5, reference-count RECOMMENDED). Companion registers:0133-workflow-chain-composition.{gaps,risks}.md. Corpus RFC counts moveAccepted 128 → 129 / Draft 2 → 1 (0038 Parked). - SECURITY invariants
+2(both protocol-tier after the 2026-07-23 graduation). Addssub-chain-expansion-bounded(protocol-tier — bounded sub-chain co-expansion: cycle +maxSubChainDepthfail closed withsub_chain_cycle; the workflow-chain analog of RFC 0071artifact-schema-compile-bounded; public testchain-subchain-cycle-rejected.test.ts, witnessed server-free now) andsub-chain-child-tenant-scoped(reference-impl-tier — a co-registered child owned only by the parent's tenant, no cross-tenant workflow aliasing; CTI-1 parity; behavioral homechain-subchain-fanout.test.ts— landed reference-impl atActive, GRADUATED reference-impl → protocol atActive → Accepted2026-07-23 on the openwop-app tier-1 witness reve199bd96c). Totals: 156 invariants (124 → 126 protocol / 28 reference-impl / 2 advisory). - Anonymous-actor authorization for public agent surfaces (RFC 0132
Draft → Accepted, 2026-07-22). Adds a third, explicitprincipalkind —anonymous— for callers on a public agent surface (an embeddable widget, a marketing-site assistant, a logged-out visitor) who authenticated no identity: opaque, origin-bound, per-session-ephemeral, non-cross-linkable, non-PII (RFC 0048 parity, resolving its §UQ1 principal-kind discriminator). An anonymous actor's authority is not a role and not the default-on tool baseline but a default-deny, explicit per-surface tool grant, advertised via a new OPTIONALcapabilities.anonymousActorfamily ({ supported, tiers, writeEgressControls?, failClosed }) with a tenant-scoped no-egress/no-secrets read tier and a bounded-write/egress tier permitted only behind a mandatory HITL/approval (RFC 0051) or rate-limit + per-session cap, over the RFC 0076/0079 SSRF-guarded audience-bound egress path. Adds an OPTIONALrun-snapshot.owner.principalKind(user/agent/anonymous, EXPLICIT — absent ⇒ today's behavior) as the wire witness, and an OPTIONALopenwop.actor.kindOTel attribute. Every anon tool call audits via the existing RFC 0049authorization.decidedevent (no new event type).additiveperCOMPATIBILITY.md§2.1 (new optional capability off by default + new optional field on a server-emitted schema + normative requirements binding only opt-in surfaces). Spec minor bumps; conformance suite minor bumps with the new capability-gated scenarios; spec major does not bump. The 7-day comment window (GOVERNANCE.md§"Normative addition") was waived under the bootstrap-phase single-maintainer steward waiver (CONTRIBUTING.md§"Bootstrap-phase notes"; same mechanism as RFC 0043/0121/0131), architect-reviewed by the steward. GraduatedActive → Acceptedthe same day on the openwop-app tier-1 reference witness (PR openwop-app#2403, rev03d06d1f2): the five gated behavioral scenarios passed 10/10 non-vacuously underOPENWOP_REQUIRE_BEHAVIOR=true(steward-verified by booting the in-memory host — advert both tiers +hitl, seam served200), so the fiveanon-actor-*invariants graduated reference-impl → protocol tier. All five §Unresolved questions resolved (UQ5 → anon egress credential-free by default, a host-side in-audience credential attach is an explicit opt-in outside the floor; UQ3 → an A2A-forwarded actor MUST NOT map toprincipalKind:"anonymous"; UQ1/2/4 → passive/out-of-scope/opaque). Corpus RFC counts moveAccepted 127 → 128 / Draft 2 → 1 (0038 Parked). - SECURITY invariants
+5(protocol-tier+5). Addsanon-actor-no-default-baseline,anon-actor-no-secret-reach,anon-actor-egress-ssrf-guarded,anon-actor-write-egress-gated,anon-actor-audit-opaque(RFC 0132 §F), each with its gated conformance scenario. All five are behavioral guarantees requiring a live tool-enabled public surface, so — per the RFC 0079egress-credential-audience-boundprecedent — they landed at reference-impl tier atActiveand GRADUATED to protocol tier atActive → Accepted(2026-07-22) once the openwop-app reference host passed the scenario non-vacuously underOPENWOP_REQUIRE_BEHAVIOR=true. The always-onanonymous-actor-shape.test.tsproves the wire contract server-free. Totals: 154 invariants (119 → 124 protocol / 33 → 28 reference-impl / 2 advisory). - Registry and extension-policy (RFC 0043
Accepted, 2026-07-07). GraduatesActive → Acceptedthe one-stop governance policy that consolidates the project's non-wire stability surface: extension-namespace reservation + policing, pack-registry submission/deprecation/yank/key-rotation, profile/event/kind/capability name reservation against squatting, and the IPR posture.additive— policy text only, no wire-shape, schema, OpenAPI, or conformance change (theopenwop:checkgate is unaffected). The policy has been live and cited as authoritative from normative spec (host-extensions.md§"Canonical prefixes",registry-operations.mdpolicy layer,docs/governance/registry-policy.md) since 2026-06-11; its only landing gate — a 7-day public comment window — was waived under the bootstrap-phase steward waiver (CONTRIBUTING.md§"Bootstrap-phase notes"; same mechanism as RFC 0121), with no unresolved objections on the additive policy. Working-group ratification remains a future-action gate, not a blocker (gated on theGOVERNANCE.mdtripwire per RFC 0038, WG-revisitable). The five §Unresolved policy questions (DNS-ownership path, 72-hour yank window, no-trademark posture, 14-day patent-disclosure SLA,openwop./host.OTel namespace) stand at their proposed bootstrap defaults and are WG-revisitable — none was a graduation blocker. Corpus RFC counts moveAccepted 126 → 127 / Active 4 → 3 / Draft 1 (0038).
1.4.0
2026-07-07agent-manifest `role` + the Skill profile (RFC 0131 `Accepted`)
Distinguishes a composable, task-scoped Skill from a top-level assistant agent, first-class on the agent manifest. One RFC reaches Accepted; wire shape additive per COMPATIBILITY.md §2.1 plus a schema-encoded safety-fix that binds only opt-in manifests. RFC counts move Accepted → +1 (0131).
- RFC 0131 — agent-manifest
role+ the Skill profile (Accepted, 2026-07-07). Adds an additive OPTIONALAgentManifest.role("skill" | "assistant") — EXPLICIT, never inferred (handoffpresence does NOT implyskill; an assistant MAY ship a typed entry contract). An absentroleis unconstrained — byte- and behavior-identical to today, no profile binds it. A manifest that opts in withrole: "skill"binds the Skill profile, encoded inagent-manifest.schema.jsonas anif role==="skill"conditional: it MUST declarehandoffand MUST constrainmemoryShapeto scratchpad-only (conversation/longTermMUST befalse/absent — persistent + multi-turn memory belong to the composing assistant/roster agent, RFC 0039; a stateful worker undermines replay determinism, RFC 0041). A violating skill manifest fails schema validation at publish/install (pack_validation_failed) — a malformed manifest (RFC 0003 §C author error), deliberately NOT an RFC 0072 §Cdegraded[]runtime tier (whose "the host lacks a capability a well-formed agent wants" meaning stays crisp).agent-memory.md§D states the memory constraint adjacent to §C with an explicit reject-vs-degrade contrast;node-packs.md§agents[]documents the field. Because enforcement is universal schema validation (nocapabilities.*advert, no host behavior), there is no per-host interop variance — the always-onagent-manifest-role-profile.test.tsis the universal witness.Draft → Acceptedvia the bootstrap single-maintainer comment-window waiver (CONTRIBUTING.md§"Bootstrap-phase notes"), architect-reviewed by the steward (explicitroleopt-in + schema-encoded reject were the two review-driven revisions). Reference host: openwop-app ADR 0312 (Phase-0 marketplace "Skill" label + Phase-2 worker-memory normalization). - SECURITY invariants
+1(protocol-tier+1). Addsagent-skill-profile-stateless(RFC 0131 §B) with its matching always-on public conformance test.
1.3.0
2026-07-07the CDP Track-2, workflow-chain-pack, and connector-grouping graduation cycle (RFC 0121–0129)
Closes the RFC 0121–0129 cycle plus the RFC 0013 workflow-chain-pack errata: eleven RFCs reached Accepted (0114, 0116, 0117/0119, 0122, 0123, 0124, 0125, 0126, 0127, 0128, 0129) and four new ones landed their Active normative surface (0124, 0125, 0126, plus 0121 advancing to the at-own-risk implementation gate). The work clusters into CDP Track-2 (streaming/CDC triggers + purpose-propagation labels + data-residency), portable workflow-chain-pack parameter deferral + edge fan-in rules, data-parallel per-item dispatch, the self-hosted runner, and presentational connector-catalog grouping. All wire shapes additive per COMPATIBILITY.md §2.1; two safety-fixes (RFC 0013 substitution typing, RFC 0124 sensitive-param secret handling) close credential/portability leaks without relaxing any MUST. Corpus RFC counts move Accepted 113 → 124 / Active 8 → 4 / Draft 1 (0038).
- CDP Track-2 — streaming/CDC triggers, purpose labels, data-residency (RFC 0127/0128/0129
Accepted).triggerBridge.sources[]gainsstream(broker message) +change(warehouse CDC record) withop-carrying envelopes reusing the RFC 0099 SSRF-guard + content-freetrigger.events (0127). An OPTIONALpermittedPurposes: string[]label ridesTriggerEvent+ the A2Ametadata.openwop.namespace; an advertising host MUST re-emit onward (MAY narrow, MUST NOT widen), and[]-labelled data MUST NOT be forwarded (0128). An OPTIONALcapabilities.dataResidency {regions[]}+residency:{region}onPOST /v1/runsmakes region admission control a falsifiable MUST (accept iff advertised, elseresidency_unavailable, create no run); physical byte-confinement stays a §4 declared-intent SHOULD (0129). All three graduated single-witness on the tier-1 reference host, steward-curl-verified on the wire; each carries a named G4 tier-2 gap. - Workflow-chain-pack portability — deferred parameters + edge fan-in (RFC 0124/0125
Accepted). RFC 0124 adds an OPTIONALworkflowChainPacks.deferredParametersmode that keeps chain{{params.*}}overridable per run without non-portable runtime tokens — the host materializes chainparametersintovariables[]+ rewrites to spec'd bindings, replay-deterministic viaRunSnapshot.variables. RFC 0125 mirrorstriggerRuleontoFragmentEdgefor pack-declared fan-in / error-routing. Both single-witness on the reference host. - Data-parallel per-item dispatch (RFC 0126
Accepted). An OPTIONAL index-alignednextWorkerInputs[]onNextWorkerDecisionfans ONEchildWorkflowIdover N runtime items with distinct inputs, over the RFC 0022 projection, fail-closed on a non-advertising host or a length mismatch (validation_error, no child dispatched), replay-safe on:fork. Single-witness on a realcore.dispatchexecutor. - Self-hosted runner (RFC 0122
Accepted). New OPTIONALselfHostedRunnercapability: a hosted control plane routes per-step dispatch to a user-controlled runner that dials OUT (SSE receive + POST result) and holds local credentials the host cannot reach; the host stays the sole orchestration/replay authority. Graduated tier-1 (openwop-app,runner_unavailable=409) + tier-2 (MyndHyve, =503) — the 409/503 split demonstrates the #815 envelope-not-status contract cross-host. - Front-end plugin packs + prompt-prefix cache + A2UI deltas (RFC 0117/0119, 0116, 0114
Accepted). Sandboxed cross-origin-iframekind:"frontend-plugin"loader with deny-egress CSP + host-RPC allowlist (0117/0119); portable secret-freecachePrefixIdprompt-prefix caching with tenant-keyed cross-tenant isolation (0116); OPTIONAL RFC 6902 A2UI delta-frame transport over the unchanged recordedui.a2ui-surfaceenvelope (0114). All single-witness, steward-curl-verified. - Connection-pack provider
vendorgrouping (RFC 0123Accepted). OPTIONAL presentationalprovider.vendorstring groups a connector catalog by commercial vendor; gates no capability and carries no wire behavior, so the schema-validation legs are the witness. Evidence-upgraded to host-served real grouping on the reference host. - Subscription-reuse provider auth mode (RFC 0121
Active, at-own-risk gate). Adds"subscription"to theaiProviders.authModesenum + the protocol-tiersubscription-credential-user-scope-onlyMUST (credential_scope_forbiddenon tenant/workspace bind). UQ1 (provider ToS legality) remains UNRESOLVED; a steward at-own-risk waiver permits implementation of the acquisition-bearing surface at operator/end-user risk — a risk waiver, not a legal clearance. The §B.8 request-scope rejection rail is steward-curl-witnessed on the reference host; the invariant's storage-resolvability clause is inherently host-test territory (host-covered by openwop-app #1444) — seedocs/KNOWN-LIMITS.md§"Behavior tests too coarse". - Two safety-fixes (
COMPATIBILITY.md— no MUST relaxed). RFC 0013: a value that is exactly one{{params.x}}token resolves to the raw typed value (objects/arrays survive their JSON type),node.inputsare preserved verbatim through expansion, and a parameter-distinct persisted-identity rule prevents silent overwrite. RFC 0124 §Security: asensitiveparam MUST materialize assource:"secret"(BYOK-resolved, never plaintext), is deferrable only in a prompt-body position, and fails closed (sensitive_param_not_deferrable, 422) everywhere else — closing a run-timeRunSnapshot/at-rest leak. - RFC 0013 errata (doc/test-only). Expanded node ids are unbounded — hosts MUST NOT cap
idlength (WorkflowNode.idhas nomaxLength); the host-expansion test seam decoupled onto a conformance-onlyworkflowChainPacks.hostExpansionSeamflag + theworkflow-chain-samplefixture bundled, so RFC 0013's Phase-3 host-expansion acceptance item is witnessed 6/6 harness-tier. - SECURITY invariants
145 → 148(protocol-tier115 → 118). Addssubscription-credential-user-scope-only(0121 §B.8),runner-credential-non-transit(0122, BYOK SR-1 parity), andrunner-output-untrusted-transport(0122,<UNTRUSTED>fencing) — each with a matching public conformance test. - Conformance suite
1.46.0 → 1.54.0(independent per-package cadence; scenario files 384 → 387). Ships the gated scenarios for every graduation this cycle:aiproviders-subscription-scope,self-hosted-runner,dispatch-per-item-input,workflow-chain-deferred-parameters,trigger-stream-cdc-sources,purpose-propagation,data-residency-admission, plus the RFC 0013 host-expansion fixture. Already published incrementally on npm. - Honest scoping carried on the public credibility surface. RFC 0111 (contextBudget) stays
Active— the tier-1 host honestly opted out (skeleton orchestrator loop, no real model turns; advertising would be a dishonest wire claim). Every graduation this cycle names its carried-forward tier-2 gap inINTEROP-MATRIX.md+docs/KNOWN-LIMITS.md; none is claimed as independent-organization dual-witness.
1.2.0
2026-06-30the token-economy, front-end-plugin, and parallel-fan-out graduation cycle (RFC 0109–0120)
Closes the RFC 0109–0120 cycle: seven RFCs reached Accepted (0109, 0110, 0112, 0113, 0115, 0118, 0120) and five new ones landed their Active normative surface (0111, 0114, 0116, 0117, 0119). The work clusters into a token / transport economy, sandboxed front-end plugin packs, parallel sub-workflow fan-out, and a pack-delivered credential-egress allow-list. All wire shapes additive per COMPATIBILITY.md §2.1; no v1 wire break. RFC counts move Accepted 105 → 112 / Active 2 → 7 / Draft 1 (0038).
- RFC 0109 — Conversation-turn model provenance (
Accepted, 2026-06-24). Additive OPTIONALagent.model({provider,model}) onconversation-turn.schema.jsonrecording which model produced arole:'agent'turn, gated on the new optionalconversationTurnModelProvenance.supportedcapability. NON-SECRET / NON-PII byadditionalProperties:false(the SR-1 guard — no credential/endpoint/prompt rides the stamp); read VERBATIM on:fork. Server-free shape scenario (conversation-turn-model-provenance-shape.test.ts).Draft → Acceptedvia the bootstrap single-maintainer comment-window waiver; reference stamp = openwop-app ADR 0124 Phase 2d. - RFC 0110 — Channel presence (
Accepted, 2026-06-24). Additive OPTIONAL ephemeralchannel.presenceRunEvent (channel-presence-payload.schema.json) fortype:'channel'conversations — present-member subject refs + optional per-member typing — gated onchannelPresence.supported. Hosts MUST NOT persist it to the replayable log; it is replay/:fork-invisible (the load-bearing distinction from the persistedconversation.exchangedturn). Membership-gated (DEFAULT-DENY, CTI-1), NON-PII (opaque subject refs only). Server-free shape scenario;Draft → Acceptedvia the bootstrap waiver. Reference-host emit DEFERRED (a single-instance deployment is the natural first emitter). - RFCs 0112 / 0113 / 0115 — token + transport economy (
Active → Accepted, 2026-06-27). Dual-witnessed vs published@openwop/openwop-conformance@1.43.0(openwop-app reference rev00332-gm2+ MyndHyve tier-2 revs00511-len/00512-pej/00510-jiv), every gated scenario re-driven non-vacuously by the steward. 0112 compact tool projection — OPTIONAL?view=compactonGET /v1/tools[/{toolId}]returning a lossy{ tools: CompactToolDescriptor[] }with a self-contained input-schema subset (compact-tool-descriptor.schema.json) +toolCatalog.compactView. 0113 memory injection budget — OPTIONALtokenBudget/rank/queryonMemoryListOptionstoken-bounding the live injection read (rank:'relevance'delegates tomemory.search, no new ranking primitive) +memory.injectionBudget; SR-1/CTI-1 hold by construction. 0115 run transport economy — OPTIONAL strongETag+If-None-Match/304+Content-Encodingnegotiation onGET /v1/runs/{runId}+restTransport. PerGOVERNANCE.mdtier-2 + reference-host evidence. - RFCs 0111 / 0114 / 0116 — token-economy surfaces (
Active, 2026-06-26). Normative wire surface landed, host witness pending. 0111 context economy — OPTIONALmultiAgent.executionModel.contextBudget(transcript token budget + a summarization contract whose substitutions record a content-freecontext.summarizedevent with a replay-reusedsummaryRef). 0114 A2UI surface deltas — OPTIONAL host-side RFC 6902 delta-frame transport (a2ui-surface-delta-frame.schema.json,?a2uiDelta=1) over the UNCHANGED recordedui.a2ui-surfaceenvelope; every A2UI invariant MUST hold post-patch. 0116 portable prompt-prefix cache — OPTIONAL secret-freecachePrefixIdonctx.aiEnvelope.generate+ provider-scopedaiProviders.promptPrefixCache+ cost-onlycacheReadTokens/cacheWriteTokensusage fields, with tenant-keyed cross-tenant isolation (prompt-prefix-cache-cross-tenant-isolation) + replay invariance. - RFC 0117 — Front-end plugin packs (
Active) + normative surface. Additivekind:"frontend-plugin"registry pack + OPTIONALhost.uiPluginscapability for portable sandboxed UI extensions: the wire owns the boundary, not a renderer — a mandated cross-origin-iframe isolation model (in-process loading is a protocol-tier MUST NOT), a closedpostMessagehost-RPC allowlist (ui-plugin/1, with an RFC 0059-style optimistic-concurrencyversiontoken), a deny-egress CSP, Ed25519 signing, and graceful degradation to RFC 0071 rendering. Lands the spec doc,frontend-plugin-manifest.schema.json+ui-plugin-message.schema.json, the fourfrontend-plugin-*invariants, and the gatedfrontend-plugin-packs.test.ts.Active → Acceptedwaits on the openwop-app reference host (ADR 0153 canvas editor) advertisinghost.uiPlugins. - RFC 0119 — Mechanism-neutral plugin isolation (
Active; amends RFC 0117). Reconciles RFC 0117's property-level isolation prose with itsconst "cross-origin-iframe"schema pin: widenscapabilities.uiPlugins.isolationto a categorical model (enum [cross-origin-iframe, wasm, process, container, vm]+^x-host-*, reusing the RFC 0035 vocabulary,cross-origin-iframethe default) and reframes thefrontend-plugin-isolationMUST-NOT as mechanism-independent. Strengthens §Host-RPC for non-browser transports (transport-guaranteed framing + per-channel ordering; forwasm, no host import beyond the singleui-plugin/1entrypoint). Prose + looser-validation only (COMPATIBILITY.md§4); no envelope-schema change. - RFC 0118 — Parallel sub-workflow fan-out and join (
Active → Accepted, 2026-06-28). Closes RFC 0007 §K3's deferred fan-out: additivefanOutPolicy:'parallel'+ an optionaljoinPolicy(modewait-all/quorum/first/race ×onChildFailurecollect/fail-fast/absorb) +maxConcurrencyonDispatchConfig, emittingcore.dispatch.fanOut/core.dispatch.joinrun-events with a replay-deterministicmergeOrder; gated ondispatch.fanOutSupported, default stays'sequential'. Graduated on dual-witness discovery + behavioral evidence (openwop-app prod + MyndHyve tier-2 rev00513-qib, steward-verified via thePOST /v1/host/sample/dispatch/fanoutseam:joinOutcome:"satisfied", 3 children,mergeOrderof 3; corroborated by MyndHyve'sdispatch-fanout-parallel.test.ts10/10). Honest tier-2 + reference-host, with the per-hostjoinModes/onChildFailureModessubset divergence the gating exists to surface. - RFC 0120 — Connection-pack
apiHostscredential-egress allow-list (Active → Accepted, 2026-06-29). Closes the pack-delivered confused-deputy gap: a connection pack (RFC 0095) could declare a provider's auth endpoints but not the API host(s) its resolved credential may egress to. Adds the OPTIONALprovider.apiHostsarray (strict bare registrable hostnames; IP/wildcard/port/single-label rejected) — REQUIRED at the manifest whenreach:openapiand at the RFC 0045 binding site (conditional MUST, fail-closed), an eTLD+1 floor with dot-anchored suffix containment, AND-composing with (never widening past) the RFC 0079 audience guard. Two protocol-tier invariants (connection-pack-api-host-shape+connection-pack-egress-host-bound) with the gatedconnection-pack-apihosts.test.ts. Graduated single-witness tier-2 + reference-host: openwop-app ran the published1.46.0leg non-vacuously underOPENWOP_REQUIRE_BEHAVIOR=true(PERMITsgraph.facebook.com, fails closed onevil.com/notfacebook.com/facebook.com.evil.com); MyndHyve honestly opted out of the brokered-egress arm. - SECURITY invariants
138 → 145(protocol-tier108 → 115). Adds the fourfrontend-plugin-invariants (RFC 0117),prompt-prefix-cache-cross-tenant-isolation(RFC 0116), and the twoconnection-pack-apiHosts invariants (RFC 0120); the A2UI invariant set (RFC 0114) MUST hold on the post-patch surface. - Conformance suite
1.37.0 → 1.46.0— published independently on its ownopenwop-conformance/v*tags as each RFC's gated + always-on scenarios landed (compact-tool / memory-budget / run-transport / context-budget + summarization-replay / a2ui-delta / prompt-prefix-cache / frontend-plugin / dispatch-fanout / connection-pack-apiHosts). Per the 2026-06 repo split, this corpus repo publishes exactly this one artifact. - Honest scoping carried on the public credibility surface. RFCs 0111 / 0114 / 0116 stay
Active(single-/no-witness — 0111 needs a real-orchestrator-loop host; MyndHyve architecturally opted out of 0114 + 0116); RFCs 0117 / 0119 stayActivepending a host advertisinghost.uiPlugins; RFCs 0118 / 0120 graduated on tier-2 + reference-host evidence, recorded as such — not independent-org dual-witness. Each is documented indocs/KNOWN-LIMITS.md+INTEROP-MATRIX.md.
1.1.9
2026-06-24the modality + agent-interaction graduation cycle (RFC 0100–0108)
Closes the RFC 0100–0108 graduation cycle: eight RFCs reached Accepted on dual-witness (one single-witness, bootstrap-waiver) behavioral evidence, landing agent-authored UI, localized content, portable HITL approver routing, speech synthesis, real-time voice, durable A2A tasks, multi-party conversation, and a self-hosted / OpenAI-compatible provider class. All wire shapes additive per COMPATIBILITY.md §2.1; no v1 wire break. RFC counts move Accepted 96 → 105 / Active 3 → 2 (0035, 0043) / Draft 1 (0038).
- RFC 0102 — A2UI agent-authored interface surfaces (
Accepted, 2026-06-15). The optional, advertised core envelope kindui.a2ui-surface— a declarative interactive UI a consumer renders with native widgets, routing user actions back without executing agent-supplied code (closed component tree, host-enumerated catalog, interrupt-resume / conversation-exchange confinement). Dual live evidence vs suite1.26.0(openwop-app rev00204-v75+ MyndHyve, byte-identical core schemasha256 68f977c1…). Newschemas/envelopes/ui.a2ui-surface.schema.json+ five SECURITY invariants + athreat-model-prompt-injection.md§4.8 section. (Briefly amended to a vendor-namespaced kind on a blind first review (#715), then reverted to the core kind on re-review — cross-host portability is the property the core kind delivers.) - RFC 0103 — Localized content surface (
Accepted, 2026-06-17). A capability-gated surface for durable authored structured localized content (pages → sections) that reuses the Stablei18n.mdAccept-Language/Content-Languagenegotiation verbatim and adds only the data model + a per-section field merge (resolveSection: exact → language-family → base). New core specspec/v1/localized-content.md, four schemas, acontentcapability block, OpenAPI delivery + admin paths, three protocol-tier SECURITY invariants. Dual non-steward host evidence (openwop-app + MyndHyve) vs suite1.27.0. - RFC 0104 — Portable HITL approver routing (
Accepted, 2026-06-19). Three optional advisory fields on thekind:"approval"interrupt payload (approverGroupRefs,approverRoleRefs,audience) + a top-levelinterrupt.approverRoutingcapability, so group / role approver routing is portable + capability-gated. Theaudiencehint defaults to the resolved eligibility union and is fixed history on replay /:fork. Dual non-steward host evidence with honestly-divergentaudiencesupport (openwop-app + MyndHyve) vs suite1.28.0. - RFC 0105 — Speech synthesis adapter (
Accepted, 2026-06-21). AdditiveaiProviders.speechSynthesis: "supported"exposingctx.callSpeechSynthesizer(...)→ a binary audio asset (host-servedurlor inlinebase64+mimeType), a verbatim parallel ofctx.callImageGenerator. Dual independent non-steward host evidence vs suite1.29.0on the identical locked envelope with honest provider / asset-arm divergence (openwop-app MiniMax /urlrev00265-wtx+ MyndHyve Gemini /base64rev00280-dcs). Reuses existing SSRF + untrusted-media guards (no new invariant). - RFC 0106 — Real-time voice session profile (
Accepted, 2026-06-24). AdditiveaiProviders.realtimeVoiceprofile: streaming transcription (ctx.callTranscriber), a streaming arm onctx.callSpeechSynthesizer, and avoice.*turn-taking / barge-in run-event taxonomy (run-event types100 → 107) with a distinct session-boundstreamReflive-conduit handle. Per-capability graduation: the transcription core is dual-witnessed (openwop-app rev00294-nhz+ MyndHyve Gemini-multimodal rev00503-row) vs suite1.34.0; the optionalsynthesis/turnDetection/bargeInarms stay single-witnessed + conformance-gated.voice-transcript-untrusted+voice-bargein-no-partial-leakare protocol-tier;voice-interim-not-durable+voice-streamref-tenant-boundstay reference-impl (their scenarios don't yet drive the adversarial leg — a conformance-hardening follow-on). A §B/§C return-primitive amendment corrected a surfaced replay-determinism hazard (node-facingctxresolves aPromise+ emits to the durable log, never a liveAsyncIterable). - RFC 0100 — Async / durable A2A tasks (
Accepted, 2026-06-24). Graduates thea2aasync / durable composition surface (durableTasks+pushNotifications) on dual-witness evidence vs suite1.34.0(openwop-app rev00299-hns+ MyndHyve rev00505-seh): a durabletasks/getover a real approval-gated run (input-required,taskId == runId) + push-config SSRF rejection, both serving a credential-less GET-resolvable A2A v0.3 AgentCard. Honest scope:streaming(tasks/resubscribe) is omitted by both — suite1.34.0ships no resubscribe gated subtest, so advertising it would be vacuous.a2a-push-egress-ssrfwas already protocol-tier (no graduation). - RFC 0108 — Self-hosted / OpenAI-compatible provider class (
Accepted, 2026-06-24). Additive optionalaiProviders.selfHosted[](a subset ofsupported[]) marking operator- / tenant-configured OpenAI-compatible endpoints, with truthful-advertisement (§A.2), endpoint non-disclosure (§A.3 / §D), and capability-non-inference (§B) rules + the protocol-tierself-hosted-endpoint-no-disclosureinvariant. Single-witness close under the bootstrap steward waiver on the openwop-app conformance-harness witness (the appropriate tier for an intrinsically operator-private surface that MUST NOT be publicly exposed — the RFC 0035 harness-graduation precedent); production stays dark (OPENWOP_COMPAT_PROVIDER_ENABLEDunset ⇒selfHosted:[]). Passes bothaiproviders-selfhosted-shape(always-on) andaiproviders-selfhosted-honesty(gated) non-vacuously vs suite1.37.0. - RFC 0101 — Multi-party group conversation (
Accepted, 2026-06-22). Un-parked + graduated via the/prdfive-architect pass. Three additive capability-gated facts so N agents co-participating in one shared transcript are cross-host-observable: an optionalparticipants: AgentRef[]roster onconversation.opened, a conditionally-requiredspeakerIdon agentConversationTurns, and amultiPartyConversationcapability block. A follow-on landed the capability-gated behavioral leg + a/v1/host/sample/conversation/multi-party/*conformance seam (RFC 0101 mints no normative client wire-route to open a council). Reusesroster-attribution-no-content(no new invariant). - RFC 0107 — Publishable declarative pack kinds (
Active) + chat-card-kind correction (safety-fix). Lands theActiveRFC 0107 (opened + flippedDraft → Active2026-06-23): the publishedregistry-version-manifest.schema.jsongains akinddiscriminator (nodedefault) + per-kind declarative payloads (artifactTypes/provider/chains/prompts/cards), withruntimere-tightened by anif/then/else(executable kinds MUST carry it; declarative kinds MUST NOT) — every existing node manifest validates unchanged. Separately corrects a never-honored cross-RFC enum disagreement: the chat-card-packkindiscard(RFC 0071 authoritative), notchat-card; zero such packs were ever published (safety-fix). - SECURITY invariants
125 → 138(protocol-tier99 → 108). Adds the five A2UI invariants (RFC 0102), three localized-content invariants (RFC 0103), the voicevoice-transcript-untrusted+ graduatedvoice-bargein-no-partial-leak(RFC 0106), andself-hosted-endpoint-no-disclosure(RFC 0108), plus newthreat-model-prompt-injection.md§4.8 / §4.9 / §4.10 sections (A2UI render surface, synthesized-audio boundary, live-audio ingress). - Conformance suite
1.25.0 → 1.37.0— published independently on its ownopenwop-conformance/v*tags as each RFC's gated + always-on scenarios landed (A2UI, localized-content, approver-routing, speech-synthesis, the voice family, multi-party conversation, declarative pack kinds, self-hosted providers). Per the 2026-06 repo split, this corpus repo now publishes exactly this one artifact; the SDKctxtype additions (ctx.callTranscriber, thecallSpeechSynthesizerstreaming arm, the interrupt + A2A types) are sequenced into theopenwop/openwop-sdkssibling repo. - Honest scoping carried on the public credibility surface. RFC 0106's optional voice arms (
synthesis/turnDetection/bargeIn) and two of its §F invariants stay below full protocol-tier / dual-witness until their scenarios drive the adversarial leg + a second witness lands; RFC 0100'stasks/resubscribestays a zero-witness optional arm pending a gated subtest; RFC 0108 closed single-witness (operator-private surface, no dishonest public claim). Each is documented as such indocs/KNOWN-LIMITS.md+INTEROP-MATRIX.md.
1.1.8
2026-06-14the 2026-06 monorepo split + the RFC 0089–0100 graduation cycle
Ships the structural repo split and a dense two-week graduation cycle. The spec corpus now publishes exactly one artifact — @openwop/openwop-conformance — and everything else (SDKs, packs/registry, reference hosts/examples, the reference app, the CLI) moved to sibling repos. Twelve RFCs reached Accepted and two new ones (0099/0100) landed their normative floor. All wire shapes additive per COMPATIBILITY.md §2.1; no conformance pass invalidated.
- Repository split (non-normative). The monorepo was decomposed with full history into sibling repos: SDKs →
openwop/openwop-sdks(TS@openwop/openwop, Pythonopenwop-client, Go), packs + published registry →openwop/openwop-registry, reference hosts + runnable examples →openwop/openwop-examples, the reference app →openwop/openwop-app(app.openwop.dev), and the CLI →openwop/openwop-cli. This repo now publishes one artifact:@openwop/openwop-conformance. ⚠️ Consumer-facing: the Go module path changed togithub.com/openwop/openwop-sdks/go(re-pin required); npm + PyPI names unchanged. The pack-manifest schemas stay normative here. A coordinatedv*spec release must be matched by SDK tags inopenwop-sdks. - RFC 0099 — external-event trigger ingestion
Accepted. Floor + graduation: the content-freeTriggerEventenvelope (ctx.triggerData), theTriggerSubscriptionRegistrationcreate contract served byPOST /v1/trigger-subscriptions, the additivetriggerBridge.ingestioncapability sub-block, and SECURITY invariantstrigger-ingestion-ssrf+trigger-ingestion-content-redaction. Graduated on dual live evidence vs suite1.25.0(reference openwop-app00177-75t+ non-steward MyndHyve00271-cj5, both steward-curl-verified,trigger-ingestion.test.tsnon-vacuous). - RFC 0100 — async / durable A2A tasks (
Active; floor landed). Newa2acapability block ({supported, agentCardUrl, streaming?, pushNotifications?, durableTasks?}) + the persistedA2ATaskStateprojection (taskId==runId, lowercase-hyphenstate) +a2a-integration.md§"Async / durable Tasks" + SECURITY invarianta2a-push-egress-ssrf. Reference leg fully proven (openwop-appa2a-task-roundtrip10/10 non-vacuous); staysActivepending a non-stewarda2awitness. - RFCs 0096 / 0097 / 0098 — reviewable-learning proposals · standing goals · agent-platform portability
Accepted. Floor + dual-live-evidence graduation:agents.proposals(inertproposal.schema.json),agents.goals(judge-basedgoal.schema.json), the top-levelportabilityblock (export-bundle.schema.json, refs-only,dryRun:truewhenimport:true), 5 protocol-tier SECURITY invariants, 5 content-free events. openwop-app reference (00174-6m6,portability.import:true) + MyndHyve non-steward (00269-ljm, honestimport:falseopt-out). - RFC 0095 — connection packs
Accepted. Newkind:"connection"pack (portable signed provider definition the RFC 0045/0047providerstring resolves against) +connection-pack-manifest.schema.json+ standalonespec/v1/connection-packs.md+ theconnection-pack-no-credential-materialprotocol-tier invariant. Dual evidence (MyndHyve00268-x9l+ openwop-app00160-kjq). - RFCs 0093 / 0094 — protocol hardening + wire-shape reconciliation
Accepted. 0093 pins four security/correctness gaps (webhook delivery-time egress re-validation + the protocol-tierwebhook-cross-tenant-isolationinvariant; signed interrupt-token lifecycle; retryable responses MUST NOT replay from the dedup cache; approval-gate timeout auto-rejects). 0094 repairs published-artifact defects (the unsatisfiablecreateRunschema →unevaluatedProperties:false+ a satisfiability probe;cancellingstatus; vendor-eventanyOfclosure; single-sourcedai.message.chunk; completedInterruptPayload.kindunion;capabilities.grpc+limits.maxRequestBodyBytes). - RFCs 0090 / 0091 / 0092
Accepted. 0090 — agent verifier turn (agent.verifiedevent,verifiercapability,multiAgent.executionModel.version: 6,verifier-no-content-leak); 0091 — multimodal perception input onctx.callAI(content: string | ContentPart[], gated onaiProviders.input.modalities[]); 0092 — agent-levelrequiresCapabilities[]projecting to the RFC 0072degraded[]field. - RFC 0089 — conformance certification bundle
Accepted. Theopenwop-conformance --certifygenerator captures discovery (canonical-JSON SHA-256), derivesclaimedProfiles, records each scenario's terminal state, and never lists a vacuously-run scenario inresults.passed; a real reference-host bundle is committed + round-trip-verified. - Conformance suite —
@openwop/openwop-conformance1.18.1 → 1.25.0 across the cycle (independently versioned, published on its ownopenwop-conformance/v*tags). Carries the RFC 0089–0100 scenario additions (trigger-ingestion, the asynca2a-task-roundtripsubtests,proposal/goal/export-bundle, the five connection-pack scenarios,verifier-gating,callai-multimodal,agent-capability-degraded-projection,webhook-tenant-isolation,version-fold,stream-text-fixture,i18n-negotiation,grpc-transport). - SECURITY invariants — 114 → 125 total (99 protocol-tier). New across the cycle:
verifier-no-content-leak,webhook-cross-tenant-isolation,connection-pack-no-credential-material, the five proposal/goal/export invariants,trigger-ingestion-ssrf,trigger-ingestion-content-redaction,a2a-push-egress-ssrf. - Reference app (now
openwop/openwop-app). Before extraction, the app landed a governed agent-Workforce surface (seeded entity + deterministic synthetic history + metrics/governance/migration-wizard, all under/v1/host/sample/workforces, experimentalx-host-openwop-workforce), the white-label foundation batch (deploy-posture gating, brand stamping,.envleak guards, an explicit-?tenantId=*fix that closed a latent cross-tenantGET /v1/agentsvisibility leak), and a board-rename +guidedautonomy level. Operator surface only — no wire change. - Docs + editorial. Full post-split + post-graduation drift sweeps: status-label normalization onto the
Stable / Stabilizing / Draft / Experimentallegend, SECURITY/RFC count reconciliation, per-host conformance-evidence suite-version syncs, theINTEROP-MATRIX.mdrewrite into a lean public matrix + theGOVERNANCE.md"Acceptance evidence tiers" taxonomy, and post-split path requalification across README/ROADMAP/PUBLISHING.interrupt.mddocumentssuspendas the accepted alias ofinterrupt(additive, host SHOULD expose both).
1.1.7
2026-06-02the Active→Accepted graduation program + agent-platform capstone + SDK parity
The largest graduation cycle since v1.0. The entire agent-platform program plus the bulk of the Active-RFC backlog graduated Active → Accepted on a non-steward host (MyndHyve), closing RFC counts to Accepted 85 / Active 1 / Draft 2. All wire shapes additive per COMPATIBILITY.md §2.1 — no schema, event, endpoint, or MUST change. This coordinated release also publishes the agent-platform read surface to the Python and Go SDKs (which had lagged the OpenAPI surface by 17 methods) and a TypeScript SDK minor. The header is 1.1.7 because 1.1.6 was consumed by an earlier TS-SDK-only npm patch. Full per-RFC history is in each RFC's Updated field, INTEROP-MATRIX.md, and the generated docs/PROTOCOL-STATUS.md.
- Agent-platform program Accepted end-to-end (the capstone). RFC 0085 (
openwop-agent-platformmeta-profile) Accepted, certifying MyndHyve a _full_ agent platform; with 0077/0086/0087/0083 (live manifest dispatch / standing roster / org-chart / durable trigger-bridge) and 0081/0082 (eval suite / deployment lifecycle), the whole program is Accepted on a non-steward host. - Tool-egress, budget, and memory batches Accepted. RFCs 0078/0079 (portable tool catalog + credential-provenance/egress policy), 0084 (budget/quota/cost), and 0068/0080 (memory consolidation + capability reconciliation) graduated on green, non-vacuous gated behavioral scenarios.
- Enterprise + provider + UX RFCs Accepted. 0050 (SAML/SCIM — a real XML-DSig ACS the steward drove over the live wire for all 7 §A variants incl. signature-wrapping, plus SCIM fail-closed), 0067 (provider-catalog auth-modes), and 0066 (
x-openwop-form) + 0065 (outputRole) on genuine reference-frontend consumption. - Steward-side mechanism-codifications (amended criteria, architect-gated). 0069 (exec-class carve-out — RFC 0054 amendment precedent), 0080 (degraded-memory keystone), and 0042 (experimental capability tier) graduated steward-side, where a non-steward advertisement is structurally impossible or would be a false claim on the wire.
- Core Standard Profile (0088) + capability document-root layout (0073) Accepted. 0088 freezes the black-box-proven stable Core floor (0029 prompt-resolution chain + 0059 workspace isolation graduated into the black-box set); 0073 makes the conformance suite _enforce_ the document-root capability layout.
- Earlier-window graduations. RFC 0076 (pack
runtime.requires[]+ hostctx.http.safeFetch, §A + §B), 0072 (agent inventory + dispatch normative surface), 0054 (run diff & execution comparison), 0036 (multi-region idempotency + cross-engine ordering), 0025 (test-mode registry namespace), and 0056 (run feedback & annotations) all reachedAccepted. - Real-isolation WASM sandbox reference host (RFC 0035). New
examples/hosts/wasm-sandbox/executes pack-loaded typeIds as WebAssembly; all 7 testablenode-pack-sandbox-*SECURITY invariants graduatedreference-impl → protocol. RFC 0035 itself staysActive(gated on non-steward adoption by a host that runs untrusted packs). - Conformance suite hardened + advanced to
@openwop/openwop-conformance@1.18.1(published per-package across this window): the agent-platform behavioral gates hardened against vacuous passes (1.17.0), the gated scenarios for every graduated RFC authored + published, the OTel collector-side BYOK-canary inspector + RFC 0041 §C replay-observable assertions landed, and the SAML behavioral leg expanded to the full 7-variant set. - External-audit remediation. The corpus gate now blocks on open high/critical external-audit findings; the 2026-05-31 re-review's seven-item bar was mapped to the gap-closure program; multiple stale
docs/KNOWN-LIMITS.mdrows were retired against landed evidence (multi-region simulation harness, cross-engine CF-8, sandbox-timeout, the open-RFC table). - New normative read surfaces (deferred Accepted-track). OpenAPI + AsyncAPI + TS SDK surface for the roster/org-chart (0086/0087) and eval/deployment (0081/0082) endpoints;
AgentOrgChartDepartment/Role/Member published as named$defs. - SDK parity completed across all three reference SDKs + machine-enforced. A parity audit found those agent-platform read surfaces — plus RFC 0078 tool catalog, run diff, and prompt-template CRUD — had reached only the TypeScript SDK. Ported the 17 missing helpers to
openwop-client(Python) and the Go SDK, and addedtools.list/tools.get+getArtifactacross all three. Newsdk/parity-expectations.jsondeclares a per-SDK status (typed/excluded) for every OpenAPI operation, andscripts/check-sdk-parity.mjs(openwop:checkstep 7) fails on any undeclared route ortyped-surface regression.sdk/PARITY.md's stale "34/34/34 as of 2026-05-15" headline corrected to 44 typed / 4 excluded (the fourpacks-testwrite-mirror operations — a server-side conformance affordance, not a client surface). This release publishes that surface:openwop-client1.1.7 (PyPI) +github.com/openwop/openwop/sdk/gov1.1.7 finally carry the 17 agent-platform methods, and@openwop/openwop1.2.0 (npm — a minor, not a patch, becauseclient.prompts.getnow returnsPromptTemplate | nullto match the other get-by-id helpers + the Python/Go SDKs: a404resolves to the null sentinel while a400 prompt_ref_ambiguousstill throws, so callers can distinguish "not found" from "ambiguous"). The conformance suite stays at 1.18.1 (no new scenarios). The parity gate also gained a word-boundary per-methodsymbolscheck so it catches a single method being deleted from a shared path family. - Reference-app + host-sample. Agents tab + chat mention-symbol surface, durable read-through host-extension stores, cross-instance Kanban SSE fan-out, and a run of code-review / UX-review follow-ups. Rate-limit
429envelope conformance (CF-6): the sample host now emitsdetails.scopefrom the canonical closed enum ("tenant" | "route" | "global" | "key") perrest-endpoints.md §429instead of internal limiter names (which moved to a non-normativedetails.reason), and honorsOPENWOP_FORCE_RATE_LIMIT=trueso the conformance harness can deterministically induce a 429 (rate-limit-envelope.test.ts). - Registry + packs.
core.openwop.http@2.0.0(RFC 0076 §B safe-fetch consumer) signed + published to the in-tree mirror; tarball-signature gate added + unsigned tarballs yanked; agent-pack source-schema$idbumps. - Release infrastructure + doc hygiene. Publish jobs are now idempotent — a corpus
v*tag skips already-published package versions rather than partial-failing (PUBLISHING.mddocuments the property).generate-protocol-status.mjs --writeself-heals the README corpus counts, retiring the giant-status-line merge bottleneck. The[1.1.6 — unreleased]changelog block was collapsed to release-notes shape + renamed1.1.7(1.1.6 was consumed by the TS SDK patch); the committedpublic/site was rebuilt + deployed to openwop.dev to surface the graduations; and theINTEROP-MATRIX.mdpass-rate header was corrected to mark1.15.0as the _last_ re-measurement (the published suite has since advanced to1.18.1; a full re-measurement is pending). - OpenAPI agent-path disambiguation (audit response).
/v1/agents/{agentId}and/v1/agents/{agentId}/deploymentsnow constrainagentIdwithpattern: '^(?!roster$|org-chart$).+$', so it can never collide with the sibling collection routes/v1/agents/roster/{rosterId}+/v1/agents/org-chart/{departmentId}(the path the third-party auditor flagged:/v1/agents/roster/deploymentswas structurally two-way). redocly's purely-structuralno-ambiguous-pathsrule (which can't see the pattern) is scoped off for exactly those two paths inapi/.redocly.lint-ignore.yamlwith a documented rationale — the rule stays enabled globally. Non-breaking:roster/org-chartwere already reserved/ambiguous as literal agentIds. - README published-artifact versions corrected. The "v1.x published artifacts" line pinned all four packages at
v1.1.0; updated to the actual published versions —@openwop/openwop1.1.6,@openwop/openwop-conformance1.18.1,openwop-client(PyPI) 1.1.5, Go modules v1.1.5 — and clarified that the three SDKs hold feature parity even though patch versions diverge (the TS SDK took a 1.1.6 patch for the agent-platform helper surface) and the conformance suite versions independently. - CLI agent-platform surfaces (
@openwop/cli0.1.2 → 0.2.0). The CLI now drives every demo-app protocol surface it previously lacked: \roster\(RFC 0086), \org-chart\(RFC 0087), \kanban\boards + cards (with an SSE \watch\), \orgs\orgs/teams/groups/roles/members RBAC + effective-access (RFC 0049), \workspace\files (RFC 0059 §C real CRUD; the cross-owner test seam is deliberately not exposed), \byok\secret refs (values never returned), and user-defined-agent \create\/\update\/\delete\on the \agents\group. All read commands support \--json\; all destructive commands require \--yes\. Also fixed the stale \--version\constant (reported 0.1.0 on the 0.1.x package) and the pre-existing \agents run\flag-parsing bug where \--task-json\/\--no-validate\never took effect (option keys are camelCased).
1.1.5
2026-05-28OpenWOP CLI launch + chat-channel parity + agent-runtime arc Accepted
Ships the first public release of the OpenWOP CLI to npm, brings channel messaging (Signal · iMessage · WhatsApp · Discord) to feature parity with the in-app AI chat, and closes the agent-manifest-runtime arc end-to-end on a non-steward host. All wire shapes additive per COMPATIBILITY.md §2.1.
- OpenWOP CLI v0.1.0 ships to npm.
npm install -g @openwop/cli— a control-plane CLI for any OpenWOP-compatible host (auth onboarding, capabilities, runs + SSE streaming, prompts · memory · agents · interrupts, channel-relay daemons). Operator-side, independently versioned on its owncli/v*SemVer line; published through the existing OIDC publish pipeline with provenance (a newpublish-clijob mirrorspublish-ts-client). The 4085-line TypeScript bundle runs understrict + noImplicitAny: true; 149node --testcases gate every release. A new/cliroute in the demo app surfaces install + command catalog; a new homepage card onopenwop.dev(§01.5 "Try it from your terminal") links the public to it. - TypeScript + Python + Go SDKs bump 1.1.4 → 1.1.5 in lockstep. Conformance suite moved 1.7.0 → 1.10.0 mid-cycle across 12 net-new scenario files (artifact-type-pack-install, artifact-schema-compile-bounded, chat-card-pack-{execution,manifest-validation}, agent-manifest-runtime, byok-auth-modes, commitment-fired, exec-not-protocol-tier, memory-consolidation-{shape,idempotent}, artifact-type-store-without-render). No wire-shape changes.
- Messaging → AI-chat parity end-to-end. The relay-gateway lands routing enforcement (channel + peer → workflow OR agent), conversation-history threading (
OPENWOP_MESSAGING_HISTORY_LIMIT-bounded turn replay), policy + pairing + allowlist + requireMention enforcement, direct agent dispatch as a routing target (withOPENWOP_MESSAGING_AGENT_DISPATCH_TIMEOUT_MSabort guard), and cross-channel identity unification. A code-review hardening sweep added tenant-scoped pairing/allowlist routes, CSPRNG pairing codes, a requireMention deny-all tripwire, defense-in-depth tenant scoping onlistMessagingTurns, and a?limitclamp on the delivery-log route. Postgres migrations 9-13 land on live Cloud SQL via the deploy ladder. - RFC 0070 + 0072 + 0074 agent-runtime arc closes end-to-end. 0070 (agent-manifest runtime —
agents.manifestRuntime) graduatedActive → Acceptedon MyndHyve production revworkflow-runtime-00394-jun(inventory + dispatch seam wired withtoolSurfaceallowlist filter + attributedagent.reasoned/agent.decided). 0072 (normativeGET /v1/agents) shipped. 0074 (tenant-scoped manifest-agent inventory — additiveinstallScope: 'host' | 'tenant') graduated on multi-tenant revworkflow-runtime-00398-vupwith steward-curl-verifiedA→1 agent, B→empty + cross-tenant 404. The 31 agent manifests on the workflow-engine host become runnable viaagents.manifestRuntime+ AgentRegistry + loader + dispatch. - RFC 0071 (artifact-type packs + chat card packs)
Acceptedoverall. Phase 1 graduated on MyndHyve Phase-1 adoption (16 → 7 reconciled types served asvalidated: true, validation: "open", registrationSource: "host"). Phase 2 graduated on Slice-B revworkflow-runtime-00402-bey— the realcore.chat.cardExecute→ctx.aiEnvelope.generatebinding withhost.aiEnvelopeadvertised +contentTrust: "untrusted"on card-input-derived prompt segments.artifact-type-packs.md+chat-card-packs.mdpromoted DRAFT → FINAL. Two new SECURITY invariants:artifact-schema-compile-bounded+chat-card-input-trust-boundary. - RFC 0073 (capability families are document-root properties of
/.well-known/openwop) reconciles a contradictory discovery layout. The schema rootedagents/secrets/ etc. at the doc root (nocapabilitieswrapper), but ~40 conformance scenarios + 4 reference hosts read nested — no host satisfied both. RFC 0073 lands a normative MUST + root-first conformance accessor; Phases 1-3 migrate 78/78 capability-gated scenarios; all 4 reference hosts (in-memory, sqlite, postgres, python) emit root + a deprecated-mirror viaspread. Phase 4 (drop the wrapper-fallback + nested mirrors) defers to a future minor. - RFC promotions Draft → Active. 0054 (run-diff —
GET /v1/runs/{runId}:diffendpoint + canonical-comparison exclusion list pinned). 0073 (capability-root layout). 0074 (tenant-scoped agent inventory, amends 0072). 0075 (artifact-type-packs real-world adoption amendment, amends 0071 Phase 1 — host-native registration tier,additionalProperties: falseMUST → SHOULD, per-type capability facets). Plus RFC 0071 Phase 2 (chat card packs) before its same-cycle promotion to Accepted. - NEW Draft RFCs filed. 0067 (provider-catalog conventions — additive
aiProviders.authModes+ provider-name vocabulary). 0068 (memory consolidation + standing commitments —agents.memoryConsolidation/agents.commitments+ content-freeagent.memory.consolidated/commitment.firedevents). 0069 (host-extension safety contract forexec-class tools — normative MUST-NOT carving exec out of protocol-tier + theexec-must-not-be-protocol-tierinvariant). All additive. - Registry hardening. Three published
core.openwop.agents.*packs republished as@1.0.1with theirsystemPromptRefbodies now bundled — the bundler droppedprompts/from the tarball at @1.0.0 and an RFC 0003 §C fail-loud host (MyndHyve) correctly rejected them. Newscripts/check-pack-prompt-refs.mjs(wired intoopenwop:checkstep 7) fails CI at build time if any source pack'ssystemPromptRefdoesn't resolve to a bundlableprompts/file. Separately: 81 pack-versionindex.jsonfiles corrected to declare the real publisher signing keys (openwop-team-1,myndhyve-internal-1,community-demo) instead of the staleopenwop-registry-rootdefault;check-registry-signer-consistencyguard added. - Reference workflow-engine:
/readinessreports managed-provider health. Whenproviders.jsonadvertises amanaged: truetier (e.g.,openwop-free) but its server-held key was never seeded,/readinessreturns503 { status: "degraded", checks: { managedProviders: [...] } }with a per-providerdetailnaming the env var to set. Catches a dropped/unmounted-secret class of outage at deploy time instead of waiting for the first failed run. - Honest deferrals + corrections. RFC 0054 (run-diff) stays
Active— graduation toAcceptedawaits a non-steward host advertising the endpoint. RFC 0072 graduation awaits a second cross-language host. The RFC 0073 wrapper-fallback removal (Phase 4) defers to a future minor. Thev1.1.4tag from 2026-05-26 silently did not trigger the publish workflow (no run record); thisv1.1.5corpus-aligned tag catches the TS SDK / Python / Go / conformance up.DEPLOY.md§6 corrected — the from-scratch--env-vars-file+--set-secretsform was a footgun for live redeploys; safe-redeploy recipe documented separately. - Site updates. Homepage
§01.5 "Try it from your terminal"card onopenwop.devintroduces@openwop/cliwith a dark-bg install snippet + capabilities list + deep-link to the in-app/clicommand catalog.PUBLISHING.mdartifact table gains the CLI row noting independent SemVer +cli/v*tag pattern.
1.1.4
2026-05-26MyndHyve cohort live + autonomous-agent-runtime cohort + 19 RFC graduations
Closes the first full week of post-1.1.3 cross-host adoption: the 8-RFC MyndHyve protocol-extension cohort + the 5-RFC autonomous-agent-runtime cohort all reach Accepted on production non-steward implementations, the multi-agent execution-model version: 1-4 ladder closes end-to-end, and three rounds of MyndHyve advertisement land RFCs 0028 / 0029 / 0040 / 0041 / 0055 / 0057. All wire shapes additive per COMPATIBILITY.md §2.1.
- TypeScript SDK 1.1.4 (
@openwop/openwop) publishes the RFC 0057memory.writtentyped event helper + the round-2 SDK-migration finishers (runsClient/interruptsClient/promptsClient/streamsClienton the published SDK, debug-bundle reverted to SDK after 1.1.3's regression). Python (openwop-client) and Go (openwopclient) bump in lockstep. No wire-shape changes. - Conformance suite
@openwop/openwop-conformance1.5.0 → 1.6.0 → 1.6.1 → 1.7.0. 1.6.0 ships the 28 RFC 0045–0054 cohort scenarios; 1.6.1 patches a stalesecrets.scopesallowlist inredaction.test.ts; 1.7.0 lands the autonomous-agent-runtime cohort coverage (+1 net-new scenario file plus per-RFC behavioral additions). Bundled synthetic SAML IdP fixture lands closing the RFC 0050 deferred conformance gap. - MyndHyve protocol-extension cohort live in production (8 RFCs Draft → Accepted in one day). RFCs 0045 (connector pack manifest), 0046 (
host.credentials), 0047 (host.oauth), 0048 (tenant·workspace·principal identity model), 0049 (RBAC scopes +authorization.decided), 0051 (approval & deployment-gate primitive), 0052 (scheduling & time-based triggers), 0053 (dead-letter routing) all graduated on MyndHyve workflow-runtime revision00211-69wagainst@openwop/openwop-conformance@1.6.0— 28 PASS / 0 FAIL (commit85275cdfon the MyndHyve side). RFC 0050 (SAML/SCIM) + 0054 (run-diff) stayDraftper documented MyndHyve opt-outs. - MyndHyve round-3 graduations (3 RFCs Active → Accepted 2026-05-26). Revision
workflow-runtime-00217-q7cadvertisescapabilities.prompts.agentBindings: true(RFC 0029),aiProviders.maxInlineMediaBytes: 10485760+modelCapabilities.advertised: ['vision-input', 'image-output'](RFC 0055), andcapabilities.memory.attribution.{supported: true, emitsWriteEvents: true}with canonicalmemory.writtenevent dual-emitted alongside vendorx-host-myndhyve-memory-written(RFC 0057). Curl-verified onhttps://workflow-runtime-gjw5bcse7a-uc.a.run.app/.well-known/openwop. - Multi-agent execution-model roadmap CLOSED end-to-end on a non-steward host. RFC 0040 (Phase 3 cross-host causation) + RFC 0041 (Phase 4 replay determinism) graduated Active → Accepted on MyndHyve's
multiAgent.executionModel.version: 4advertisement +replayDeterminism.{supported: true, llmCacheKeyRecipe: "spec-rfc-0041", refusalDivergenceEmission: true}block. Theversion: 1-4ladder is fully production-validated;version: 5(RFC 0061) opens the autonomous-agent-runtime extension. - Autonomous-agent-runtime cohort (7 RFCs filed + 5 graduated). RFCs 0058 (run-execution bounds), 0059 (agent workspace), 0060 (
host.heartbeat), 0061 (stateful agent-loop lifecycle,executionModel.version: 5), 0062 (memory.distillation"dreams"), 0063 (core.subWorkflow.outputAttestation), 0064 (host.toolHooks) filedDraftwith Phase-0 architect-decision-batch clearance. Within the cycle: 0059/0060/0062/0063/0064 graduated Draft → Active → Accepted via in-memory reference-host M2 enforcement (each ships the documentedPOST /v1/host/sample/*seam + all scenarios green); 0058 + 0061 graduated toActivepending second-host M2 enforcement. - RFC 0028 Tier-2 post-promotion strengthening. Workspace-membership normative + canonical
workspace_membership_required403 envelope error code + 2 new protocol-tier SECURITY invariants (prompt-mutation-workspace-membership-enforced,prompt-read-workspace-membership-enforced), filed in response to a self-disclosed adopter Admin-SDK-bypasses-DB-rules vulnerability — workspace gating now uniformly enforced across write + read paths. - Reference-host milestones across all four hosts. in-memory: 5 M2 host surfaces (RFC 0059/0060/0062/0063/0064). Postgres: RFC 0026 cost-attribution + RFC 0031 model-capability gate + RFC 0040 Phase 3 cross-host causation + RFC 0056 feedback + RFC 0057 memory.written + RFC 0058
runTimeoutMsenforcement. SQLite: ports RFC 0022 dispatch/subWorkflow + 0026 + 0031 + 0056 + 0057 + 0058 from Postgres. Reference workflow-engine advertisescapabilities.memory.attribution.emitsWriteEvents: true+ emits on run-summary write. RFC 0031 model-capability gate-decision test seam lands on Postgres flipping the synthetic assertions live. - Reference-app — 6 plan items closed end-to-end. Items #12 (pre-flight workflow validation against advertised engine limits), #13 (dedicated audit-log viewer page at
/runs/:runId/audit), #15 (multi-turn conversation panel consumingconversation.{opened,exchanged,closed}events), #16 (A2A peer placeholder, forward-compat), #20 (Publish-to-registry helper banner), #25 (sticky-note canvas annotations via newclientOnly: trueNodeCatalogEntryflag). The app-buildable plan closes at 23 ✅ / 2 🟡 / 0 ❌; the two 🟡 items are structurally unblockable from the openwop side and tracked indocs/myndhyve-round-2-handoff.md. Multimodal renderer (RFC 0055 §C consumer), media-emitting demo node, persistent HITL artifact cards, notification-system rewrite (Web Push + OS notifications + preferences + quiet hours + flagged review queue) all ship in the same cycle. vendor.myndhyve.brand@1.1.0— first non-stewardx-openwop-formpack (PR #232). Pilot annotation onbrand.persona.discover.config.jsonaddsprovider-picker+model-picker { dependsOn: ["provider"] }(RFC 0066 normative cascade-clear). Path-to-Accepted for RFC 0066 unlocks once MyndHyve re-pins the newmanifestHash. Bonus:scripts/emit-pin-json.cjsemits the 7-hash pin-block JSON for any registered pack version.- +8 protocol-tier SECURITY invariants (94 → 102 total; 68 → 70 protocol-tier graduated to gate-verified). New:
authorization-fail-closed(RFC 0049),prompt-{mutation,read}-workspace-membership-enforced(RFC 0028 Tier-2 — paired with a self-disclosed adopter vulnerability close-out),media-asset-url-tenant-scoped(RFC 0055),memory-attribution-{no-content,tenant-scoped}(RFC 0057),workspace-cross-tenant-isolation(RFC 0059 M2),subrun-merge-approval-fail-closed(RFC 0063 M2). Every protocol-tier MUST-NOT has at least one public test inconformance/src/scenarios/. - NEW Draft RFCs filed (12). 0050 (SAML/SCIM enterprise identity profiles), 0054 (run-diff & execution comparison), 0055 (multimodal envelope variants), 0056 (run feedback & annotations), 0057 (memory write-attribution), 0058–0064 autonomous-agent-runtime cohort (run-execution bounds / agent workspace / heartbeat / stateful agent-loop / memory.distillation / subWorkflow attestation / host.toolHooks), 0065 (workflow node primary-output annotation — advisory
outputRole: "primary" | "secondary"for chat-surface deterministic-artifact picking), 0066 (x-openwop-formvendor extension on packconfigSchema). - Honest non-graduations + opt-outs. RFC 0058 wall-clock arm took two rounds — MyndHyve initially advertised
maxNodeExecutionsin error, honestly retracted viadocs/openwop-adoption/rfc-0058-round-3-retraction.md, then landed the real arm on 2026-05-26 (limits.maxRunDurationMs: 600000now advertised;maxLoopIterations: nullhonestly absent — host attests run-create clamping + canonicalcap.breached { kind: 'run-duration' }emission). RFC 0058 staysActivepending second-host adoption. RFC 0035 (sandbox), 0036 (multi-region), 0050 (SAML), 0054 (run-diff) opt-outs documented atdocs/openwop-adoption/round-3-closure-2026-05-26.mdwith re-evaluation criteria. RFC 0058 round-3 closure agreement loop documented atdocs/openwop-adoption/rfc-0058-round-3-retraction.md. - Multi-agent "Phase N" → version-tagged rename + site regenerated. External-facing prose drops internal "Phase N" labels for the multi-agent execution model in favor of the wire-shape
version: Nidentifier (per the 2026-05-24 external-reader feedback). Siteopenwop.dev/spec/v1/*regenerated to pick up RFC 0045–0057 + cohort promotions + 404 page (PR #164). Reference-app SDK migration finished —runsClient/interruptsClient/promptsClient/streamsClientall on the published SDK (cookie-mode SSE stays on native EventSource pending an SDKcredentials: 'include'hook).
1.1.3
2026-05-23coordinated SDK release for first cross-host adoption
Closes the workflow-engine reference-host pass-rate inflation that the 2026-05-22 external standards-readiness review flagged, lands first non-steward host adoption of four RFCs, and ships the Phase 4 behavioral harness end-to-end. All wire shapes additive per COMPATIBILITY.md §2.1.
- TypeScript SDK 1.1.3 (
@openwop/openwop) publishes coordinatedparseRefusal()+buildReasoningDirective()helpers. Python (openwop-client) and Go (openwopclient) bump in lockstep. No wire-shape changes. - Workflow-engine reference host pass-rate 80.9% → 95.5% via two bundled-path bugfixes (
envelopeAcceptor.tsschema lookup +promptStore.ts/promptCompose.tsfixtures lookup) — both cases of__dirname + '..' × Novershooting under the esbuild-bundled tree. New shared_repoPath.ts::locateRepoDir()helper + 5-test regression guard. The inflated 129-failure number was a cascade from a singleENOENTcrash, not 129 real conformance gaps. - RFC 0041 §B Phase 4 closes — replay-divergence-at-refusal executor wiring lands the last
it.todofrom the 5-track audit harness. The workflow-engine's:fork mode: replaypath now emitsreplay.divergedAtRefusaland fails witherror.code: 'replay_diverged_at_refusal'when an envelope kind diverges between source and replay (both directions). Gated onOPENWOP_MULTI_AGENT_EXECUTION_MODEL_PHASE_4=true. RFC 0041 path-to-Accepted opens (gate: second host advertisingmultiAgent.executionModel.version: 4). - Phase 4 behavioral harness — Tracks 1/2/5/6/7 + RFC 0042 close. Three new HTTP test-seam endpoint families on the reference workflow-engine drive five new conformance scenarios: multi-region partition simulator, cross-engine append-ordering harness, sandbox MVP (7-of-8 RFC 0035 §B invariants), secret-leakage OTel-attribute coverage, RFC 0042 experimental-tier shape probe. Suite scenario count 205 → 210. NEW
spec/v1/host-sample-test-seams.md§6–§8 documents the new seams normatively. - First non-steward cross-host adoption. MyndHyve (
api.myndhyve.ai) ships Tier-1 advertisements for RFC 0021 (envelope), RFC 0027 (prompt templates withobservability: 'full'), RFC 0028 (read-only prompt library), RFC 0029 (override hierarchy, node layer), RFC 0034 (OTel test seam, empty-buffer Tier-1), RFC 0039 Half B (memory lifecycle MAE-2 + MAE-3,crossChildMemoryConcurrency: 'strict'), RFC 0040 Sub-5b (MCP API-key auth). Verified live against/.well-known/openwop. - RFC promotions Active → Accepted (5 total this release): 0027 (prompt templates) — first non-steward
prompts.supported: true+observability: 'full'; 0034 (OTel collector test seam) — first non-steward Tier-1 seam-shape adoption; 0037 Phase 1 (multi-agent execution model) — first vendor-neutral validation signal; 0039 Half A (multi-agent confidence + memory lifecycle) — cross-host evidence via MyndHyve commitc4342b5bagainst suite v1.5.0; 0044 (confidence-escalation interrupt-kind advertisement, clarification to RFC 0039 §A). - NEW Draft RFCs. 0042 (experimental capability tier —
tier ∈ {stable, experimental}+experimentalUntil≤ 12-month sunset + derivedopenwop-experimentalprofile + conformance soft-skip routing under default mode). 0043 (registry + extension policy + IPR posture — consolidates DCO + Apache-2.0 + CC-BY-4.0 + namespace reservation rules). - Vendor-namespace pattern locked. MyndHyve picked Option 1 (
x-host-myndhyve-memory-written) perhost-extensions.md§"Canonical prefixes" for host-private SR-1 audit events. Preserves wire-shape compat with strict RunEventType validators; the canonicalize-via-RFC path stays open for any second host that wants the same shape. - Honest correction —
registerHostSampleRouteswire-up bug. MyndHyve's/v1/host/sample/*routes were deployed for days but never wired into the runtime (404 in production until commit60b569de). Four seams affected (RFC 0027 §E compose, RFC 0041 §A cache-key, RFC 0021 envelope-accept, RFC 0034 OTel scrape). All four now exercisable end-to-end; RFC 0027 status stays Accepted (the advertisement was real; the bug was wire-up, not logic). - Audit response artifacts. NEW
docs/AUDIT-RESPONSE-2026-05.md(point-by-point reply to the 2026-05-22 external review with calendar tripwires). NEWdocs/CONFORMANCE-RUNS-2026-05.md(re-measurement of all 4 reference hosts against@openwop/openwop-conformance@1.4.0+ per-failure taxonomy). NEWdocs/PHASE-4-PROGRESS.md(Phase 4 close-out accountability with closing-commit citations). - Conformance suite 1.4.0 → 1.5.0. RFC 0044 vendor-kind routing relaxation splits one strict-equality assertion into discrete
it()blocks (+6 tests, +6 passes). Postgres 1473/1564 (94.2%), SQLite 1486/1564 (95.0%), in-memory 1445/1564 (92.4%), Python 1387/1564 (88.7% total / 100% of applicable). - Reference workflow-engine + sample-app polish. Real-LLM default in the builder (
vendor.openwop-sample.chat-responderreplaces the deterministicmock-ainode + managedopenwop-freecredential tile by default); Copy/Export buttons on the event-stream view; Cloud Run deploy-plumbing close-out (vendoredschemas/+ dual-mountconformance-fixtures/so the bundled host resolves sibling-repo paths under/app/lib);.gitignorefor harness runtime state (.db-shm/.db-wal,.byok-master-key,host-fs/). - Site shipped at openwop.dev (2026-05-21). 13 new content pages + REST API explorer (Redoc) + AsyncAPI + gRPC transport explorers + JSON-LD
TechArticlestructured data on every spec doc. Star-on-GitHub CTA in the marketing footer.
1.1.2
2026-05-21gap-closure batch + envelope-hardening track + ecosystem launches
The first patch release after v1.1.1 closes every gap from the 2026-05-19 → 2026-05-21 batch covering the envelope LLM-contract-hardening RFCs, the prompt-library track, the dispatch primitives, the multi-agent execution model, the agent-pack catalog, and the marketing-site launch at openwop.dev. All wire shapes additive per COMPATIBILITY.md §2.1.
- TypeScript SDK 1.1.2 (
@openwop/openwop), Python (openwop-client), Go (openwopclient) all bump in lockstep. Conformance suite@openwop/openwop-conformance1.1.1 → 1.4.0 over the release window (1.2.0 / 1.3.0 / 1.4.0 minor bumps for new behavioral scenario families). - Marketing site shipped to openwop.dev (2026-05-21). First public surface for the protocol. Multi-page spec corpus rendered from
spec/v1/*.md, demo card, Star-on-GitHub CTA. Companionapp.openwop.devworkflow-engine sample app deployed in parallel. spec/v1/ai-envelope.mdDRAFT → FINAL v1.1 (2026-05-18). Closes the AI Envelope specification gap that was the largest remaining v1.0-era hole. Normative for envelope-acceptor wire shape, refusal kinds, capability stacking, and SR-1 secret redaction.- Envelope-hardening track (RFCs 0030–0033) filed + promoted Draft → Active → Accepted in 4 days (2026-05-20 → 2026-05-21). 0030 envelope
reasoningfield + Tier-1 structured-output subset. 0031 envelope variant discrimination + model-capability declarations. 0032 envelope-reliability run-event vocabulary. 0033 envelope-completion contract (truncation vs schema-violation retry routing). Reference-host emission landed indispatchStructured(); conformance scenarios cover all four RFCs end-to-end. - Prompt-library track (RFCs 0027 / 0028 / 0029) filed Draft + promoted Active (2026-05-19 → 2026-05-20). RFC 0027 (prompt templates) reference-host implementation + Phase A wire shape + 4-kind dispatch wiring +
slotIndexcorrectness. RFC 0028 (prompt library endpoints) reference-host/v1/prompts*endpoints + PromptStore + example prompt pack. RFC 0029 (prompt override hierarchy) four-layer resolver +/v1/host/sample/prompt/resolveseam. RFC 0027 §F shareddivergencePointschema diff. - Multi-agent track filed Draft. RFC 0035 (sandbox execution contract), RFC 0036 (multi-region + cross-engine), RFC 0037 (multi-agent execution model Phase 1 — first vendor-neutral validation tripwire), RFC 0039 (multi-agent Phase 2 confidence-floor escalation + memory lifecycle MAE-2/MAE-3), RFC 0040 (Phase 3 cross-host causation), RFC 0041 (Phase 4 replay determinism under nondeterministic models). RFC 0037 Phase 1 promoted Draft → Active same day with reference-host wiring + behavioral conformance.
- RFC 0034 (OTel collector test seam) filed Draft → Active (2026-05-21). Replaces the failed POST-based shape with a GET-based scrape after the standards-readiness review surfaced the POST→GET reconciliation gap.
- RFC promotion cohort Active → Accepted (15 RFCs): 0013 (workflow-chain packs — Draft → Active → Accepted same day on Phase 4 in-tree example landing); 0014–0021 graduation cohort (8 capability RFCs — behavioral conformance via opt-in test seam); 0022 (
core.dispatch+core.subWorkflowruntime variable mapping — Postgres reference impl + dispatch trio); 0023 (conformance agent-event emitters); 0024 (streamingagent.reasoneddeltas + SDK typed-helper rollout); 0026 (provider.usageevent — filed Draft → Active → Accepted same day); 0030 / 0031 / 0032 / 0033 envelope-hardening track promoted Active → Accepted at the close of the release window. - 5 new Draft RFCs filed against the 2026-05-21 standards-readiness review findings. Each maps to a specific audit finding; full close-out lands in 1.1.3's Phase 4 harness work.
- Agent pack catalog (4 tiers, 28 packs total). Phase 1 — Tier 0/1 foundations (9 packs). Phase 2 — Tier 2 productivity skills (5 packs). Phase 3 — Tier 3 vertical agents (10 packs). Phase 4 — Tier 4 crews + skills-bridge (4 packs). Catalog seeded with reference manifests + signing material for downstream registry publication.
- **17
core.openwop.*packs published topacks.openwop.dev** under steward-internal pre-audit (2026-05-17). First non-trivial registry population. Includes pre-publication triage finding:core.openwop.http@1.1.2(idempotency-key generator made deterministic),core.openwop.data@1.2.1+core.openwop.crypto@1.0.2(correctness fix for nodes mis-declared aspure),core.openwop.ai@1.1.1+core.openwop.crypto@1.0.3(defensive parsing of model output + JWT shapes),core.openwop.ai@1.1.2+core.openwop.mcp@1.1.1(UNTRUSTED-marker discipline onctx.trustBoundary='untrusted'runs),core.openwop.agents@1.0.1(raw-JS tool handler — closesOPENWOP-AUDIT-2026-003). Oldcore.openwop.ai@1.1.1+core.openwop.mcp@1.1.0marked deprecated. - Pack patches: SSRF + JWT alg-confusion fixes (P0.1) (2026-05-17). Yank-and-republish on the affected versions.
- Workflow-chain packs (RFC 0013) — Phases 1–4 land in sequence. Reference example at
examples/branching-workflow/. Phase 4 in-tree example demonstrates chain-pack composition end-to-end. apps/workflow-engine@P3— Firebase Auth signup + Cloud SQL persistence + KMS-encrypted BYOK (2026-05-17). Production rollout fixes (post-mortem) (2026-05-18). First fully-managed reference deployment serving as theapp.openwop.devsurface.- Workflow-engine sample app — 30+ feature commits covering: BYOK canary echo node + provisioning,
core.channelWrite+ append-with-TTL reducer,capability_not_providedrefusal contract, idempotency body-hash mismatch, quorum-aware approval gate,recursionLimit+conversationPrimitiverefusal,core.subWorkflowexecutor + variable mutation seam, JSON content negotiation,getWorkflowendpoint + strictstreamModevalidation, bulk-cancel endpoint + idempotency replay header, MCP discovery shape + approval resume validation, fixture input-port → variable resolution, credential-shape redaction, cache hit semantics + debug-bundle endpoint, fs absolute-path rejection +kv.cascanonical shape, events/polllastSequence+ SSEbufferMsaggregation, prompt-library UI staging, managed "Try it free" provider tile, RFC 0022 dispatch cluster, parent/child cancel-cascade interrupt profile, external-event interrupt support, AI chat viewport-lock + Lucide thumbs icons. - Storage adapter parity harness — SQLite vs Postgres via
pg-mem(2026-05-18) + real Postgres via@testcontainers/postgresqlfor end-to-end behavioral fidelity. Closes the storage-adapter parity gap from the v1.1.0 close-out. - Conformance close-outs: 7
aiEnvelope.scenarios graduated from shape probes to behavioral assertions (2026-05-18);agent.toolReturnedcausationId pairing tightened; envelope-trackit.todoplaceholders drained (sub-tracks E + E2 + A.reasoning-redaction);OPENWOP_REQUIRE_BEHAVIORwired across the prompt-\ scenario family; soak-gate close-out (opt-out axes + SQLite artifact stub). - Untrusted-content propagation, persisted envelope-correlation dedup, downstream-LLM untrusted-content wrap, envelope-contract capability stacking refusal, approval-gate trust-boundary refusal — five protocol-tier behavioral hardening rows close in the sample-host (2026-05-19).
1.1.1
2026-05-15post-1.1.0 additive cleanup + RFC 0012
Six additive commits landed on main after the v1.1.0 release tag. None changes a wire shape; all ship in a 1.1.1 patch when the registry SDKs are next published. Two close adopter-experience footnotes (lockfile demo + community pack re-sign), one closes a conformance-probe scope limit (MCP transports), and three close the RFC-process self-acceptance loop (0008 promotion + node-packs §WASM cross-link, 0001 promotion + CHANGELOG status drift fix).
- Workspace lockfile demo (
daeaef5) —examples/core-packs-lockfile/openwop-pack-lockfile.json+ README pins the 4 audit-gated core packs (core.openwop.{ai,http,mcp,triggers}@1.0.0) using thepack-lockfileschema. Demonstrates SRI integrity + Ed25519 signature material for offline / air-gapped resolution. Closes the controllable half of the "build + sign + lockfile in-tree" Phase E task; the audit-blocked half (publication topacks.openwop.dev) remains gated onSECURITY/external-audit-engagement.md§2.1. community.openwop-team.demore-signed (0bf08cc) — Option-B reconciliation of a 3-way signing-identity drift. The demo pack now ships signed bycommunity-openwop-team-demo-1(over canonicalpack.json) instead ofopenwop-registry-root(over tarball), matching PACKS-MVP-PLAN.md §211's per-tier-key intent and illustrating the per-publisher-identity pattern. Newregistry/keys/community-openwop-team-demo-1.pub+signingKeys[]entry inregistry/.well-known/openwop-registry.json(namespace-scoped tocommunity.openwop-team.demoonly — cannot sign forcore.orvendor.). Canonical verifier (registry/scripts/verify-signatures.mjs) passes 29/29.- MCP probe scope-limit footnote closed (
beb5ae6) — all three MCP transports now verified end-to-end against@modelcontextprotocol/sdk@1.29.0. SSE-streamed responses verified via the same SDK withoutenableJsonResponse(probe's existingreadSseUntilIdcorrelates frames by JSON-RPC id). Stdio transport — HTTP-incompatible by design — exercised via the newexamples/mcp-stdio-bridge/shim that wraps any newline-delimited-JSON-RPC stdio server as HTTP for the probe (bundledecho-stdio-server.mjs+ per-session-id child-process lifecycle; 2/2 pass).INTEROP-MATRIX.md§"Composition partners" MCP row +spec/v1/mcp-integration.md§"Conformance + interop" +docs/PROTOCOL-GAP-CLOSURE-PLAN.mdTrack 6 all updated to retire the previous scope-limit language. - RFC 0008 (WASM ABI) promoted Active → Accepted (
6118cce, 2026-05-13) — all 8 acceptance-criteria items satisfied. The one previously-stuck gap (spec/v1/node-packs.md§"WASM runtime" cross-link) landed in the same commit with a 6-scenario coverage table mapping eachwasm-pack-*.test.tsto its RFC 0008 anchor. The previously-staleOpen spec gapsrowNP1 — WASM ABI for language: wasm packsflipped to ✅ closed. README + CHANGELOG status banners refreshed to reflect 0008/0009/0010/0011 all Accepted. - RFC 0001 (RFC process) promoted Active → Accepted (
20e0d1c, 2026-05-13) — closes the meta-RFC's self-acceptance loop. All 6 acceptance-criteria items confirmed:RFCS/README.md+0000-template.md+ this file shipped together;GOVERNANCE.mdcross-referencesRFCS/at five locations;CHANGELOG.mdrecords the RFC process landing;rfcPR label created in the public repo (#5319e7purple, description references the process RFC). Subsequent normative additions land under standard RFC review rather than the bootstrap waiver pattern. Same commit fixed CHANGELOG status drift for RFCs 0009/0010/0011 (had been stale atActiveeven though all three were promoted toAccepted2026-05-12). - Final RFC ladder state (2026-05-13): RFCs 0001–0011 all
Accepted(11 total). 0000 is the template scaffold; 0012 (memory compaction) is parallel-sessionDraft. Every RFC with a satisfied acceptance checklist is now promoted. - RFC 0012 (Memory Compaction Profile) Active → Accepted (2026-05-15) — comment window waived per
CONTRIBUTING.md§"Bootstrap-phase notes" (sole-steward repo, no non-steward maintainer of record, no external commenters during the 48h the window was open). All 6 acceptance criteria satisfied at promotion time. RFC ladder state: 0001–0012 allAccepted(12 total). 0000 is the template scaffold. Future RFCs revert to the canonical 7-day comment window onceMAINTAINERS.mdlists a non-steward maintainer. - RFC 0012 (Memory Compaction Profile) Phase 3 prep landed 2026-05-14 (promoted to
Accepted2026-05-15 under the bootstrap waiver above):
- Reference host — examples/hosts/postgres/src/memory-adapter.ts gains runCompaction + applyCompactionRedaction + REFERENCE_COMPACTION_CAPABILITY. Server.ts conditionally advertises capabilities.memory.compaction when OPENWOP_MEMORY_COMPACTION=true and exposes the test seam at POST /v1/test/memory/{seed,compact} when OPENWOP_TEST_TRIGGER_COMPACTION=true. SR-1 carry-forward (RFC 0012 §D) honored by re-substituting [BYOK:...] form-leaks + non-canonical <REDACTED:...> markers with [REDACTED:carry-forward-<n>] BEFORE the derived entry persists. Output entries carry the compacted-from:<id> provenance tag per §C. - 3 conformance scenarios — memory-compaction-event-emitted.test.ts (canonical §B payload shape), memory-compaction-sr1-carry-forward.test.ts (load-bearing §D — replaces the Phase 2 it.todo() stub), memory-compaction-provenance-tag.test.ts (soft assertion on §C). All three gate on capabilities.memory.compaction.supported + test seam reachability. 3/3 pass live against the Postgres reference host. - Host smoke — examples/hosts/postgres/test/memory-compaction.test.ts verifies 7 paths end-to-end (advertisement + seed + compact + outputId readability + SR-1 §D + provenance + empty-noop).
- RFC 0012 (Memory Compaction Profile) Draft → Active (2026-05-13) — opens the 7-day public comment window (closes 2026-05-20). New optional
capabilities.memory.compactionadvertisement +memory.compactedcanonical event + SR-1 carry-forward invariant for any host that distills short-livedMemoryEntryrows into longer-lived ones. Additive perCOMPATIBILITY.md§2.1. - Tarball-fetch + signature-verify roundtrip vs
packs.openwop.dev(2026-05-13) —conformance/src/scenarios/registry-public.test.tsgains a 4thdescribeblock that fetchescore.openwop.examples@1.0.0's tarball +.sig+ publisher public key from the live registry, asserts SRI integrity matches a fresh SHA-256 of the tarball bytes, and runs Ed25519 verification pernode-packs.md§"Signing recipe" (method=ed25519signs the whole tarball). Closescoverage.mdrow 34's "Remaining: tarball-fetch + signature-verify roundtrip" gap. 6/6 tests pass against livepacks.openwop.dev. - Strict-mode opt-out signaling (2026-05-13) — new
OPENWOP_OPTED_OUT_PROFILES=name1,name2env var consumed byconformance/src/lib/behavior-gate.tsdistinguishes "host opted out (honest minimal posture)" from "host claims but doesn't deliver (bug)". Strict mode (OPENWOP_REQUIRE_BEHAVIOR=true) skips opted-out profiles with a "honest opt-out" log line instead of failing. SQLite + Python reference hosts can now achieve strict-mode green without falsifying capability claims. Advertise + opt-out conflict surfaces a loud warning so typos don't mask real bugs. - Batch A — adopter-facing prose refresh (2026-05-13):
- examples/hosts/postgres/conformance-full.md + INTEROP-MATRIX.md re-measured against suite v1.1.0 with conditional-profile env vars: 781/850 (91.9% total, 95.2% of non-todo, 96.4% of applicable) — up from 728/797 the prior measurement. +53 scenarios + +53 passes net of Phase H/I capability surfaces + 9 stage5 vendor packs. One failure remains: documented webhook-signed-delivery flake (passes in isolation; full-suite timing collision). - docs/migration/v1.0-to-v1.1.md — new adopter-facing "what's new" guide. Documents v1.1 as purely additive per COMPATIBILITY.md §2.1: every v1.0 conformance pass remains valid, no code changes required for v1.0 implementations. Per-capability sections walk through Phase H (BYOK / AI providers / MCP / HTTP / cap-breach kinds) + Phase I (memory / agents / auth profiles) + Phase G (spec-corpus close-out) with cross-links to RFCs + conformance scenarios. Linked from README.md §"Document index". - ROADMAP.md §"v1.2 outlook (projected)" — new gate-conditioned projection of v1.2 candidates: RFC 0012 memory compaction, WASM Component Model sub-RFC, Rust SDK v0.1 (demand-gated), 4 audit-gated core.openwop.* packs, cross-host SSE replay, mTLS termination on Postgres, multi-region idempotency end-to-end fixture. Each item carries its specific gate (RFC comment window / external audit / capability flag / adopter ask) — no fixed calendar; items move to next minor or Withdrawn if no signal. - sdk/python/QUICKSTART.md + sdk/go/QUICKSTART.md — new 5-minute end-to-end walkthroughs that boot the in-memory reference host on your laptop, run a workflow against it, and read the event log. Both READMEs link to the new quickstarts.
- Batch C — conformance coverage close-outs (2026-05-13):
- Multi-region idempotency convergence-rule resolver (Track 13) — new examples/hosts/postgres/src/multi-region.ts ships the canonical algorithm for idempotency.md §"Multi-region idempotency" §"Convergence rule": lex-min(runId) wins, losers get run.cancelled { reason: 'cross_region_dedup_loss' }, every region's cache redirects to the winning runId. Pure function — same inputs → same outcome regardless of caller order, region, or wall clock; two regions running the resolver independently arrive at the same survivor without coordination. Smoke test (test/multi-region-idempotency.test.ts) verifies 6 paths including label-determinism for the operator-tier openwop.idempotency.cross_region_conflicts_total counter. Conformance scenario (multi-region-idempotency.test.ts) extended to also verify that hosts claiming crossRegion: 'best-effort' or 'strict' advertise the operator metric per §"Operator surface". The Postgres reference host stays single-region (crossRegion: 'single-region'); the resolver is operator-adoption-ready for any future multi-region host. - Cross-host trace-context propagation across core.subWorkflow (Track 11 remaining row) — new conformance/src/scenarios/otel-trace-propagation-subworkflow.test.ts closes the previously-partial gap on coverage.md row 52. Asserts: when a parent run is started with an inbound traceparent and contains a core.subWorkflow node, the dispatched child run's spans MUST share the parent's traceId. Distributed traces stitch across the dispatch boundary without operator-side correlation hacks. Gates on capabilities.observability + conformance-subworkflow-parent fixture advertisement + OPENWOP_OTEL_COLLECTOR=true. coverage.md Observability row + per-scenario row both flipped to A (full coverage).
- Batch B — Postgres reference host additive surfaces (2026-05-13):
- Phase I.2 reasoning-event emission wiring — Postgres host's core.llm.chat / core.llm.completion executors now emit agent.reasoned (verbosity-gated per RunOptions.configurable.reasoningVerbosity → host default fallback "summary" with 512-token cap) + agent.decided (confidence ∈ [0,1]) after a successful AI-proxy call. core.mcp.toolCall emits agent.toolCalled BEFORE the call (carrying argumentsSha256) and agent.toolReturned AFTER (paired via shared callId, with outcome.{resultSha256,resultLength,isError,durationMs} on success or error.{code,message} on failure). SR-1 + MCP-1 preserved end-to-end: only SHA-256 digests + lengths + outcome flags appear on payloads — never raw tool arguments or result content. Verified by examples/hosts/postgres/test/reasoning-event-emission.test.ts via two new host-private fixtures (loaded through the OPENWOP_EXTRA_FIXTURES_DIR test seam — these typeIds are implementation-specific and not yet protocol-normative). - Phase I.7 mTLS termination — Postgres host now claims openwop-auth-mtls end-to-end when OPENWOP_MTLS_CERT_PATH + OPENWOP_MTLS_KEY_PATH are set. HTTP listener switches to node:https.createServer({ requestCert: true, rejectUnauthorized: OPENWOP_MTLS_REQUIRED !== 'false' }); OPENWOP_MTLS_CA_PATH is optional (when present, only client certs signed by that CA bundle pass the handshake). Discovery emits capabilities.auth.mtls.{supported: true, required: <bool>, subjectMapping: 'cn'} only when configured (honesty principle). Verified end-to-end by test/mtls.test.ts (advertisement shape + valid-cert 201 + no-cert TLS handshake rejection). The existing conformance/src/scenarios/auth-mtls.test.ts now flips from "Not claimed" to a verified positive path when the Postgres host is launched with OPENWOP_MTLS_* configured.
1.1.0
2026-05-12OpenWOP v1.0 close-out + additive features
The close-out release for v1.0. The protocol contract was frozen on 2026-05-08 (see the spec-freeze entry below) and first published as v1.0.0 on 2026-05-11 (see entry below). This 1.1.0 release closes every controllable gap from the 2026-05-10 deep-dive review and the 2026-05-12 architectural re-evaluation, hardens the Postgres reference host to production-runtime parity, and lands 18 additive feature surfaces (Phase H launch-blockers + Phase I enterprise-blockers).
All changes in this release are additive per COMPATIBILITY.md §2.1 — no existing required fields changed type or optionality, no event-type shape changed, no endpoint contract relaxed, no existing MUST weakened. Hosts that were v1.0.0-compliant remain v1.x-compliant; this release just adds new capability surfaces that hosts may now advertise + new conformance scenarios that gate on those advertisements.
Per-track closure status is tracked in docs/PROTOCOL-GAP-CLOSURE-PLAN.md (archived 2026-05-12); per-host conformance evidence lives in examples/hosts/*/conformance.md + INTEROP-MATRIX.md.
Spec corpus state
- 29 prose specs at
Status: FINAL v1. ZeroDRAFT/STUB/OUTLINEtags remain. New additions since 2026-05-08 freeze:auth-profiles.md,capabilities-change-detection.md,grpc-transport.md,i18n.md,compliance.md,host-capabilities.md,production-profile.md,replay.mdretention/expiry annex,node-packs.mdlockfile + Component-Model annexes. - 22 first-class JSON Schemas under
schemas/, all JSON Schema 2020-12 with$idathttps://openwop.dev/spec/v1/<name>.schema.jsonandadditionalProperties: falseon every object. New:agent-manifest,agent-ref,memory-entry,memory-list-options,audit-verify-result,pack-lockfile,orchestrator-decision,dispatch-config. - OpenAPI 3.1 (
api/openapi.yaml) — every endpoint hasoperationId+tags+ ≥ 1 error response; every schema referenced via cross-file$ref. Lints clean underredocly lint. New operations:verifyAuditLog,bulkCancelRuns. - AsyncAPI 3.1 (
api/asyncapi.yaml) — every channel binds to a message + payload schema reference. Lints clean underasyncapi validate. - gRPC transport profile (
api/grpc/openwop.proto+spec/v1/grpc-transport.md) — canonicalopenwop.v1.Engineservice; profile-gated viacapabilities.supportedTransports: ["grpc"].
RFCs landed
- RFC 0001 — RFC process itself (
Accepted). - RFC 0002 — Agent identity + reasoning events (
Accepted). - RFC 0003 — Agent packs (
Accepted). - RFC 0004 — Memory layer +
MemoryAdaptercontract (Accepted). - RFC 0005 — Conversation as run primitive (
Accepted). - RFC 0006 — Orchestrator-supervisor role (
Accepted). - RFC 0007 —
core.dispatchcore node (Accepted). - RFC 0008 — WASM ABI (
Accepted2026-05-13) + Component-Model variant annex. - RFC 0009 — Production-profile conformance (
Accepted2026-05-12). - RFC 0010 — Auth-profile conformance + v1.0 closure umbrella (
Accepted2026-05-12). - RFC 0011 — Auth-scoped discovery (
Accepted2026-05-12).
Multi-Agent Shift (RFCs 0002–0007 + RFC 0008)
- Phase 1 —
AgentRefwire shape;agent.reasoned/agent.toolCalled/agent.toolReturned/agent.handoff/agent.decidedevents;confidenceescalation contract (CP-1);messagereducer. - Phase 2 — Agent capability discovery on
/.well-known/openwop;pack.jsonagents[]extension; agent-pack manifests. - Phase 3 — Agent memory layer:
memoryRefresolution + redaction (SR-1) + cross-tenant isolation (CTI-1) + hostMemoryAdaptercontract. - Phase 4 — Conversation as run primitive:
conversation.start/conversation.exchange/conversation.closesuspend variants. - Phase 5 — Orchestrator-supervisor:
core.orchestrator.supervisortypeId +OrchestratorDecisionschema +runOrchestrator.decidedevent. - Phase 6 —
core.dispatchcore node: conservative dynamic graph mutation (CP-2); causationId propagation per RFC 0007 §E. - WASM ABI — RFC 0008 Active; reference Rust pack at
examples/packs/rust-hello/(28 KiB wasm32); Wasmtime-free loader atexamples/hosts/in-memory/src/wasm-loader.ts; six conformance scenarios; deliberately-misbehaving packs for memory-cap (examples/packs/rust-misbehaving-memory/) and ABI-mismatch (examples/packs/rust-misbehaving-abi/) positive-path testing. Schema extension:capBreached.kindenum gainedwasm-memory,wasm-fuel,wasm-execution-time(RFC 0008 §K). New optional capabilitycapabilities.nodePackRuntimes.wasm.loadedPacks[]surfaces accepted pack names; rejected packs (declared ABI not inabiVersions[]) MUST be absent — drives the conformance positive path since rejection happens at load time before any node-invoke surface. - OTLP/gRPC collector (Track 11 closure) —
conformance/src/lib/grpc-framing.ts(hand-rolled length-prefixed gRPC HTTP/2 framing, zero npm deps) +OtelCollector.startGrpc()(parallelnode:http2server, shared spans/metrics store). New optional capabilitycapabilities.observability.otel.exportProtocols[]advertises the supported OTLP transports (http/json,http/protobuf,grpc);spec/v1/observability.mdgains a §"Export protocols" normative section. New conformance scenariootel-emission-grpc.test.tsgates on the array. Opt-in viaOPENWOP_OTEL_COLLECTOR_GRPC=true(default port 4317).
Capability surfaces
Hosts advertise optional behaviors at /.well-known/openwop. New capability blocks added between 2026-05-08 and 2026-05-12:
capabilities.runs.{pauseResume, bulkCancel}— pause/resume + bulk-cancel endpoints.capabilities.webhooks.{supported, signatureAlgorithms}— HMAC v1 signing ({timestamp}.{rawBody}).capabilities.secrets.{supported, scopes, resolution}— BYOK secret resolution (host-managed).capabilities.aiProviders.{supported, byok, policies}— AI provider routing with 4-mode policy enforcement (disabled/optional/required/restricted).capabilities.mcpClient.{supported, transports, trustBoundary}— MCP tool invocation;trustBoundary: "untrusted"perthreat-model-prompt-injection.md§UNTRUSTED.capabilities.httpClient.{supported, methods, ssrfGuard, maxResponseBodyBytes}— universalcore.http.requesttypeId with SSRF guard.capabilities.memory.{supported, maxEntrySizeBytes, ttlSupported}—MemoryAdapterread-side contract per RFC 0004.capabilities.agents.{supported, profile, modelClasses, orchestratorPattern, memoryBackends, orchestrator, dispatch, reasoning}— Multi-Agent Shift Phase 1–6 advertisement.capabilities.auth.{profiles[], rotation, oauth2, oidc, auditLogIntegrity}— auth-profile advertisement (rotation; OAuth2-CC; OIDC user-bearer; audit-log integrity).capabilities.discovery.authScoped.{supported, mode}— RFC 0011 same-endpoint auth-scoped discovery.capabilities.production.{supported, backpressure, retention, debugBundle}— production-profile claim (RFC 0009).capabilities.observability.{otel, metrics}— OTel emission withopenwop.{run.backlog, queue.depth, run.duration}metrics; OTLP/HTTP-JSON + OTLP/HTTP-protobuf encodings supported.
Reference SDKs at 1.1.0
@openwop/openwop(TypeScript, npm) — first-class methods onOpenwopClientfor every OpenAPI endpoint;HTTP_ERROR_CODEScatalog with 40+ canonical codes;RunEventDoctype +isTerminalRunStatushelper; new typed exports added in 1.1.0:MemoryEntry,MemoryListOptions,AgentRef,AgentsCapability,AuthProfileClaim,AICredentialRef,McpToolCallNodeConfig,HttpRequestNodeConfig.openwop-client(Python, PyPI) — stdlib-only port preserving the same surface;HTTP_ERROR_CODESfrozenset; matching wire types.github.com/openwop/openwop/sdk/go(Go modules) — same surface;HTTPErrorCodesslice; doc comments on every exported symbol;go vetclean.- Rust SDK — foundation demand-gated; conformance suite is language-agnostic black-box, so future Rust client tests against the same wire contract.
Reference hosts
Four reference implementations live under examples/hosts/. Conformance evidence per host in INTEROP-MATRIX.md:
- In-memory (TypeScript,
examples/hosts/in-memory/) — local-dev fastest-boot; no persistence; claimsopenwop-core+ stream profiles. - SQLite (TypeScript,
examples/hosts/sqlite/) — single-machine durability; 669/731 (91.5%) conformance pass rate; claims audit-log-integrity + 4 interrupt profiles + auth-api-key-rotation + discovery-auth-scoped. - Python in-memory (Python 3.11 stdlib-only,
examples/hosts/python/) — cross-language portability proof; 700/788 (100% of applicable, ZERO failures) conformance pass rate. - Postgres (TypeScript,
examples/hosts/postgres/) — production durability path; first host claimingopenwop-production; 730/799 (91.4%) conformance pass rate. Ships with BYOK + 4-mode AI policy + MCP client + HTTP client (SSRF-guarded) + MemoryAdapter + agents capability + API-key rotation + auth-scoped discovery + OAuth2-CC + OIDC user-bearer JWT validators (RS256 + ES256 with JWKS cache +alg: "none"rejection) + cap-breach enforcement + per-workflow configurableSchema validation + subworkflow outputMapping + parent linkage.
Conformance suite at 1.1.0
@openwop/openwop-conformance— 103 scenario files underconformance/src/scenarios/. New since the 1.0.0 publish: production-profile (backpressure + retention-expiry), auth profiles (api-key-rotation + OAuth2-CC + OIDC + mTLS shape), audit-log integrity, BYOK roundtrip, MCP/A2A real-impl interop (verified against@modelcontextprotocol/server-everything+ A2A 0.3 JSON-RPC reference), agent memory (roundtrip + cross-tenant + redaction + TTL), webhook signed delivery, stream-modes (buffer + mixed-mode), bulk-cancel, MCP-toolcall redaction, HTTP-client SSRF, WASM pack ABI-version-rejection + memory-cap positive-path, configurableSchema positive overlay, pause-resume race + drain semantics.- Two execution modes:
npm test(parallel files, ~95s) andnpm run test:strict(--no-file-parallelismfor production-backpressure + OTel envelope coverage). - Behavior-gated:
OPENWOP_REQUIRE_BEHAVIOR=trueflips capability-gated scenarios from skip to fail when the host doesn't advertise the profile.
SECURITY invariants
- 68 invariants tracked (
SECURITY/invariants.yaml):
- 35 protocol-tier (all with public conformance tests; CI-gated via scripts/check-security-invariants.sh). - 32 reference-impl tier (verified by each reference impl's own CI). - 1 advisory (defense-in-depth, no hard MUST).
- New protocol-tier invariants added between freeze and release:
mcp-toolcall-payload-redaction,http-client-ssrf-guard,agent-memory-cti-1,agent-memory-sr-1-redaction,auth-key-rotation-no-canary-echo. - Threat-model docs at
SECURITY/threat-model-*.md(secret-leakage, prompt-injection, provider-policy, node-packs, auth-profiles). - CNA registration + bug-bounty program annex at
SECURITY/cna.md+SECURITY/bug-bounty.md.
Wire-shape stability
The wire contract remains frozen at v1 per COMPATIBILITY.md §2 — additive changes only inside v1.x, safety-fix only when correctness or CVE-class issues require it. Breaking changes wait for v2. This 1.1.0 release adds new optional capability surfaces; hosts that advertised the 1.0.0 capability set remain v1.x-compliant without change.
Domain and package naming
- Canonical domain:
openwop.dev - Registry:
packs.openwop.dev(TLS cert provisioned; live) - Package names:
@openwop/openwop,@openwop/openwop-conformance,openwop-client,github.com/openwop/openwop/sdk/go— stable through any v1.x release perPUBLISHING.md.
Verification
npm run openwop:check — the 8-step pre-merge gate — passes for every commit on main:
1. TypeScript reference SDK builds + emits dist/ 2. Conformance suite typechecks + server-free scenarios pass 3. Python reference SDK syntax + import smoke clean 4. Go reference SDK go vet + tests clean 5. OpenAPI 3.1 redocly lint clean 6. AsyncAPI 3.1 asyncapi validate clean 7. Publish-metadata + npm-pack-contents + Python/Go release-surface clean 8. SECURITY invariants — every protocol-tier MUST-NOT has a public test
1.0.0
2026-05-11OpenWOP v1.0 first publish
First publication of the openwop spec corpus to the package registries. Captures everything that was in scope at the v1 spec freeze (2026-05-08) plus three days of pre-publish hardening: SQLite host conformance fixes, registry TLS provisioning, audit-log integrity profile shipped end-to-end on SQLite, CI gate hardening (NPM_CACHE / GOCACHE cross-platform), recruitment artifacts for first non-steward host + pack-author.
Published artifacts
- npm:
@openwop/openwop@1.0.0(TypeScript SDK),@openwop/openwop-conformance@1.0.0(conformance suite). Published 2026-05-11 05:06–05:09 UTC. - PyPI:
openwop-client@1.0.0(Python SDK). - Go modules: tagged
sdk/go/v1.0.0on origin. - Tag:
v1.0.0on origin at commit6a637f1.
Scope at 1.0.0
- Spec freeze content per
[1.0] — 2026-05-08entry below — 26 prose specs at FINAL v1; 17 first-class JSON Schemas; OpenAPI 3.1 + AsyncAPI 3.1; three reference SDKs (TS/Python/Go); conformance suite v1.0.0. - Phase A conformance behavior closure — SQLite host pass rate 91.5% under
OPENWOP_REQUIRE_BEHAVIOR=true. - Phase B spec corpus completion — all
DRAFT/STUB/OUTLINEtags retired;host-capabilities.mdpromoted;i18n.md+compliance.mdannexes shipped. - Phase C round 1 — three reference hosts (in-memory, sqlite, python) advertising their respective capability surfaces.
- Phase F — MCP + A2A probe extensions (synthetic fakes).
- Registry —
packs.openwop.devlive with TLS; 3+ packs published with Ed25519 chains. - CI —
npm run openwop:check8-step gate green.
Known gaps at 1.0.0 (closed in 1.1.0)
- Postgres reference host had not yet shipped the BYOK / MCP / HTTP / agent-memory / OAuth2-CC / OIDC / API-key-rotation / auth-scoped-discovery surfaces.
- 11 conformance scenarios were shape-graded (not behavior-graded).
- Phase F real-impl interop (against
@modelcontextprotocol/server-everything+ A2A 0.3 reference) was not yet wired. - Phase H launch-blockers + Phase I enterprise-blockers from the 2026-05-12 architectural re-evaluation were not yet identified.
1.0
2026-05-08OpenWOP v1 spec freeze
Protocol contract locked. The spec corpus, schemas, API definitions, reference SDKs, and conformance suite all reach 1.0 artifact versions. This date marks the freeze — no breaking wire-shape changes after this point inside v1.x.
The 4-day window between this freeze and the 2026-05-12 release closes every controllable gap from the deep-dive review and hardens reference hosts to production-runtime parity. See the [1.0.0] release entry above for the consolidated record.
What's locked at freeze
- Prose specs — 26 docs at
Status: FINAL v1:auth.md,capabilities.md,channels-and-reducers.md,idempotency.md,interrupt.md,node-packs.md,observability.md,replay.md,rest-endpoints.md,run-options.md,stream-modes.md,version-negotiation.md,profiles.md,scale-profiles.md,debug-bundle.md,host-extensions.md,a2a-integration.md,mcp-integration.md, and the v1 profile/addendum docs. - JSON Schemas — 17 first-class schemas including agent-ref, agent-manifest, memory-entry, memory-list-options, conversation-turn, conversation-event, and dispatch-config schemas.
- API definitions — OpenAPI 3.1 (
api/openapi.yaml) + AsyncAPI 3.1 (api/asyncapi.yaml). - Reference SDKs at 1.0 —
@openwop/openwop(TypeScript),openwop-client(Python),openwopclient(Go). - Conformance suite at 1.0 —
@openwop/openwop-conformance. - CI gating —
scripts/openwop-check.sh+.github/workflows/openwop-spec.yml. - Governance —
CONTRIBUTING.md,GOVERNANCE.md,MAINTAINERS.md,COMPATIBILITY.md,SECURITY.md.
Multi-Agent Shift (Phases 1-6 landed by freeze)
- Phase 1 (RFC 0002) — Agent identity (
AgentRef), agent reasoning + tool + handoff event family, confidence-escalation contract,messagereducer. - Phase 2 (RFC 0003) — Agent capability discovery on
/.well-known/openwop+pack.jsonagents[]extension. - Phase 3 (RFC 0004) — Agent memory layer —
memoryRefresolution, redaction guarantees, hostMemoryAdaptercontract. - Phase 4 (RFC 0005) — Conversation as run primitive —
conversation.start/conversation.exchange/conversation.close. - Phase 5 (RFC 0006) — Orchestrator-supervisor role —
core.orchestrator.supervisornode type. - Phase 6 (RFC 0007) —
core.dispatchcore node — conservative dynamic graph mutation.
Domain and package naming
- Canonical domain:
openwop.dev - Registry:
packs.openwop.dev - Package names:
@openwop/openwop,@openwop/openwop-conformance,openwop-client,openwopclient