Skip to content

Diagnostic index

Every diagnostic code the compiler can emit, with a one-line summary of the cause, grouped by category. For step-by-step cause-and-fix guidance on the most common ones, see the troubleshooting guides.

There are 456 codes in total.

CodeSummaryConstructSeverity
bynk.agent.construction_arityAn agent was constructed with the wrong number of key arguments.agent_decl
bynk.agent.handler_arityAn agent handler was called with the wrong number of arguments.agent_decl
bynk.agent.handler_not_foundCalled a handler the agent does not declare.agent_decl
bynk.agent.key_mismatchAn agent key argument has the wrong type.agent_decl
bynk.agent.outside_contextAn agent was declared outside a context.agent_decl
bynk.agent.return_not_effectAn agent handler’s return type is not an Effect.agent_decl
bynk.agents.bad_state_initialiserAn agent store field initialiser is not a static value of the field’s type.store_field
bynk.agents.non_zeroable_state_fieldAn agent store field has no initialiser and no implicit zero value.store_field
CodeSummaryConstructSeverity
bynk.boundary.structural_mismatchData crossing a context boundary did not match the expected shape.
CodeSummaryConstructSeverity
bynk.capability.op_arityA capability operation was called with the wrong number of arguments.capability_decl
bynk.capability.outside_contextA capability was declared outside a context.capability_decl
bynk.capability.unknown_operationReferenced an operation the capability does not declare.capability_decl
CodeSummaryConstructSeverity
bynk.consumes.alias_conflictTwo consumes aliases collide.consumes_decl
bynk.consumes.capability_name_clashTwo flattened consumes U { Cap } capabilities collide, or one clashes with a local capability.consumes_decl
bynk.consumes.in_commonsconsumes appears in a commons (it is only valid in a context).consumes_decl
bynk.consumes.name_conflictA consumes name collides with another name in scope.consumes_decl
bynk.consumes.self_referenceA context consumes itself.consumes_decl
bynk.consumes.service_arityA consumed service was called with the wrong number of arguments.consumes_decl
bynk.consumes.target_is_commonsconsumes targets a commons instead of a context.consumes_decl
bynk.consumes.unknown_contextconsumes names a context that does not exist.consumes_decl
bynk.consumes.unknown_serviceCalled a service the consumed context does not declare.consumes_decl
CodeSummaryConstructSeverity
bynk.context.consumes_cycleContexts form a consumes dependency cycle.
bynk.context.external_constructionA context-owned type was constructed from outside that context.
bynk.context.external_providerA bodiless (external) provider was declared outside an adapter.provider_decl
bynk.context.opaque_inspectionAn opaquely-exported type was inspected from outside its context.
bynk.context.rebrand_constructionA uses-sourced commons record or sum type was constructed directly inside a context, where the emitter’s per-context rebrand leaves its constructors out of scope.
CodeSummaryConstructSeverity
bynk.contract.duplicate_nameA function declares two contract clauses (requires/ensures) with the same name.
bynk.contract.impure_predicateA contract predicate uses an effectful or test-only construct; a contract clause must be pure.
bynk.contract.not_boolA contract predicate does not have type Bool.
bynk.contract.restated_by_testA case/property merely restates a contract clause already declared at the function; the test is redundant.
bynk.contract.result_in_requiresA precondition (requires) references result; the return value is only in scope inside an ensures.
CodeSummaryConstructSeverity
bynk.cron.bad_paramsA cron handler declares more than one parameter, or a non-Int one.cron_handler
bynk.cron.duplicate_scheduleTwo cron handlers declare the same schedule.cron_handler
bynk.cron.invalid_scheduleA cron expression is not five whitespace-separated fields.cron_handler
bynk.cron.return_not_effect_resultA cron handler does not return Effect[Result[(), E]].cron_handler
CodeSummaryConstructSeverity
bynk.effect.bind_in_pure_contextAn <- bind was used in a pure (non-effectful) context.effect_let_stmt
bynk.effect.bind_on_non_effectAn <- bind was applied to a non-Effect value.effect_let_stmt
bynk.effect.capability_in_pure_contextA capability was used in a pure context.
bynk.effect.cross_context_in_pure_contextA cross-context call was made in a pure context.
bynk.effect.do_in_pure_contextA do statement was used in a pure (non-effectful) context.do_stmt
bynk.effect.do_on_non_effectA do statement was applied to a non-Effect value.do_stmt
bynk.effect.do_requires_unitA do statement was applied to a valued Effect[T]; do performs a unit effect, so a real result would be dropped — use let _ <- e instead.do_stmt
bynk.effect.fn_value_in_pure_contextAn effectful function value was called in a pure context; like a capability call, it is legal only where the enclosing body is effectful.call
CodeSummaryConstructSeverity
bynk.expect.not_boolexpect was given a non-Bool predicate.expect_expr
bynk.expect.outside_caseexpect was used outside a case body.expect_expr
CodeSummaryConstructSeverity
bynk.exports.capability_not_providedAn exported capability has no provider in its context.exports_decl
bynk.exports.conflicting_visibilityA type is exported with conflicting visibilities.exports_decl
bynk.exports.duplicate_exportThe same name is exported more than once.exports_decl
bynk.exports.duplicate_in_clauseA name appears twice in one exports clause.exports_decl
bynk.exports.undeclared_capabilityexports capability names a capability that is not declared.exports_decl
bynk.exports.undeclared_typeexports names a type that is not declared.exports_decl
CodeSummaryConstructSeverity
bynk.given.cross_context_unknown_capabilitygiven B.Cap names a capability the consumed context does not export.given_clause
bynk.given.undeclared_capabilityA handler uses a capability it did not declare with given.given_clause
bynk.given.unknown_capabilitygiven names a capability that does not exist.given_clause
bynk.given.unused_capabilityA given capability is never used (warning).given_clauseWarning
CodeSummaryConstructSeverity
bynk.http.body_on_get_or_deleteA GET or DELETE handler declares a body parameter.http_handler
bynk.http.cache_bad_max_ageA @cache annotation’s maxAge is missing or not a positive Duration literal.
bynk.http.cache_bad_scopeA @cache annotation’s scope is not public or private.
bynk.http.cache_duplicateA handler carries more than one @cache annotation.
bynk.http.cache_on_non_getA @cache annotation is placed on a handler that is not on http GET.
bynk.http.cache_unknown_argA @cache annotation has an argument outside the closed set (maxAge/scope).
bynk.http.cors_invalid_fieldA cors policy field (headers/credentials/maxAge) has the wrong value shape.
bynk.http.cors_invalid_originsA cors policy’s origins is missing, empty, or not a list of string literals.
bynk.http.cors_not_httpA cors { } policy appears on a service that is not from http.
bynk.http.cors_unknown_fieldA cors { } policy declares a field outside the closed set.
bynk.http.cors_wildcard_credentialsA cors policy combines credentials: true with the wildcard origin ["*"].
bynk.http.duplicate_routeTwo handlers share the same method and route.http_handler
bynk.http.extra_paramA handler parameter is neither a path parameter nor body.http_handler
bynk.http.invalid_pathAn HTTP route path is malformed.http_handler
bynk.http.limit_bad_max_bodyA @limit annotation’s maxBody is missing or not a positive Int literal.
bynk.http.limit_duplicateA handler carries more than one @limit annotation.
bynk.http.limit_on_bodylessA @limit annotation is placed on a handler that takes no body (a GET or DELETE).
bynk.http.limit_unknown_argA @limit annotation has an argument outside the closed set (maxBody).
bynk.http.limits_invalid_fieldA limits policy field (maxBody) has the wrong value shape.
bynk.http.limits_not_httpA limits { } policy appears on a service that is not from http.
bynk.http.limits_unknown_fieldA limits { } policy declares a field outside the closed set.
bynk.http.path_param_not_stringyA path parameter’s type is not constructible from a string.http_handler
bynk.http.reserved_prefixA route uses the reserved /_bynk/ prefix.http_handler
bynk.http.return_not_effect_http_resultAn HTTP handler does not return Effect[HttpResult[T]].http_handler
bynk.http.security_invalid_fieldA security policy field (hsts/nosniff) has the wrong value shape.
bynk.http.security_not_httpA security { } policy appears on a service that is not from http.
bynk.http.security_unknown_fieldA security { } policy declares a field outside the closed set.
bynk.http.unbound_path_paramA :name route segment has no matching handler parameter.http_handler
bynk.http.unknown_handler_annotationA handler carries an annotation outside the closed set (@cache/@limit).
CodeSummaryConstructSeverity
bynk.lex.bad_escapeAn invalid escape sequence in a string literal.string_literal
bynk.lex.float_literal_overflowA float literal does not fit a finite 64-bit float.float_literal
bynk.lex.integer_overflowAn integer literal is out of range.number_literal
bynk.lex.interpolation_too_deepA string interpolation \(…) nests deeper than the lexer’s fixed limit.string_literal
bynk.lex.unclosed_doc_blockA documentation block is not closed.
bynk.lex.unexpected_characterAn unexpected character in the source.
bynk.lex.unterminated_interpolationAn interpolation hole \(…) is not closed on its line.string_literal
bynk.lex.unterminated_stringA string literal is not terminated.string_literal
CodeSummaryConstructSeverity
bynk.messages.format_mismatchA code’s placeholder is formatted as a different ICU kind (plain/plural/select/number/date) across declared locales.
bynk.messages.incompleteA locale is missing a code the reference locale declares.
bynk.messages.invalid_locale_tagA messages block’s locale tag is not a valid LocaleTag (e.g. messages "xx" where xx doesn’t match the tag pattern).
bynk.messages.malformed_icu_syntaxA message template’s ICU placeholder syntax is invalid — unbalanced arm braces, an unknown format keyword, # outside a plural arm, a missing mandatory other arm, or an explicitly out-of-scope construct (selectordinal, offset:/=N, a CLDR skeleton).
bynk.messages.missing_locale_dependencyA commons declaring messages doesn’t uses bynk.locale and/or uses bynk.locale.types, which its generated render and the types its signature names need.
bynk.messages.missing_referenceA message bundle has no @reference block.
bynk.messages.multiple_referenceA message bundle has more than one @reference block.
bynk.messages.outside_commonsA messages declaration appears outside a commons.
bynk.messages.placeholder_mismatchA locale’s template for a code uses a different set of {name} placeholders than the reference locale’s.
CodeSummaryConstructSeverity
bynk.observe.bad_countAn observation call count is not a non-negative integer literal (called once / called <n> times).
bynk.observe.impure_withA with predicate uses an effectful or test-only construct; it must be pure.
bynk.observe.not_a_seamAn observation targets a capability the unit under test does not consume.
bynk.observe.outside_caseAn observation appears outside a case body.
bynk.observe.trace_outside_testtrace(Cap.op) appears outside a case body.
bynk.observe.unknown_opAn observation names an operation the capability does not declare.
bynk.observe.with_not_boolA with predicate does not have type Bool.
CodeSummaryConstructSeverity
bynk.actor.bearer_identity_not_string_constructibleA Bearer actor’s identity is not a string-constructible type.
bynk.actor.bearer_missing_secretA Bearer actor does not name its signing secret.
bynk.actor.binder_shadows_paramA by actor binder collides with a handler parameter of the same name.
bynk.actor.by_on_agentA by actor clause was placed on an agent on call handler, which has no actor.
bynk.actor.duplicate_sum_schemeTwo peers in a multi-actor sum share an authentication scheme.
bynk.actor.identity_not_sealedAn actor identity type is not a context-ownable (sealed) value type.
bynk.actor.missing_by_on_httpAn HTTP handler lacks the required by actor clause.
bynk.actor.oidc_identity_not_string_constructibleAn Oidc actor’s identity is not a string-constructible type.
bynk.actor.oidc_missing_audienceAn Oidc actor does not name its audience.
bynk.actor.oidc_missing_issuerAn Oidc actor does not name its issuer.
bynk.actor.oidc_missing_jwksAn Oidc actor does not name its jwks endpoint.
bynk.actor.oidc_not_in_sumAn Oidc actor appears as a member of a multi-actor sum.
bynk.actor.outside_contextAn actor was declared outside a context (e.g. in a commons).
bynk.actor.refinement_base_unsupportedA refinement actor’s base is not a Bearer actor (no claims to authorise against).
bynk.actor.refinement_in_sumA refinement actor appears as a member of a multi-actor sum.
bynk.actor.refinement_predicate_unsupportedA refinement actor’s where predicate is outside the closed claim-predicate set.
bynk.actor.scheme_not_admissibleAn actor’s scheme is not admissible on this handler’s protocol.
bynk.actor.signature_identity_unsupportedA Signature actor declared an identity, which is not yet supported.
bynk.actor.signature_missing_headerA Signature actor does not name its signature header.
bynk.actor.signature_missing_secretA Signature actor does not name its signing secret.
bynk.actor.signature_requires_bodyA Signature handler does not take a body parameter.
bynk.actor.signature_tolerance_without_timestampA Signature actor set tolerance without a timestamp header.
bynk.actor.sum_requires_binderA multi-actor sum by clause has no binder to match the resolved actor.
bynk.actor.unknown_actorA handler’s by clause names an actor that is not declared.
bynk.actor.unknown_schemeAn actor declares an authentication scheme that is not compiler-known.
bynk.actor.unreachable_sum_armA multi-actor sum has an arm unreachable after a catch-all (None) peer.
bynk.adapter.consumes_contextAn adapter consumed a context; adapter dependencies are adapter-to-adapter.consumes_decl
bynk.adapter.consumes_requires_selectionAn adapter used a whole-unit or aliased consumes; adapters must select capabilities with consumes U { Cap, … }.consumes_decl
bynk.adapter.disallowed_itemAn adapter declared a service, agent, or other item it may not contain.adapter_decl
bynk.adapter.duplicate_bindingAn adapter declared more than one binding clause.binding_decl
bynk.adapter.no_bindingAn adapter declares an external provider but no binding module to supply it.adapter_decl
bynk.adapter.provider_has_bodyA provider inside an adapter has a Bynk body; adapter providers must be external.provider_decl
bynk.cell.invalid_targetA := write targets something that is not a store Cell field.
bynk.cell.self_referenceA := right-hand side reads the cell being written (a read-modify-write); use .update.
bynk.duration.literal_overflowA Duration literal (<int>.<unit>) exceeds the representable millisecond range.
bynk.event.bad_field_defaultAn event field’s default expression (field: T = expr) is not a static, wire-representable value of the field’s declared type — a literal (including one admitted to a refined type), a sum variant, Some/None/Ok/Err, a record, or T.unsafe(lit) for an opaque type whose literal also satisfies the refinement.
bynk.event.bad_paramsAn on event handler declared the wrong number of parameters, or a second parameter whose type is not EventEnvelope — it takes the event payload and, optionally, the runtime envelope.
bynk.event.bad_schema_dispatchA via schema(...) dispatch clause’s argument is malformed — it must be a single, positive, positional Int literal.
bynk.event.bad_schema_versionAn event’s @schema(N) annotation is malformed — N must be a single, positive, positional Int literal, and @schema may appear at most once on an event.
bynk.event.default_outside_eventA field default (field: T = expr) was written on a record field outside an event declaration — a default is only meaningful on an event’s own field, since it exists to let an older wire event missing this key still deserialise.
bynk.event.emit_not_an_eventEvents.emit[E] named a type E that is declared in this context, but is not itself an event — only an event type may be emitted.
bynk.event.emit_outside_ownerEvents.emit[E] named an event E not declared in the emitting context — only an event’s declaring context may emit it.
bynk.event.handler_param_type_mismatchAn on event(e: T) handler’s declared parameter type does not match its from Events(E) header’s event type.
bynk.event.non_additive_schema_changeAn event’s field shape changed in a way the schema registry cannot evolve additively — a field was removed, retyped, added without a default, or lost a default it previously had. Give the new shape a new event type name, or make the change additive.
bynk.event.outside_contextAn event was declared outside a context.
bynk.event.pattern_duplicate_fieldA from Events(E { ... }) subscription pattern listed the same field more than once.
bynk.event.pattern_type_mismatchA from Events(E { ... }) subscription pattern field’s matched value is not compatible with that field’s declared type.
bynk.event.pattern_unknown_fieldA from Events(E { ... }) subscription pattern named a field that E does not declare.
bynk.event.pattern_unknown_variantA from Events(E { ... }) subscription pattern’s variant value names a variant that does not exist on the field’s declared sum type.
bynk.event.pattern_variant_payloadA from Events(E { ... }) subscription pattern’s variant value names a variant that carries a payload — only nullary variants are admitted, since testing the tag alone would silently ignore the payload.
bynk.event.schema_version_mismatchAn event’s @schema(N) annotation disagrees with the version the schema registry computes from the event’s build history.
bynk.event.unknown_annotationAn event declaration carried an @-annotation other than @schema — event annotations are a closed set.
bynk.event.unknown_subscriptionA from Events(E) subscription named E, which is not a declared event in this context or any consumed context.
bynk.generics.duplicate_type_paramA type or fn declares the same type-parameter name more than once (v0.157, ADR 0183).
bynk.generics.generic_non_recordA type declaration carries type parameters on a refined or opaque body; only a record (type Name[T] = { … }) or sum (`type Name[T] =…`) body may be generic (v0.157/#593, ADRs 0183/0197).
bynk.generics.generic_record_at_boundaryA Val[…] fabricates a value of a generic type; per-instantiation value fabrication is not yet wired (ADR 0197). Since v0.174 a generic-record instantiation may otherwise cross a boundary through its monomorphised codec.
bynk.generics.generic_sum_embedsA generic sum type carries an embeds clause; embedding into a generic sum is not supported (#593).type_decl
bynk.generics.method_on_generic_typeA static method is attached to a generic type; static methods on generic types are deferred (they have no receiver to supply the type’s parameters). Instance methods on generic types are supported (#594).fn_decl
bynk.generics.no_boundsA type parameter carries a bound ([A: …]); bounded generics are not in v0.20a.fn_decl
bynk.generics.recursive_generic_at_boundaryA recursive generic record (one that transitively contains itself, through any wrapper or generic argument) appears at a boundary; it has no finite set of monomorphised codecs, so it is not yet boundary-serialisable (ADR 0197).
bynk.generics.type_arg_countA user-declared generic type is applied to the wrong number of type arguments, or a generic type is named without its […] arguments (v0.157, ADR 0183).applied_type_ref
bynk.generics.type_arg_mismatchInferred or explicit type arguments conflict, have the wrong arity, target a non-generic function, or a type parameter shadows a declared type.call
bynk.generics.uninferable_type_argA generic function’s type parameter could not be inferred from the arguments and was not given explicitly (name[T](…)); a bare generic function also cannot be passed as a value in v0.20a.call
bynk.held.branch_divergenceBranches of a conditional leave a held value (e.g. Connection[F]) in inconsistent ownership states — one consumes or stores it, another leaves it owned (§2.9.5, real-time track slice 2).
bynk.held.consume_on_borrowA consuming operation (close/put/take) is called on a borrowed held reference — borrows admit only non-consuming operations like send (§2.9.3, real-time track slice 2).
bynk.held.leakA held value (Connection[F]) is still owned at scope exit — it must be disposed (stored, closed, or transferred) before the handler or function returns (§2.9.1, real-time track slice 2).
bynk.held.query_accessor_on_held_mapA key-aware query accessor (.entries/.keys/.values) is used on a held Map[K, Connection] — a held resource is iterated with the broadcast ops (forEach/parTraverse), not a key query.
bynk.held.unsupported_map_opA held Map[K, Connection] is given an update/upsert — a held resource cannot be transformed by a (Connection) -> Connection function; use put/get/remove (real-time track slice 3b-ii).
bynk.held.unsupported_storageA held value (Connection[F]) is stored in a Set/Log/Cache — held values may only live in Cell[Option[Connection]] or Map[K, Connection] (§2.9.3, real-time track slice 2).
bynk.held.use_after_consumeA held value (Connection[F]) is used after a consuming operation (close/put/take) ended its lifetime (§2.9.2, real-time track slice 2).
bynk.history.not_an_agentA for all run: History[T] names a T that is not an agent — only an agent has handlers to sequence and reachable states to observe (testing track slice 7, ADR 0155).
bynk.history.not_generableA for all run: History[Agent] targets an agent with a handler parameter whose type cannot be generated (e.g. a Matches refinement), so its call-history cannot be driven (testing track slice 7, ADR 0155).
bynk.history.outside_propertyHistory[Agent] appears outside a property’s for all binding — it is a test-only generator, not a value type (testing track slice 7, ADR 0155).
bynk.history.restates_invariantA history property merely re-checks a guarantee a declared invariant/transition already enforces on every reached state (testing track slice 7, ADR 0155).
bynk.index.bad_argumentAn @indexed argument is not a by: <field> label.
bynk.index.missingA query filters a map by equality on a field that is not @indexed (a perf-hint warning).Warning
bynk.index.unkeyable_keyAn @indexed(by: k) field is not value-keyable.
bynk.index.unknown_keyAn @indexed(by: k) field is not a field of the map’s value type.
bynk.index.unusedA declared @indexed(by: k) is never used by an equality filter (a hygiene warning).Warning
bynk.invariant.cross_agent_referenceAn invariant predicate references another agent; invariants are per-agent.
bynk.invariant.duplicate_nameAn agent declares two invariants with the same name.
bynk.invariant.impure_predicateAn invariant predicate uses an effectful or test-only construct.
bynk.invariant.not_boolAn invariant predicate does not have type Bool.
bynk.lambda.unannotated_paramA lambda parameter has no type annotation in a position where no function type is expected to infer it from.lambda_expr
bynk.list.deprecated_functionA bynk.list free function (map/filter/find/any/all) is deprecated in favour of the List method form (warning; auto-fixable).Warning
bynk.locale.multiple_message_bundlesA context consumes Locale but its direct uses reaches two or more message-bundle commons — there is no single bundle to negotiate against.
bynk.namespace.reservedA user unit is named bynk or bynk.*; the bynk root is reserved for the toolchain.
bynk.query.join_key_mismatchA joinOn/leftJoin left and right key function return different types.
bynk.query.sum_needs_numericA sum/average key function does not return a numeric type (Int, Float, or Duration).
bynk.requires.unpinned_dependencyAn adapter binding … requires { … } entry has an unpinned version range.binding_decl
bynk.secrets.computed_nameA bynk.Secrets read names its secret with a computed expression rather than a literal, so bynk deploy cannot plan it (warning).Warning
bynk.send.in_pure_contextA ~> send was used in a pure (non-effectful) context.effect_send_stmt
bynk.send.non_effectA ~> send was applied to a non-Effect value.effect_send_stmt
bynk.send.requires_unitA ~> send targets an operation whose reply is not Effect[()].effect_send_stmt
bynk.store.annotation_kind_mismatchA storage annotation is used on a kind it does not apply to (e.g. @ttl on a Map).
bynk.store.annotation_unsupportedA known storage annotation (@ttl/@retain/@indexed/@bounded) is used before the slice that supports it.
bynk.store.cache_needs_clockA handler performs a Cache operation (TTL expiry reads the clock) without declaring given Clock.
bynk.store.cache_ttl_requiredA Cache field is missing its required @ttl(<duration>) annotation (a keyed store with no expiry is a Map).
bynk.store.kind_arityA storage kind was applied to the wrong number of type arguments (e.g. Cell[A, B]).
bynk.store.kind_unsupportedA known storage kind (Queue) is used before the slice that supports it.
bynk.store.log_needs_clockA handler calls Log.append (which stamps the current time) without declaring given Clock.
bynk.store.unknown_annotationA store field carries an annotation outside the closed @indexed/@ttl/@retain/@bounded set.
bynk.store.unknown_kindA store field’s type is not a known storage kind.
bynk.store.unknown_map_accessorA store Map field access is not one of its query accessors (entries/keys/values).
bynk.store.unknown_opA storage-Map/Set operation is not a recognised entry/membership method.
bynk.stub.bad_sequenceA stub … returns each […] sequence is malformed (e.g. empty).
bynk.stub.generic_opA test stub targets a capability operation that declares its own type parameter — not supported at v1.
bynk.stub.not_a_seamA test stub overrides a capability the unit under test does not consume.
bynk.stub.rhs_typeA test stub … returns <value> right-hand side does not match the operation’s return type.
bynk.stub.unknown_opA test stub names an operation the capability does not declare.
bynk.target.browser_bundle_onlyThe browser platform builds only the in-process Bundle topology; --target workers is not a browser build.
bynk.target.vendor_conflictOne deployment unit’s in-process closure uses platform-native capabilities from two mutually-exclusive platforms.consumes_decl
bynk.target.vendor_requiredA deployment unit uses a platform-native capability but the build selects another --platform.consumes_decl
bynk.test.actor_identity_requiredA call-site by <Actor> omits the identity an identity-carrying actor requires.case
bynk.test.actor_no_identityA call-site by <Actor>(x) supplies an identity to an actor that takes none — a unit-identity actor (e.g. Visitor) or Nobody.case
bynk.test.credential_needs_systemA case drives by Nobody (the no-credential principal, which tests the auth seam’s 401) outside a system-tier case, where there is no real seam to reject it.case
bynk.test.nobody_needs_secured_routeA case drives by Nobody at a route that is not Bearer-secured (e.g. a public Visitor route) — there is no auth seam to reject the missing credential.case
bynk.test.principal_identity_mismatchA call-site by <Actor> acts as an actor whose identity is incompatible with the addressed handler’s actor.case
bynk.test.principal_on_wrong_methodA wrong-method 405 test carries a by <Actor> clause; it reaches no handler, so a principal is meaningless.case
bynk.test.principal_requiredA test drives an identity-carrying handler with no call-site by <Actor>(<identity>).case
bynk.test.service_bad_addressA test body addresses a service the wrong way for its protocol (e.g. an http route without a leading path string).case
bynk.test.service_call_arityA test body’s svc.call(...) passes the wrong number of arguments for the service’s on call handler.case
bynk.test.service_no_call_handlerA test body invokes svc.call(...) on a service with no on call handler (a from http/cron/queue service).case
bynk.test.service_unknown_routeA test body addresses an http route / cron schedule / queue message the service does not declare.case
bynk.test.unknown_actorA call-site by <Actor> names an actor the target context does not declare and that is not a prelude actor.case
bynk.test.wire_needs_systemA Wire(...) raw argument is used outside a system-tier service address; Wire hands pre-validation input to the boundary and is meaningless at unit or in any other position.case
bynk.tier.property_has_tierA property carries an as <tier> clause; tiers are a case-only affordance.
bynk.tier.system_needs_wireAn as system test stands up fewer than two contexts; the system tier wires across contexts.
bynk.ws.message_frame_paramA WebSocket on message handler does not have exactly one parameter of the service’s inbound (in:) frame type — the decoded frame (real-time track slice 3b-iii).
bynk.ws.open_given_unsupportedA WebSocket on open handler declares given capabilities — unsupported at v1, since on Workers the handler runs inside the connection-hosting Durable Object, which has no composition root to supply them (real-time track slice 3b).
bynk.ws.open_transfer_shapeA WebSocket on open handler does not transfer its connection into exactly one agent, so the Workers upgrade has no single Durable Object to route to (real-time track slice 3b).
bynk.ws.route_param_mismatchA WebSocket on message/on close route parameter does not match the on open parameter at the same position — route values are recovered positionally from the connection, so they must be a type-compatible prefix of the on open parameters (real-time track slice 3b-iii).
CodeSummaryConstructSeverity
bynk.parse.consumes_after_declsconsumes appears after other declarations.consumes_decl
bynk.parse.dangling_handler_annotationA handler-position annotation (e.g. @cache) is not followed by an on handler.
bynk.parse.duplicate_corsA service declares more than one cors { } policy.service_decl
bynk.parse.duplicate_limitsA service declares more than one limits { } policy.service_decl
bynk.parse.duplicate_securityA service declares more than one security { } policy.service_decl
bynk.parse.empty_agentAn agent body is empty.agent_decl
bynk.parse.empty_capabilityA capability body is empty.capability_decl
bynk.parse.empty_interpolationAn interpolation hole \(…) contains no expression.
bynk.parse.empty_matchA match has no arms.match_expr
bynk.parse.empty_serviceA service body is empty.service_decl
bynk.parse.event_pattern_emptyA from Events(E { ... }) subscription pattern listed no fields — use from Events(E) (no braces) for an unfiltered subscription.
bynk.parse.expected_agent_keyExpected a key declaration in an agent.agent_decl
bynk.parse.expected_agent_storageAn agent declares no storage — it has no store fields.
bynk.parse.expected_base_typeExpected a base type.base_type
bynk.parse.expected_capability_opExpected a capability operation.capability_op
bynk.parse.expected_expressionExpected an expression.
bynk.parse.expected_handlerExpected a handler.handler
bynk.parse.expected_itemExpected a declaration.
bynk.parse.expected_predicateExpected a refinement predicate.refinement
bynk.parse.expected_provider_opExpected a provider operation.provider_op
bynk.parse.expected_tokenExpected a specific token.
bynk.parse.expected_typeExpected a type.
bynk.parse.expected_unit_headerExpected a commons or context header.
bynk.parse.expected_visibilityExpected a visibility keyword.exports_decl
bynk.parse.exports_after_declsexports appears after other declarations.exports_decl
bynk.parse.extra_tokensUnexpected tokens after an otherwise complete construct.
bynk.parse.generic_arg_countWrong number of generic type arguments.generic_type_ref
bynk.parse.handler_in_agentA protocol handler (on GET/schedule/message) was declared in an agent.handler
bynk.parse.invariant_after_handlerAn invariant was declared after a handler; invariants precede handlers.
bynk.parse.malformed_float_literalA float literal is missing a digit on one side of the . (1., .5).float_literal
bynk.parse.nesting_too_deepAn expression or type nests deeper than the parser’s fixed limit.
bynk.parse.non_associativeA non-associative operator was chained (e.g. a == b == c).binary_expr
bynk.parse.orphan_doc_blockA documentation block is not attached to a declaration (warning).Warning
bynk.parse.refined_pattern_innerA refined pattern’s inner form is something other than _.refined_pattern
bynk.parse.reserved_keywordA reserved keyword was used as an identifier.identifier
bynk.parse.self_outside_methodself used outside a method or handler.self_expr
bynk.parse.storage_after_phaseAgent storage (state / store) is declared after the invariants or handlers.
bynk.parse.transition_after_handlerA transition is declared after an agent handler; step invariants precede the handlers.
bynk.parse.unexpected_adapterAn adapter appeared where it is not allowed.
bynk.parse.unexpected_contextA context appeared where it is not allowed.context_decl
bynk.parse.unexpected_eofUnexpected end of input.
bynk.parse.unexpected_suiteA suite appeared where it is not allowed.suite_decl
bynk.parse.unknown_effect_methodAn unknown method on Effect.
bynk.parse.unknown_handler_kindAn unknown handler form (expected call, an HTTP method, schedule, or message).handler
bynk.parse.unknown_predicateAn unknown refinement predicate.predicate_name
bynk.parse.unknown_tierA case/suite as <tier> clause names something other than unit, integration, or system.
bynk.parse.uses_after_declsuses appears after other declarations.uses_decl
bynk.parse.variant_name_caseA sum-type or enum variant name is not capitalised.sum_variant, enum_type
CodeSummaryConstructSeverity
bynk.project.file_and_directoryA unit exists as both a file and a directory.
bynk.project.inconsistent_commons_nameA source file’s path does not match its declared name.
bynk.project.kind_conflictA name is declared as both a commons and a context.
bynk.project.no_rootNo project root could be determined.
bynk.project.no_sourcesThe project contains no source files.
bynk.project.read_failedA source file could not be read.
bynk.project.schema_registry_corruptbynk.schema.lock (the events schema registry) is missing its version field, empty, truncated, or otherwise unparseable — restore it from version control rather than deleting it, since deleting it would silently re-baseline every event’s history.
CodeSummaryConstructSeverity
bynk.property.restates_refinementA property merely re-checks a refinement its type already guarantees.for_all
bynk.property.where_not_boolA for all ... where filter does not type to Bool.for_all
CodeSummaryConstructSeverity
bynk.provider.dependency_cycleProviders form a capability dependency cycle through given.provider_decl
bynk.provider.extra_operationA provides block implements an operation not in the capability.provider_decl
bynk.provider.generic_op_requires_externalA Bynk-bodied provides implements a capability operation that declares its own type parameter — only an external (bodiless) provider can.provider_decl
bynk.provider.missing_operationA provides block is missing a capability operation.provider_decl
bynk.provider.outside_contextprovides was declared outside a context.provider_decl
bynk.provider.signature_mismatchA provides operation’s signature does not match the capability.provider_decl
bynk.provider.unknown_capabilityprovides names a capability that does not exist.provider_decl
CodeSummaryConstructSeverity
bynk.queue.bad_paramsAn on message handler does not take exactly one message parameter.queue_handler
bynk.queue.duplicate_consumerTwo on message handlers consume the same queue.queue_handler
bynk.queue.invalid_nameA from queue("…") binding has an empty queue name.queue_handler
bynk.queue.return_not_queue_resultAn on message handler does not return Effect[QueueResult].handler
CodeSummaryConstructSeverity
bynk.record_spread.field_type_mismatchA record-spread override has the wrong type for the field.record_spread
bynk.record_spread.non_record_baseThe base of a record spread is not a record.record_spread
bynk.record_spread.type_mismatchA record spread’s base is a different record type.record_spread
bynk.record_spread.unknown_fieldA record spread overrides a field the record does not have.record_spread
CodeSummaryConstructSeverity
bynk.refine.literal_violatesA literal does not satisfy the refined type’s predicate.refined_type
CodeSummaryConstructSeverity
bynk.resolve.ambiguous_variantA variant name is ambiguous across several sum types.
bynk.resolve.arity_mismatchA function was called with the wrong number of arguments.call
bynk.resolve.duplicate_actorTwo actors share a name.
bynk.resolve.duplicate_agentTwo agents share a name.agent_decl
bynk.resolve.duplicate_capabilityTwo capabilities share a name.capability_decl
bynk.resolve.duplicate_fieldA record declares a field twice.record_type
bynk.resolve.duplicate_field_initA record construction initialises a field twice.record_construction
bynk.resolve.duplicate_fnTwo functions share a name.fn_decl
bynk.resolve.duplicate_message_codeA message bundle declares the same code twice in one block.
bynk.resolve.duplicate_message_localeTwo messages blocks in one bundle declare the same locale tag.
bynk.resolve.duplicate_methodTwo methods share a name.fn_decl
bynk.resolve.duplicate_paramA parameter name is repeated.param
bynk.resolve.duplicate_providerA capability is provided more than once.provider_decl
bynk.resolve.duplicate_serviceTwo services share a name.service_decl
bynk.resolve.duplicate_typeTwo types share a name.type_decl
bynk.resolve.duplicate_variantA sum type declares a variant twice.sum_type
bynk.resolve.fn_without_callA function was referenced without being called.
bynk.resolve.let_shadows_fnA let binding shadows a function.let_stmt
bynk.resolve.let_shadows_typeA let binding shadows a type.let_stmt
bynk.resolve.method_unknown_typeA method is defined on an unknown type.
bynk.resolve.missing_fieldA record construction omits a required field.record_construction
bynk.resolve.name_conflictTwo declarations share a name.
bynk.resolve.not_a_record_typeRecord syntax was used on a non-record type.record_construction
bynk.resolve.opaque_record_constructionAn opaque type was constructed with record syntax.record_construction
bynk.resolve.param_as_functionA value (such as a parameter) was called as a function.call
bynk.resolve.recursive_record_fieldA record directly contains a field of its own type.record_type
bynk.resolve.reserved_builtin_typeA type declaration reuses a compiler-known built-in type name.type_decl
bynk.resolve.self_outside_methodself referenced outside a method or handler.self_expr
bynk.resolve.type_as_functionA type name was called as if it were a function.call
bynk.resolve.type_in_exprA type name was used where a value is expected.
bynk.resolve.unconsumed_contextA context’s service was called without a consumes declaration.consumes_decl
bynk.resolve.unknown_fieldAccessed a field the record does not have.field_access
bynk.resolve.unknown_functionCalled a function that does not exist.call
bynk.resolve.unknown_nameReferenced a name that is not in scope.
bynk.resolve.unknown_static_memberReferenced an unknown static member (e.g. T.x).field_access
bynk.resolve.unknown_typeReferenced a type that does not exist.
CodeSummaryConstructSeverity
bynk.service.missing_fromA from-less service has a handler other than on call.service_decl
bynk.service.mixed_protocolsA service mixes handler forms that do not match its from <protocol>.service_decl
bynk.service.outside_contextA service was declared outside a context.service_decl
bynk.service.return_not_effectA service handler’s return type is not an Effect.service_decl
bynk.service.unknown_protocolA from <protocol> names an unknown protocol (e.g. a transport like Kafka).service_decl
bynk.service.unknown_via_clauseA via <name>(...) clause on a from Events(...) header named something other than schemavia clauses are a closed set, and only via schema(...) exists today.
bynk.service.websocket_headerThe from websocket header is malformed — it binds frame types as websocket(in: <type>, out: <type>) (real-time track slice 3).
bynk.service.websocket_multipleA context holds more than one from websocket service — at v1 the Workers upgrade routes by the Upgrade: websocket header alone, so one WebSocket service per context (real-time track slice 3b).
bynk.service.websocket_open_arityA from websocket service must hold exactly one on open handler (the edge upgrade), and at most one on message (inbound) and one on close (real-time track slice 3/3b-iii).
CodeSummaryConstructSeverity
bynk.suite.duplicate_case_nameTwo cases share a description.case
bynk.suite.unknown_targetA suite targets a unit that does not exist.suite_decl
CodeSummaryConstructSeverity
bynk.transition.cross_agent_referenceA transition predicate references another agent; step invariants are per-agent.
bynk.transition.duplicate_nameAn agent declares two transitions with the same name.
bynk.transition.impure_predicateA transition predicate uses an effectful or test-only construct; a step invariant must be pure.
bynk.transition.no_step_referenceA transition references neither old nor new; it constrains one state, so it is an invariant, not a step.
bynk.transition.not_boolA transition predicate does not have type Bool.
CodeSummaryConstructSeverity
bynk.types.ambiguous_constructorOk/Err is ambiguous between Result and HttpResult; qualify it.
bynk.types.argument_mismatchA call, method, capability, or constructor argument has the wrong type.call
bynk.types.call_arityA function value was applied with the wrong number of arguments.call
bynk.types.cannot_infer_option_type_paramThe value type of None could not be inferred.none_expr
bynk.types.cannot_infer_result_type_paramsThe type parameters of a Result could not be inferred.
bynk.types.catastrophic_regexA Matches predicate nests unbounded quantifiers, risking catastrophic backtracking (ReDoS).refinement
bynk.types.combinator_return_mismatchA callback passed to a combinator (map/andThen/flatMap/traverseAll/…) returns the wrong type.call
bynk.types.constructor_arityA variant constructor got the wrong number of arguments.
bynk.types.constructor_base_mismatchA .of constructor was given an argument of the wrong base type.
bynk.types.duplicate_literal_armA match has two arms for the same literal value.match_arm
bynk.types.duplicate_variant_armA match has two arms for the same variant.match_arm
bynk.types.embeds_ambiguousA type is embedded by more than one variant of a sum, so ?’s conversion would be ambiguous.
bynk.types.embeds_unknown_variantAn embeds … as V clause names a variant the sum does not declare.
bynk.types.embeds_variant_shapeAn embeds E as V target variant must have exactly one payload field, of type E.
bynk.types.empty_refinementA refinement admits no values (contradictory predicates).refinement
bynk.types.err_value_mismatchAn Err payload has the wrong type.err_expr
bynk.types.field_access_on_non_recordField access on a value that is not a record.field_access
bynk.types.field_refinement_not_baseAn inline field refinement requires a base or refined type.record_field
bynk.types.field_value_mismatchA record field was given a value of the wrong type.record_construction
bynk.types.function_at_boundaryA function type appeared in a serialisable or boundary position (a record field, sum payload, service/agent handler signature, capability operation signature, agent state field, or agent key); functions cannot serialise or cross a boundary.function_type_ref
bynk.types.guard_not_boolA match-arm if guard is not a Bool expression.match_arm
bynk.types.held_at_boundaryA held value (Connection[F]) appears in a serialisable or boundary position — a held resource is built and disposed in place, never persisted or sent across a boundary (§2.9, real-time track slice 2).
bynk.types.held_not_comparableA held value (Connection[F]) is compared with ==/!= — held values have identity, not value-equality (§2.9.3, real-time track slice 2).
bynk.types.if_branch_mismatchThe branches of an if have different types.if_expr
bynk.types.if_non_bool_condAn if condition is not a Bool.if_expr
bynk.types.if_without_else_requires_unitAn if with no else branch has a non-unit then-branch; the missing else defaults to (), so the branch must be () or Effect[()].if_expr
bynk.types.interpolation_non_scalarAn interpolation hole holds a value with no string form.
bynk.types.invalid_regexA Matches predicate contains an invalid regular expression.refinement
bynk.types.inverted_rangeAn InRange predicate has its bounds inverted.refinement
bynk.types.is_base_mismatchAn is refinement check is applied to a value of the wrong base type.is_expr
bynk.types.is_literal_patternA literal was used on the right of is; is tests type/refinement, not value equality (use ==).is_expr
bynk.types.is_non_sumis was applied to a value that is not a sum type.is_expr
bynk.types.is_refined_patternA refined (where) pattern was used on the right of is; refined patterns are match-only.is_expr
bynk.types.is_unknown_variantis names a variant the type does not have.is_expr
bynk.types.json_uncodableA Json.encode/Json.decode target type cannot pass through the typed JSON codec (functions, effects, error builtins).method_call
bynk.types.key_not_orderableA sortBy/min/max key function does not return an orderable type (Int, Float, String, Duration, or Instant).
bynk.types.lambda_mismatchA lambda’s parameter count, parameter annotations, or body type do not match the expected function type.lambda_expr
bynk.types.let_annotation_mismatchA let value does not match its type annotation.let_stmt
bynk.types.list_element_mismatchA list-literal element has a different type from the list’s element type.list_literal
bynk.types.match_arm_mismatchA match arm has a different type from the others.match_arm
bynk.types.match_non_sum_discriminantmatch was applied to a value that is not a sum type.match_expr
bynk.types.method_arityA method was called with the wrong number of arguments.method_call
bynk.types.method_not_foundCalled a method the type does not have.method_call
bynk.types.method_on_non_named_typeA method was called on a built-in type that has no methods.method_call
bynk.types.mixed_pattern_bindingsA pattern mixes named and positional bindings.variant_pattern
bynk.types.negative_lengthA length predicate was given a negative value.refinement
bynk.types.no_numeric_coercionInt and Float were mixed without an explicit conversion — in an operation or in refinement bounds.binary_expr, refinement
bynk.types.non_exhaustive_matchA match does not cover every variant.match_expr
bynk.types.ok_value_mismatchAn Ok payload has the wrong type.ok_expr
bynk.types.opaque_raw_outside.raw on an opaque type was used outside its defining commons.field_access
bynk.types.opaque_record_constructionAn opaque type was constructed with record syntax.record_construction
bynk.types.opaque_unsafe_outside.unsafe on an opaque type was used outside its defining context.field_access
bynk.types.or_pattern_binding_mismatchAn or-pattern’s alternatives don’t all bind the same set of names.match_arm, is_expr
bynk.types.or_pattern_type_mismatchAn or-pattern’s alternatives give a shared binding different types (or refinements).match_arm, is_expr
bynk.types.pattern_arityA pattern binds the wrong number of payload fields.variant_pattern
bynk.types.pattern_type_mismatchA pattern’s type does not match the matched value.variant_pattern
bynk.types.predicate_base_mismatchA predicate does not apply to the type’s base (e.g. a string predicate on an Int).refinement
bynk.types.query_at_boundaryA Query type appears in a storable or boundary-crossing position — a query is built and executed in place, never persisted or sent (ADR 0115).
bynk.types.question_error_mismatch? propagates an error type incompatible with the function’s.question_expr
bynk.types.question_on_non_result? was applied to a non-Result value.question_expr
bynk.types.question_option_outside_http? lifts an Option only inside a handler returning HttpResult (None becomes NotFound); elsewhere use .okOr(err).question_expr
bynk.types.question_outside_result? used in a function that does not return a Result.question_expr
bynk.types.return_mismatchA returned value does not match the declared return type.
bynk.types.some_value_mismatchA Some payload has the wrong type.some_expr
bynk.types.stream_at_boundaryA Stream type appears in a storable or boundary-crossing position — a stream is a live value-over-time source, never persisted or sent across a boundary (real-time track slice 0).
bynk.types.stream_not_comparableA Stream value is compared with ==/!= — a stream is a live value-over-time source, not a comparable value (real-time track slice 0).
bynk.types.type_mismatchTwo types that were required to match did not.
bynk.types.uninferable_element_typeAn empty [] (or List.empty() / Map.empty()) has no expected type to infer its element type from.list_literal
bynk.types.unkeyable_distinctA distinct/distinctBy element or key is not value-keyable (String, Int, or a refined/opaque type over them).
bynk.types.unkeyable_map_keyA Map key type is not value-keyable (String, Int, or a refined/opaque type over them).generic_type_ref
bynk.types.unknown_fieldReferenced a field the record type does not declare.field_access
bynk.types.unknown_pattern_fieldA pattern names a field the variant does not have.variant_pattern
bynk.types.unknown_static_memberReferenced an unknown static member on a type.field_access
bynk.types.unknown_variant_in_patternA pattern names a variant the sum type does not have.variant_pattern
bynk.types.unreachable_armA match arm is unreachable.match_arm
bynk.types.variant_arityA variant constructor got the wrong number of payload values.
bynk.types.variant_missing_payloadA variant requiring a payload was used without one.
bynk.types.variant_payload_mismatchA variant payload has the wrong type.
CodeSummaryConstructSeverity
bynk.uses.name_conflictA uses name collides with another name.uses_decl
bynk.uses.self_referenceA commons uses itself.uses_decl
bynk.uses.target_is_contextuses targets a context instead of a commons.uses_decl
bynk.uses.unknown_commonsuses names a commons that does not exist.uses_decl
CodeSummaryConstructSeverity
bynk.val.agent_not_generableA for all/Val cannot generate an agent — fabricated agent states need not be reachable.for_all
bynk.val.arityVal[T] was given the wrong number of pin arguments.val_expr
bynk.val.literal_violatesA pinned Val[T] value violates the type’s refinement.val_expr
bynk.val.needs_pinA bare Val[T] cannot generate a value (e.g. a Matches string); pin one.val_expr
bynk.val.outside_testVal[T] was used outside a test case body.val_expr
bynk.val.pin_not_literalA Val[T] pin argument is not a compile-time literal.val_expr
bynk.val.pin_unsupportedA pin was given for a type kind that does not support pinning.val_expr
bynk.val.unknown_typeVal[T] names a type that does not resolve.val_expr
bynk.val.unsupported_kindVal[T] cannot fabricate a value for this kind of type.val_expr