About this document
Specification — Working Draft 0.5
| Document ID | OWP-2 |
| Date | 2026-07-07 |
| Status | Working Draft. Not for production use. |
| Editors | Mal Wanstall (Apophenic) |
| Category | Standards Track |
Status of This Document
This is Working Draft 0.5 of the Open Worker Protocol. It is published for review and to ground implementation work conducted in parallel. The protocol surface defined here is subject to revision until the document reaches Final status. Implementations of this draft are not guaranteed to interoperate with implementations of subsequent drafts.
Working Draft 0.5 amends Working Draft 0.4 with the Emergent Workflows amendment. This revision adds Allocation Deliberation (§6.12): an audited bid/assess/award protocol by which a Workforce Director allocates ambiguously-targeted workforce-scope Intents across Function Leads, whose awards sediment into outcome-weighted routes that harden on measured success, decay on measured failure, and invalidate on roster or Charter change. See Changes Since Working Draft 0.4 below for the normative delta. The draft is in progress: the Worker Definition hardening amendment (charter schema additions and normative Intent Grammar enforcement, per ADR-W21) lands in this draft as a subsequent change. (Working Draft 0.4 had superseded Knowledge Base with Memory, renamed Role to Worker Definition, and added the Outcome Gap signal.)
This specification is the open standard. It is vendor-neutral and binding on any conformant implementation. The Apophenic implementation of this specification is described in two companion documents in the same repository: docs/apophenic-workforce-product.md (what Apophenic Workforce is as a product) and docs/apophenic-workforce-architecture-hlsd.md (how it is built). Those documents are normative for Apophenic only; this specification governs every conformant runtime.
Comments on this document are invited. Errata, amendments, and superseding drafts will be published under the document family identifier OWP-2.
Distribution of this document is unlimited.
Changes Since Working Draft 0.4
This draft adds Allocation Deliberation — the cross-Function allocation protocol and its weighted-route sediment. Detailed motivation appears in ADR-W20 in the companion Apophenic Workforce repository.
Normative changes
- §6.12 Allocation Deliberation (new). When a
workforce-scope Intent reaches the Workforce Director with no explicit target and no live weighted route, the runtime MUST run a deliberation round: the Director solicits independent assessments from the candidate Function Leads (each solicitation is a short-TTL assessment Intent of the protocol-defined kindintent:owp:allocation-assess/v1; each bid is the measured Outcome of that assessment Intent, signed by the assessing Lead), and the Director emits a signed award with recorded reasoning that feeds the normal cascade decomposition path (§6.8). Leads assess independently and MUST NOT observe one another’s bids; the protocol defines no multi-turn negotiation. Awards sediment into weighted routes: subsequent Intents of the same shape route directly while the route’s weight holds; weight is reinforced byachievedOutcomes and decayed bymissed/not-applicableOutcomes flowing back through §6.9 aggregation; routes are invalidated on roster change, Charter recalibration, Function deployment/retirement, or weight demotion below the re-deliberation threshold. - §9.1 Event Types. Added:
AllocationSolicited,AllocationAwarded,RouteSedimented,RouteWeightAdjusted,RouteInvalidated. Bids deliberately introduce no new event kind — they ride the existing assessment-Intent resolution events, signed per-actor. - §6.3 interaction. The target-resolution order in §6.3 is extended by §6.12.1: explicit target → live weighted route → deliberation. Explicitly-targeted Intents never deliberate.
This draft also lands the Worker Definition hardening amendment (ADR-W21):
- §3.2.1 states the no-dead-field principle (every charter component names its runtime consumer; a component the runtime does not read is not part of the protocol) and the signature-compatibility rule (all 0.5 additions are omitted from canonical serialisation when absent, so bundles signed against earlier drafts verify byte-identically).
- §3.2.2 Standing Intent is constrained to behaviour and tone: it MUST NOT be the authoritative source for output shapes, authority bounds, or work acceptance, and prompt text describing those concerns MUST be rendered from the owning structured component.
- §3.2.4 Decision scope becomes structured clauses (action category, typed bound,
on_exceed: escalate | refuse), runtime-evaluated, with prompt rendering single-sourced from the clauses. - §3.2.5 Intent Grammar gains explicit empty-grammar semantics (empty accepts = accepts nothing; MUST NOT be read permissively), citable refusals, migration guidance, and the deliberation-assessment interaction.
- New §3.2.8–§3.2.11: Competency Profile (declared, Evaluation-scoreable claims — the capability-match input for §6.12 bids), Capacity (the §6.4.1 declared ceiling made a concrete field), Output Contracts (per-accepted-kind structural validation of Outcomes — structure, never content), Measurement Defaults (per-generated-kind default criteria inherited by Intents declared without explicit criteria).
- §13.2 gains required behaviours for each of the above and for the §6.12 trigger order.
Addendum: §9.1 Event Types (aggregation). Added AggregatedOutcomeReported — the envelope-facing interim aggregated-Outcome event a leadership Worker emits into the upstream Intent’s envelope on its §6.9 emission cadence. Distinct from the registry-facing WorkforceAggregatedOutcomeReported (Director → Strategic Intent Registry, §9.6), which is unchanged.
This draft also lands the Human Workers amendment (ADR-W29, building on ADR-W30’s human-seat identity spine) — a human declares a Worker charter and becomes an allocation candidate, without entering the synchronous loop deliberation runs in:
- New §3.2.12 Execution Mode. A Worker Definition declares
execution: ai | human(aidefault). AhumanDefinition carries the same charter but no LLM-runtime config, and addschannels(how to reach the human) andresponse_ttl(the human’s own accept-bound); its instances bind to a principal, not a worker-host. - §3.2.7 leadership Definitions MUST be
execution: ai(leadership sits in synchronous loops). - §6.12.3 individual Workers never bid — a Human Worker is roster ground truth the Lead narrates over, so deliberation timing is untouched; routing to a human happens at §6.8 dispatch.
- §3.4.2 / §6.6 a Human Worker’s dispatch is delivered over its channel and bounded by its own
response_ttl; a lapse sweepsmissedand re-dispatches to an AI peer or escalates — the organisation never waits beyond a bound the human declared. - §4.2.5 one principal MAY hold both Human Role bindings (authority) and Human Worker instances (work) as distinct, non-conflated roles.
- §8 channel adapters (Slack, email, …) under the Human Provider boundary, reached by both
humanWorkerchannelsand §4.2.5 binding channels. - §9.2 a human-produced event’s
actoris the principal, signed by the principal’s key; the common schema is unchanged — one envelope, whoever did the work.
The predecessor amendment ADR-W30 (Human seats) is already applied: a Function bundle declares human_roles: [{id, kind}], and an escalation to an undeclared human seat is refused — so an escalation’s charter-URI target resolves to its §7 kind, its §4.2.5 binding, its principal, and its channel (§3.2.6, §4.2.5, §6.5).
Changes Since Working Draft 0.3
This draft supersedes the Knowledge Base primitive with Memory, renames Role to Worker Definition, adjusts the Capability categories, and adds the Outcome Gap signal. Detailed motivation appears in ADR-W12, ADR-W13, ADR-W14, and ADR-W15 in the companion Apophenic Workforce repository.
Normative changes
- §3.7 Knowledge Base → Memory. Knowledge Base is superseded by a typed Memory primitive with six kinds (Causal, Episodic, Semantic, Working, Constitutional, Relational, §3.7.2) and a scope axis (
instance | definition | function | workforce, §3.7.3). Causal and Relational Memory carry a confidence that evolves by reinforce/decay/invert as a deterministic fold over append-only signed update events (§3.7.5–§3.7.6). Episodic Memory is a projection over the Audit Envelope, not a second store (§3.7.7). Semantic Memory inherits the former Knowledge Base’s versioning, ownership, federation, contribution, and retention machinery (§3.7.8–§3.7.12). Forgetting is operational (a tombstone to null confidence) while the envelope record is retained (§3.7.12). An autonomy threshold governs writes: reinforce/decay are autonomous-but-audited; invert and Semantic contribution route through Recalibration (§3.7.13). - §3.5.3 Capability Categories. The categories become Model / Tool / Human / Memory. The Knowledge category is removed; Memory Capabilities are the read/write transport for the Memory primitive, with explicit operation kinds (
read | reinforce | decay | invert | contribute). - §3.2.4 Authority Grant. The Knowledge Base authority axis becomes the two-axis Memory authority (
memory×memory_capabilities); the autonomy threshold is expressed on the operation axis. - §3.1 / §3.2 rename. The Role primitive is renamed Worker Definition (the template); Worker is the Worker Instance (its instantiation). One Worker Definition : many Worker Instances. New §3.1.7 Re-binding (
WorkerInstanceRebound). Therole:URI token is retained. Recalibration targets the Worker Definition. - §3.4 / §6.6 Intent ↔ Outcome ↔ Measurement. The Intent description is clarified as the desired outcome (no separate field); the Outcome is the realised result; Measurement(s) are the proxy bridge. New §3.4.12 Outcome Gap: an advisory
OutcomeGapObservedsignal on divergence among desired outcome, measurement score, and delivered Outcome (proxy-gaming / bad-measure forms), fed to Causal Memory as the attribution input (not the raw score). Thekb-querymeasurement leaf is renamedmemory-query(§3.4.10). - §9.1 Event Types. Removed: the
KnowledgeBase*/KnowledgeContribution*events. Added:MemoryRegistered,MemoryVersionCreated,MemoryCurrentPointerMoved,MemoryRead,MemoryReinforced,MemoryDecayed,MemoryInverted,MemoryContributed,MemoryContributionAccepted,MemoryRetentionPolicyChanged,MemoryRetired,WorkerInstanceRebound, andOutcomeGapObserved. - §9.2 Event Common Schema. Memory reads carry
memory_id,memory_version,retrieved_content_hash,confidence_at_read, and (federated) provenance/replica fields; Memory update events carryoutcome_provenanceand the resultingconfidence. - §13 Conformance. The Core primitive set lists Memory in place of Knowledge Base; Federated-Read is restated over Memory items.
Backwards-incompatibility notes
Working Draft 0.3 implementations are not guaranteed to interoperate with Working Draft 0.4. The Knowledge Base primitive, its Authority-Grant axis, its Capability category, and its event kinds are replaced by their Memory equivalents; kb-query criteria and knowledge_base_* audit fields are replaced by memory-query and memory_*. Pre-release: no migration shim required.
Changes Since Working Draft 0.2
This draft elevates Intent to a multi-scale primitive, reframes Outcome as the measured realisation of an Intent, introduces typed leadership Worker Definitions, and introduces the per-Authority Strategic Intent Registry as a peer audit artefact alongside Envelopes. Detailed motivation appears in ADR-W08, ADR-W09, ADR-W10, and ADR-W11 in the companion Apophenic Workforce repository.
Normative changes
- §3.4 Intent rewritten. Intent gains a
scopeaxis (org | workforce | function | worker); the lifecycle is restated asdeclared → <terminal>with exactly four terminal resolution kinds (achieved | not-applicable | withdrawn | missed). The pre-0.2refusedverdict is subsumed bynot-applicable(with the refusal reason carried in a structuredreasonfield on the Outcome). The pre-0.2abandonedverdict is subsumed bymissed(passive failures) orwithdrawn(active org-initiated terminations like Worker decommissioning). Amendment by supersession (declare-new + withdraw-old) replaces the prior implicit mutability. New subsections specify Intent Scope (§3.4.6), Supersession (§3.4.7), Concurrent Streams and Competing Intents (§3.4.8), Standing Intent’s place in the scope model (§3.4.9), Measurement Criteria (§3.4.10), and Tradeoff Narration (§3.4.11). - §6.6 Resolution rewritten. Outcome is reframed as the measured realisation of an Intent. The Outcome record gains the
scorefield (the resolved measurement criterion result) andtradeoff_narrationfield (REQUIRED on leadership-Worker Outcomes under competing Intents). - §3.2.7 (new) Leadership Worker Definition Kinds. Two typed Worker Definition kinds —
role-kind:leadership/workforce-directorandrole-kind:leadership/function-lead— with required Charter fields (decomposition_grammar,aggregation_grammar,requires_tradeoff_narration). Mandatory presence: exactly one per scope, enforced at authoring time, deployment time, and Recalibration time. Human-or-AI fill via the existing Human Role binding (§4.2.5). - §6.8–§6.11 (new) Runtime Behaviour. Cascade Decomposition (§6.8), Outcome Aggregation (§6.9), Transition Suggestion Emission (§6.10), and Leadership Worker Definition Enforcement at Function Bundle Load (§6.11). The runtime never auto-applies terminal transitions for
org | workforce | functionscopes; it emits*TransitionSuggestedevents that the originator signs. - §9.1 Event Types. New event kinds:
StrategicIntentDeclared,StrategicIntentTransitionSuggested,StrategicIntentTransitioned,StrategicIntentSuperseded,WorkforceAggregatedOutcomeReported,StrategicIntentDeclined,TradeoffNarrationOmissionDetected,FunctionBundleLoadRefused. - §9.6 (new) The Strategic Intent Registry. Per-Authority peer audit artefact alongside Envelopes. Hash-chained, signed, append-only, never seals. Stores
org-scope Intent declarations + state transitions + aggregated Outcomes from Workforces. Operational envelopes back-reference registry records via the existing provenance-ref mechanism. - §13.2 Required Behaviours. New MUST clauses for leadership-Worker Definition presence enforcement, measurement criterion validation, tradeoff narration validation, transition suggestion emission, supersession-only amendment, Strategic Intent Registry persistence, cascade requirements, and decomposition caching.
Architectural amendment
This draft amends the per-top-level-Intent envelope architecture from Working Draft 0.2 (ADR-W05 of the reference implementation). The envelope-per-top-level-Intent rule is preserved for the worker, function, and workforce scopes. The org scope uses the new Strategic Intent Registry (§9.6) instead, because Strategic Intents span timescales that would make envelope sealing impractical. ADR-W10 documents this amendment.
Backwards-incompatibility notes
Implementations of Working Draft 0.2 are not guaranteed to interoperate with Working Draft 0.3. Specifically:
- Intent declarations that lack
scopeMUST be treated asworker-scope by 0.3 runtimes during a transition window; 0.3 runtimes MUST emit a warning when accepting unscoped Intents. - Intent declarations that lack
measurement_criteriaMUST be refused by 0.3 runtimes. Migration: existing Worker-scope Intents can be amended via supersession (§3.4.7) to add a minimaloutcome-aggregationcriterion that aggregates over the Intent’s own resolution kind. - Outcome records that lack a
scorefield are valid fornot-applicableandwithdrawnresolutions (the resolution was non-evaluative). Thescorefield is REQUIRED forachievedandmissed. - Outcome records using the pre-0.2
refusedorabandonedverdicts MUST be replaced by 0.3 implementations:refused→not-applicablewith a structuredreason;abandoned→missed(passive timeout) orwithdrawn(active decommissioning) with a structuredreason. Pre-release: no migration shim required. - Function bundles without typed leadership Worker Definitions MUST be refused by 0.3 runtimes once leadership enforcement is enabled. Migration: add a Workforce Director Worker Definition and a Function Lead Worker Definition with default Charter content (a template library will be provided by the reference implementation).
- The terminal resolution kinds
escalated(treated as terminal in some 0.1 implementations) is no longer terminal in 0.3 — escalation is a transient marker on adeclaredIntent; resolution flows back per §6.5.
Changes Since Working Draft 0.1
This draft promotes Knowledge from a sub-category of Capability to a first-class protocol primitive, and partially closes the federation question for shared mutable state. Detailed motivation appears in ADR-W06 and ADR-W07 in the companion Apophenic Workforce repository.
Normative changes
- New §3.7 Knowledge Base. A new primitive: the governed organisational asset (URI, version manifest, contribution policy, retention, ownership) that Knowledge Capability invocations resolve against. Knowledge Capabilities (§3.5.3) remain the invocation transport; Knowledge Base is the asset on the other end. Adds dual-track versioning (mutable
currentpointer + immutable content-hash-addressed versions) and single-writer federation semantics. - §3.2.4 Authority Grant. Adds a Knowledge Base authority axis alongside Capability authority. Worker Definitions now declare permitted Knowledge Bases and permitted Knowledge Capabilities independently; the runtime gates both axes on every retrieval.
- §3.5.3 Capability Categories. Knowledge Capabilities recast from “invocations that retrieve organisational knowledge” to the invocation transport that resolves against a Knowledge Base (§3.7). Substantive lifecycle and governance language moved out of §3.5 and into §3.7.
- §9.1 Event Types. Adds
KnowledgeBaseRegistered,KnowledgeBaseVersionCreated,KnowledgeBaseCurrentPointerMoved,KnowledgeContributionProposed,KnowledgeContributionAccepted. - §9.2 Event Common Schema.
CapabilityInvokedevents that retrieve from a Knowledge Base MUST includeknowledge_base_id,knowledge_base_version, andretrieved_content_hash. These fields are how the audit envelope binds a retrieval to a specific resolved content snapshot — re-fetching at the same(kb_id, version)is guaranteed bit-identical. - §13 Conformance. Knowledge Base primitive is Core (every conformant runtime). Cross-Workforce read federation is a new optional conformance class, Federated-Read, intermediate between Compliance-Capable and the (still-unclaimable) Federated class.
Non-normative changes
- Appendix B.1.3 updated to cross-reference the new Knowledge Base primitive (§3.7) alongside the invocation transport (§3.5.3).
- Appendix B.3 worked example updated to use the two-axis Worker Definition manifest (
knowledge_bases+knowledge_capabilities) in place of the prior singleknowledge_accessblock. - Appendix D.4 (Federation in detail) is now partially resolved: single-writer cross-Workforce read of governed state is specified in §3.7 and §13. Co-owned writes remain deferred.
Backwards-incompatibility notes
Implementations of Working Draft 0.1 are not guaranteed to interoperate with Working Draft 0.2. Specifically:
- Worker Definition declarations using the prior single
knowledge_accessfield continue to be valid input but MUST be translated by the runtime into the two-axis form before evaluation. Where translation is ambiguous (the prior field conflated Base identity with Capability operation), implementations SHOULD treat each entry as a Knowledge Base reference and infer the union of permitted Knowledge Capabilities from the Function’s registered Providers. - Audit events emitted under Working Draft 0.1 do not carry the new Knowledge Base reference fields. Implementations MAY emit them as
nullfor replayed historical events; they MUST be present and non-null for any event emitted by a Working Draft 0.2 conformant runtime.
Abstract
This document specifies the Open Worker Protocol (OWP). The protocol defines the wire-level and behavioural primitives required to deploy non-human knowledge workers as accountable members of an organisation.
Knowledge work has historically been governed by organisational primitives developed over centuries: identity, role, authority, escalation, audit, and accountability. These primitives have no direct equivalents in contemporary autonomous systems, which are typically deployed without stable identity, defined role, bounded authority, or auditable provenance. This protocol specifies those equivalents.
The protocol defines six primitives — Worker, Worker Definition, Signal, Intent, Capability, and Audit Envelope — together with two deployment artefacts (Function, Workforce) and three cross-cutting requirements (provenance, cost, and charter binding). Working Draft 0.2 added Knowledge Base as a seventh primitive; Working Draft 0.3 elevated Intent itself to a multi-scale primitive (§3.4.6) and introduced the per-Authority Strategic Intent Registry (§9.6) as a peer audit artefact alongside Envelopes; Working Draft 0.4 supersedes the Knowledge Base primitive with Memory (§3.7) — a typed, evolving substrate of which organisational knowledge (Semantic Memory) is one kind — and renames the Role primitive to Worker Definition (§3.2). These compose to express the full set of organisational constructs by which knowledge work is governed at every scale from operational coordination to organisational direction-setting.
The protocol is vendor-neutral: it specifies what a worker is and how it must behave, not which model, framework, runtime, or vendor is used to realise it. The protocol is open: implementations may be hosted, self-hosted, or embedded, and the conformance criteria are testable against any implementation regardless of underlying technology.