Reference · errors
Compiler errors
Every rule the compiler can report, 661 in all, grouped by part of the language. Each error the compiler prints ends with a rule line naming one, and that rule's page shows an example and the fix.
- Project layout and modules
- Values and types
- Logic
- Failures
- Data
- Reads and writes
- HTTP
- Identity
- Policy
- Configuration and time
- External services
- Jobs and events
- Testing
- Tooling
- Built-in services
- Records and manifest
- Standard library
- AI
Project layout and modules
- decline.no_reason
Decline gives no reason
- decline.not_declinable
Decline names a rule that can't be declined
- decline.unused
Decline's rule no longer fires on its declaration
- import.duplicate
Name or folder imported twice
- import.missing
Name used without its import
- import.unknown
Import names nothing in its folder
- import.unneeded
Import of a name the file sees without one
- import.unused
Imported name the file does not use
- layout.call_direction
Shared code depends on a domain
- layout.file_name_mismatch
File name does not match its declaration
- layout.promotion_required
Declaration is used beyond the file that holds it
- layout.route_prefix_mismatch
Route group prefix does not match its file name
- layout.test_without_subject
Test file has no subject beside it
- layout.unknown_location
Jadpo file is outside the fixed layout
- layout.unused_declaration
Shared declaration is not used
- layout.wrong_folder
Declaration is in the wrong folder
- library.similar_exists
A library function already does the same
- naming.folded_collision
Two names fold to the same file name
- naming.generic_name
Domain or library has a generic name
- naming.round_trip
Name does not survive conversion to its file name
- semantic.duplicate_declaration
Name is declared more than once
- semantic.name_case
Name has the wrong case for its kind
- semantic.not_callable
Name cannot be called
- semantic.own_domain_qualification
Own-domain call is qualified
- semantic.standard_namespace_reserved
Name belongs to a standard-library namespace
- semantic.standard_operation_qualification
Standard-library operation is called without its namespace
- semantic.unknown_callee
Called name is not declared
- semantic.unknown_name
Name is not declared
- semantic.wrong_name_kind
Name is the wrong kind of declaration here
- syntax.comment_style
Comment written with
#or/* */ - syntax.expected_declaration
Expected a declaration
- syntax.expected_name
Expected a name
- syntax.export_keyword
Declaration marked
exportorpub - syntax.import_statement
Import written in another language's form
- syntax.invalid_escape
Unknown escape in a string
- syntax.unexpected_character
Character is not part of Jadpo
- syntax.unexpected_token
Something else was expected here
- syntax.unterminated_string
String is not closed
- toolchain.empty_project
Project declares nothing
- toolchain.version_invalid
Application's
jadpo:is not a major and minor version as text - toolchain.version_newer
Project is on a later Jadpo line
- toolchain.version_older
Project is on an earlier Jadpo line
- visibility.private_cross_domain
Another domain uses a private declaration
- visibility.public_not_allowed
Declaration can't be public
- visibility.public_reaches_private
Public declaration's signature names one that isn't public
- visibility.public_unused
Public declaration no other domain uses
Values and types
- syntax.collection_type
Collection type written in another language's form
- syntax.new_keyword
Value created with
new - syntax.null_coalescing
Default for a missing value written with
?? - syntax.nullable_type
Nullable type written in another language's form
- syntax.optional_chaining
Field of a missing value read with
?. - syntax.string_quotes
String in single quotes or backticks
- syntax.type_block_required
Type has no block
- syntax.type_keyword
Type declared with
struct,interfaceorenum - syntax.type_parent_required
Type has no base
- syntax.variable_type_required
Variable has no type
- type.absent_field
Omitted or optional field is not present
- type.base_outside_declaration
Base is used outside a type declaration
- type.constraint_base
Constraint does not fit the type's base
- type.constraint_contradiction
Constraints contradict each other
- type.constraint_loosened
Refinement loosens a rule it inherits
- type.constraint_repeated
Constraint is given twice
- type.constructor_argument_count
Constructor is not given exactly one value
- type.constructor_input
Value cannot be converted to this type
- type.copy_clash
Copied field would replace another field
- type.copy_cycle
Type includes its own fields
- type.copy_into_input
Input copies every field of another type
- type.decimal_scale_required
Decimal type has no scale
- type.duplicate_field
Field is given twice
- type.duplicate_variant
Enum variant is declared twice
- type.duplicate_variant_field
Variant field is given twice
- type.enum_empty
Enum declares no variants
- type.enum_label
Enum variant is given a label or a value
- type.field_on_non_record
Field is read from a value without fields
- type.field_unproved
Object field value may break the field's rules
- type.foreign_type
Type named as another language names it
- type.foreign_value
Value written as another language writes it
- type.invalid_literal
Literal breaks its type's rules
- type.invalid_pattern
Pattern is not a supported regular expression
- type.map_key_boundary
Map key at a boundary isn't text
- type.mismatch
Value has the wrong type
- type.missing_field
Object is missing a field
- type.missing_variant_field
Variant is missing a field
- type.not_a_type
Field's type is written as a value or a call
- type.not_record
Braces build a type that has no fields
- type.nullable_selection
Field is read from a value that may be none
- type.optional_outside_input
Optional or default field outside an Input
- type.primitive_signature
Signature uses a built-in type directly
- type.redundant_nullability
Type is already nullable
- type.reserved_field_name
Field uses a reserved name
- type.rule_name_taken
Rule is named like a field, another rule or
invalid - type.rule_not_condition
Rule's condition isn't a
Bool - type.rule_outside_fields
Rule reads something besides its type's fields
- type.rule_outside_object
Rule is written outside an object type
- type.setting_value
Setting has the wrong kind of value
- type.sibling_mismatch
Field type is used for a sibling field type
- type.type_argument_count
Type has the wrong number of type arguments
- type.unknown_enum_variant
Enum has no such variant
- type.unknown_field
Type has no such field
- type.unknown_setting
Setting is not one Jadpo knows
- type.unknown_variant_field
Variant has no such field
Logic
- constant.cycle
Constant's value depends on itself
- constant.similar_exists
Another constant of the same type holds the same value
- constant.value_not_fixed
Constant's value is only known while the app runs
- effect.call_in_loop
Outside call inside a
forloop - effect.function_calls_action
Function calls an action or query
- effect.function_persistence
Function reads or writes stored data
- effect.recursive_action
Action is part of a call cycle
- failure.attempt_infallible
Attempt is used on something that cannot fail
- failure.attempt_required
Call that can fail is not handled
- failure.outcome_duplicate_arm
Outcome match handles a failure twice
- failure.outcome_infallible
Outcome match is on a call that cannot fail
- failure.outcome_missing_arm
Outcome match does not handle every failure
- failure.outcome_pattern_invalid
Outcome match arm has a pattern for values
- failure.outcome_subject_required
Outcome match is not on a call
- failure.outcome_success_duplicate
Outcome match repeats its success arm
- failure.outcome_success_missing
Outcome match has no success arm
- failure.outcome_success_value_required
Success arm passes on a failure
- failure.outcome_unknown_arm
Outcome arm names a failure the call cannot produce
- failure.outcome_wildcard
Outcome match uses a wildcard
- failure.propagate_placement
Propagate is used outside a failure arm
- failure.reject_placement
Reject is used inside an expression
- semantic.missing_return
Callable can end without returning its result
- semantic.unreachable_code
Code can never run
- semantic.unused_result
Value is computed and thrown away
- semantic.unused_variable
Variable is never used
- syntax.async_await
Code marked
asyncorawait - syntax.attempt_placement
Attempt is used inside an expression
- syntax.colon_required
Member has no colon before its value
- syntax.condition_brackets
Condition is not in brackets
- syntax.else_if
Else-if written as
eliforelsif - syntax.equality_operator
Comparison written with another language's operator
- syntax.expected_expression
Expected a value
- syntax.expected_statement
Expected a statement
- syntax.for_loop
Loop written in another language's form
- syntax.function_keyword
Function declared with
fn,func,deforfun - syntax.increment_operator
Variable changed with
++,--or+= - syntax.inline_function_arrow
Inline function written in another language's form
- syntax.logical_operator
Logical operator written in another language's form
- syntax.match_arrow
Match arm uses
=> - syntax.match_pattern
Expected a match pattern
- syntax.member_comma
Members separated by commas
- syntax.named_argument_duplicate
Named argument is given twice
- syntax.named_argument_equals
Named argument written with
= - syntax.positional_after_named
Positional argument follows a named one
- syntax.return_type_arrow
Result type written after
: - syntax.semicolon
Statement or member ends with
; - syntax.switch_statement
Choice written with
switchorwhen - syntax.ternary_operator
Value chosen with
? : - syntax.try_catch
Failure handled with
try,catchor? - syntax.unsupported_throw
Failure raised with
throworraise - syntax.variable_keyword
Variable declared with
let,constorval - toolchain.not_built_yet
Operation is declared but not built yet
- type.argument_count
Call has the wrong number of arguments
- type.arithmetic_operand
Arithmetic operand has the wrong type
- type.assign_immutable
Value that never changes is assigned
- type.assign_unknown
Assignment target is not declared
- type.divisor_zero
Divisor may be zero
- type.incomparable
Values cannot be compared for equality
- type.inline_function_parameters
Inline function has a different number of parameters than its operation gives
- type.inline_function_placement
Inline function is not an argument to a collection operation
- type.logical_operand
Logical operator needs Bool operands
- type.match_arm_value
Match arm gives no value
- type.match_duplicate_pattern
Match pattern is already covered
- type.match_non_exhaustive
Match does not cover every case
- type.match_pattern_type
Pattern cannot match this value
- type.match_some_non_optional
Nullable pattern on a value that is never none
- type.match_unknown_binding
Pattern names data a case does not carry
- type.match_unknown_variant
Pattern names an unknown enum variant
- type.match_unreachable_pattern
Match arm is unreachable after the wildcard
- type.match_wildcard_closed
Wildcard on a value whose cases can be listed
- type.match_wildcard_required
Open value space needs a wildcard arm
- type.named_argument_unknown
Named argument is not a parameter
- type.named_argument_unsupported
Callable does not take named arguments
- type.not_a_value
Declaration named where a value is read
- type.ordering_operand
Values cannot be ordered
- type.unary_operand
Operator cannot be used with this value
- type.unknown_value
Name is not defined in this scope
Failures
- failure.code_format
Failure code is not lower_snake_case
- failure.context_field_overlap
Field is declared for both the client and the log
- failure.duplicate_code
Failure code is already in use
- failure.duplicate_context_field
Failure field is given twice
- failure.duplicate_declaration
Failure is listed twice after
fails - failure.duplicate_mapping
Condition is mapped twice
- failure.invalid_covers_nothing
Catch-all covers no rule, because every rule that can break has an arm
- failure.invalid_outside_construction
Catch-all for rules is used on something that is not a construction
- failure.kind_required
Failure has no kind
- failure.kind_runtime_only
Failure kind is raised only by the runtime
- failure.mapping_kind
Mapped failure's kind does not fit its condition
- failure.missing_context_field
Rejected failure is missing a field
- failure.rule_cannot_break
Arm maps a rule the value cannot break
- failure.rule_unmapped
Rule that can break has no arm and no catch-all
- failure.stale_declaration
Listed failure can never happen
- failure.undeclared_propagation
Failure that can leave is not listed after
fails - failure.unknown_context_field
Rejected failure has no such field
- failure.unknown_mapping
Mapping names a condition the operation does not have
- syntax.fails_after_result
Fails list comes after the result type
- syntax.mapping_block_required
Mappings are written after the call instead of in a block
Data
- data.cleared_required_reference
A reference that can never be
noneis cleared on delete - data.duplicate_rule
Unique rule or index repeats another
- data.entity_in_field
Field holds an entity instead of a reference to one
- data.field_list_required
Unique rule or index is not a list of fields
- data.field_without_json
Structured field holds a type with no stored JSON form
- data.generated_type
Generated field is not a required
Instant - data.identity_missing
Entity has no
idfield - data.identity_type
Entity's
idis not a requiredUuid - data.lifecycle_condition
Lifecycle condition isn't a test of the record's own fields
- data.lifecycle_initial_required
Required field a transition sets has no starting value
- data.lifecycle_purge_after
Purge's
after:isn't a positive duration - data.lifecycle_purge_since
Purge's
since:isn't a time field of the record - data.lifecycle_purge_visible
Lifecycle purges records but hides none
- data.lifecycle_section
Lifecycle has a section it doesn't take, or lacks one it needs
- data.lifecycle_transition_name
Transition is named like another operation or a field
- data.lifecycle_unknown_field
Lifecycle names a field the entity doesn't have
- data.lifecycle_value
Lifecycle sets a value that isn't fixed
- data.name_too_long
Name is too long for a table or column
- data.on_delete_not_reference
Field that is not a reference sets
on_delete - data.on_delete_required
Reference does not say what deleting its record does
- data.reference_across_stores
Reference points at an entity in another store
- data.reference_cycle
Required references form a cycle
- data.repeated_field
Unique rule or index lists a field twice
- data.reserved_table_name
Entity's table name starts with
jadpo_ - data.store_required
Entity names no store and there is no
main - data.store_unknown
Entity's store is not a database connection
- data.unique_nullable_field
Unique rule includes a field that can be
none - data.unique_single_field
Unique rule has only one field
- data.unknown_field
Unique rule or index names a field the entity does not have
- data.unknown_section
Entity has a section Jadpo does not know
- migration.backfill_can_fail
Computed backfill can fail
- migration.backfill_outside_row
Computed backfill reads more than its row
- migration.decision_invalid
Migration decision does not fit its change
- migration.decision_required
Migration needs a decision
- migration.decision_unknown
Migration decides about something that is not changing
- migration.out_of_date
Entities and the latest migration disagree
- migration.record_invalid
Migration folder cannot be read
- migration.unfinished
Latest migration is not finished
Reads and writes
- data.conflict_cannot_break
Conflict mapping for a rule the write can't break
- data.conflict_unknown
Conflict mapping names no unique rule or reference
- data.conflict_unmapped
Write can break a rule its
conflict:doesn't map - data.lifecycle_hard_delete
Delete would remove a record its lifecycle keeps
- data.lifecycle_owned_field
Write sets a field only the lifecycle changes
- data.patch_field_required
Patch input has a field that isn't optional
- data.patch_field_unknown
Patch names a field the entity or its input doesn't have
- data.patch_not_input
Patch given something other than an
Input - data.patch_overlap
Supplied-field block sets a field the patch already sets
- data.read_in_loop
Query or
getinside aforloop - data.set_generated_field
Write sets a field the store generates
- data.stored_decimal_scale
Update by
idadds a decimal with more places than its field keeps - data.stored_value_outside_update
Stored field read outside an update by
id - data.stored_value_unproven
Update by
idbuilds a value from a stored field that could break its type's rules - data.update_by_id_value
Update by
idsets a value from something it can't use - data.write_before_call
Write comes before a later outside call
- data.write_not_entity
Write names a type that isn't an entity
- data.write_section_required
Write doesn't say what it changes
- data.write_section_unexpected
Write has a section it doesn't take
- query.aggregate_argument
Aggregate is given the wrong arguments
- query.aggregate_field
Aggregate cannot be worked out over this field
- query.aggregate_unknown
Aggregate entry is not count, sum, min, max or average
- query.condition_unsupported
Query condition is not one an index can serve
- query.from_not_entity
Query reads something that is not an entity
- query.geometry_field
Map layer's geometry field is not a stored geometry of its type
- query.group_key
Records cannot be grouped by this
- query.include_depth
Includes nest more than two levels
- query.include_result
Result type has no field of the right shape for an include
- query.include_unknown
Include names no reference to or from the entity
- query.limit_range
Query limit or page size is below 1
- query.limit_unbounded
Query limit or page size comes from a value with no maximum
- query.not_unique
Query for one record can match several
- query.optional_value
Condition compares with a value that may be absent, or
where_present:with one that is always there - query.order_direction
Order field has no
ascordesc - query.order_field
Field cannot be in a query's order
- query.other_domain
Query reads another domain's entity
- query.page_setting
Page block is missing a setting or has a wrong one
- query.repeated_section
Query section is given twice
- query.result_field
Result type has a field the entity cannot fill
- query.result_rule
Query result type has rules across its fields
- query.result_type
Query result is not the entity or a type derived from it
- query.section_required
Query is missing a section its result needs
- query.section_unexpected
Query has a section its result does not take
- query.unknown_field
Query names a field its entity does not have
- query.unknown_section
Query has a section Jadpo does not know
- query.value_unsupported
Query value is computed rather than a parameter, literal or enum value
- store.action_spans_stores
Action writes more than one store
HTTP
- api.authentication_invalid
API authentication is not a list of declared sign-in methods
- api.idempotency_invalid
API idempotency is not an Idempotency
- api.prefix_overlap
Two APIs share a prefix
- api.prefix_required
Declared API has no prefix
- api.serve_openapi_invalid
API serve_openapi is not true or false
- api.setting_unknown
API setting is not one an API takes
- route.api_unknown
Route group names an API the application doesn't declare
- route.argument_invalid
Route passes something other than a placeholder, the input or their fields
- route.authentication_invalid
Route authentication is not RouteAuthentication.none or .fresh
- route.binding_unused
Route reads a placeholder or input it never passes on
- route.deadline_invalid
Route deadline is not a duration up to 60 seconds
- route.header_credential
Input field reads a header authentication owns
- route.header_duplicate
Two input fields read the same header
- route.header_name_invalid
Header name is not a valid HTTP header name
- route.header_not_scalar
Header field is not a single value
- route.input_not_input
Route input is not an
Inputtype - route.item_duplicate
Route item is given twice
- route.item_unknown
Route or route group item is not one it takes
- route.output_mismatch
Route output is not exactly what it runs returns
- route.output_not_output
Route output is not an
Outputtype - route.output_required
Route has no
output: - route.output_unexpected
A
no_contentroute has an output - route.path_overlap
Two routes could answer the same request
- route.placeholder_duplicate
Placeholder name is used twice in a route's path
- route.placeholder_type
Placeholder is not typed with a named scalar or an
X.id - route.prefix_api
Route group prefix does not start with its API's prefix
- route.prefix_required
Route group has no prefix
- route.query_field_unsupported
Query-string input field is not a scalar, an enum or a list of them
- route.run_invalid
Route
run:is not a call of a named action or query - route.run_kind
A
GETroute runs a query and other methods run an action - route.run_required
Route does not say what it runs
- route.settle_invalid
Route
settle:is not an answer query and a wait inside its deadline - route.status_invalid
Route status is not a
SuccessStatus - route.stream_invalid
Streaming route answers with another status or waits with
settle: - syntax.expected_http_method
Route method is not one a route is written with
Identity
- semantic.auth_method_duplicate
Sign-in method is declared twice
- semantic.auth_method_unknown
Sign-in method is not one the language has
- semantic.auth_not_set_up
Routes need a signed-in caller, but nothing signs anyone in
- semantic.auth_principal_required
Sign-in method has no principal variant to sign in
- semantic.auth_setting_invalid
Sign-in setting has a value it can't take
- semantic.auth_setting_required
Sign-in method is missing a setting it needs
- semantic.auth_setting_unknown
Sign-in setting is not one the method takes
- semantic.multiple_applications
Project declares more than one application
- semantic.multiple_authentication
Project declares more than one authentication block
- semantic.multiple_principals
Project declares more than one principal
- semantic.principal_variant_duplicate
Principal declares a variant twice
- semantic.principal_variant_invalid
Principal variant is not a subject and an optional active condition
- semantic.principal_variant_required
Principal declares neither a user nor a service
- semantic.principal_variant_unknown
Principal variant is not user or service
- semantic.revocation_delay_invalid
Revocation delay is not a positive duration
- type.auth_credential_stored
Entity field holds an API token or a service key
- type.auth_principal_construction
Caller is made from a record outside tests, fixtures and seeds
- type.auth_principal_failure_context
Failure field holds a caller
- type.auth_principal_input
Input field holds a caller
- type.auth_principal_output
Output field holds a caller
- type.auth_principal_variant_unknown
Caller variant is not one the principal declares
- type.auth_public_principal
Public route passes a caller it never reads
- type.auth_sessions_context
Session, API token or service key operation outside an action, or without its sign-in method
- type.principal_active_invalid
Principal's active condition is not a test of the record's own fields
- type.principal_subject_invalid
Principal's subject is not a field of a stored entity
- type.principal_subject_not_unique
Principal's subject field is not unique
Policy
- policy.binding_invalid
Policy names something that can't say who
- policy.declaration_duplicate
Policy is declared twice
- policy.effect_duplicate
Policy gives the same list twice
- policy.effect_ungranted
Route reaches something no grant allows
- policy.effect_unknown
Policy holds something that isn't a grant or a setting
- policy.event_tenant_unproved
An event or a batch names a tenant its action never reached under its caller's policy
- policy.field_widens_entity
Field policy lets in someone its record's grants don't
- policy.membership_duplicate
Entity declares a membership twice, or gives one of its parts twice
- policy.membership_member_required
Membership doesn't say who holds it
- policy.membership_role_required
Membership doesn't say which field holds the role
- policy.membership_scope_required
Membership doesn't say what it is held in
- policy.output_field_unproved
Output carries a value not every caller may read
- policy.public_grant_missing
Route anyone may call reaches what not everyone may do
- policy.role_field_create_forbidden
Create sets the user field its grant needs from the request, not the caller
- policy.role_unbound
Grant names a role no membership holds
- policy.scope_ambiguous
Grant doesn't say which reference a role or the tenant applies through
- policy.scope_duplicate
A scope or tenant is given twice
- policy.scope_missing
Entity has no reference a role or the tenant applies through
- policy.subject_duplicate
Grant names the same caller twice
- policy.system_grant_missing
Schedule or subscriber reaches what only
Access.publicgrants, notAccess.system - type.field_update_forbidden
Update changes a field that never changes
Configuration and time
- configuration.binding_empty
Setting names an empty environment variable
- configuration.binding_invalid
Setting names a variable that is not in capitals
- configuration.client_address_duplicate
Client address is declared twice
- configuration.client_address_hops_invalid
Client address counts proxies with something that is not a count from 1
- configuration.client_address_hops_unused
Client address gives a count of proxies to a source that counts none
- configuration.client_address_invalid
Client address is not a block of a source and a count of proxies
- configuration.client_address_source_unknown
Client address names a source that is not one of the four
- configuration.default_invalid
Setting value breaks its type's rules
- configuration.default_literal_required
Setting value is not a literal
- configuration.default_type
Setting value is the wrong kind of value for its type
- configuration.duplicate_binding
Two settings read the same environment variable
- configuration.duplicate_option
Setting option is given twice
- configuration.expected_field
Configuration holds something that is not a setting
- configuration.field_unknown
Configuration has no setting with this name
- configuration.multiple_declarations
Configuration is declared more than once
- configuration.secret_default
Secret setting has a value in source
- configuration.secret_flow
Secret setting is used where it could leave the server
- configuration.secret_invalid
Secret option is not true or false
- configuration.test_value_missing
Setting read by a test has no value in tests
- configuration.type_unsupported
Setting type cannot be read from one variable
- configuration.unknown_option
Setting option is not one a setting takes
- configuration.url_type
Connection address is not a setting of the type its driver needs
- semantic.multiple_locale_declarations
Locales are declared more than once
- syntax.locales_default_required
Locales declaration has no default
- syntax.locales_duplicate_option
Locales option is given twice
- syntax.locales_supported_required
Locales declaration lists no supported locales
- syntax.locales_unknown_option
Locales declaration has no such option
- translation.feature_off
A language file words a Jadpo message of a feature the application has off
- translation.field_type
A message field is a type a wording can't hold
- translation.field_unused
No wording in a language uses one of a message's fields
- translation.file_missing
A supported locale has no language file
- translation.file_name_invalid
A language file is not named for a locale
- translation.group_unknown
A group in the root language file is not one Jadpo reads
- translation.jadpo_missing
A supported locale lacks wording for Jadpo's own messages
- translation.locale_unsupported
A language file is for a locale the application does not support
- translation.locales_required
Translations without declared locales
- translation.member_duplicate
A member is written twice in a language file
- translation.member_unknown
A language file words something that is no message, enum or email
- translation.message_unknown
A translation call names no message or enum
- translation.option_unknown
An option of translations in app.jadpo is not one it takes
- translation.placeholder_style
A wording writes an amount of money without its style, or a style on another field
- translation.placeholder_unknown
A wording writes a field the message does not have
- translation.review_invalid
Translation review is not a TranslationReview
- translation.sources_invalid
A translations folder's sources record cannot be read
- translation.stale
A translation was made from default wording that has changed
- translation.too_many_selectors
A message has more than one enum or plural field
- translation.variant_missing
A wording lacks a value of the enum or a plural form
- translation.variant_unknown
A wording is for a value or plural form that does not exist
- translation.wording_invalid
A wording is not a plain string with {field} placeholders
- translation.wording_missing
A supported locale has no wording for a message
- translation.wording_shape
A member is written in the wrong shape for what it words
- type.clock_context
The operation clock is unavailable in this context
- type.locale_default_unsupported
Default locale is not a supported one
- type.locale_duplicate
Locale is listed twice
- type.locale_in_progress_default
The default locale is listed as in progress
- type.locale_in_progress_unsupported
An in-progress locale is not a supported locale
- type.locale_invalid
Locale is not written as a Locale
- type.locale_unsupported
Locale is not one the application supports
- type.presentation_text_persistence
Formatted text is stored
- type.temporal_clock_invalid
Clock time is not written
HH:MM - type.temporal_format_component_duplicate
Format component is given twice
- type.temporal_format_component_invalid
Format component takes no such style
- type.temporal_format_components_empty
Declared format shows nothing
- type.temporal_format_invalid
Format is not a written-out time format
- type.temporal_format_requires_time
Format shows a clock time a date doesn't have
- type.temporal_locales_required
Formatting needs declared locales
- type.temporal_option_unused
Option means nothing for this value
- type.temporal_zone_required
Formatting an instant needs a zone
External services
- connection.domain_not_listed
Action calls a connection its domain isn't listed on
- connection.key_invalid
Connection gives a key its package doesn't take
- connection.key_missing
Connection leaves out a key its package needs
- connection.package_unknown
Connection names no provider package the app holds
- connection.value_invalid
Connection's key holds a value it can't
- package.action_invalid
Package action does what package code may not
- package.digest_mismatch
Installed package's files differ from its digest in the lock
- package.emails_folder
Package holds email templates
- package.index_invalid
Package's index is missing, or holds what an index can't
- package.licence_not_allowed
Proprietary package isn't installed from git
- package.name_mismatch
Package's index names another package than its folder
- package.name_taken
Package's name is already one of the app's
- package.not_installed
Lock names a package that isn't installed
- package.not_locked
Installed package has no line in the lock
- package.not_public
Code uses a package's declaration that isn't public
- package.operation_invalid
Provider operation holds what it can't, or lacks what it needs
- package.provider_invalid
Provider file holds what it can't, or lacks
protocol: - package.provider_missing
Package has resources but no
provider.jadpo - package.provider_translations
Provider package carries translations
- package.reserved_name
App's own integration takes a provider's reserved name
- package.standard_candidate
Provider field looks like a standard type the package doesn't use
- package.version_needed
Name written through a package held in two versions doesn't say which
- package.version_unneeded
Name written through a package held in one version carries a version
- package.wire_invalid
Field says how it is sent in a way it can't
- package.wire_name_invalid
Wire name outside a provider package, or one the type already uses
- route.calls_past_deadline
Outside calls a route reaches can take longer than its deadline
- test.recording_undecodable
Recorded provider answer its operation's decoders don't read
- test.round_trip_failed
Field's decode and encode don't round-trip a recorded value
Jobs and events
- event.emit_invalid
Emit is given something that isn't an event, or is used outside an action
- event.settings_invalid
Events settings in
app.jadpohold something other than a database'sstore: - event.store_required
Action emits an event but writes no store to keep it in
- receiving.invalid
A queue in
receiving:doesn't say how its messages are read - schedule.every_invalid
Schedule's
every:isn't a whole number of seconds, minutes, hours or days - schedule.item_invalid
Schedule holds an item it doesn't take, gives one twice or leaves out
every:orrun: - schedule.run_invalid
Schedule's
run:isn't a call of an action in its own domain with no arguments - schedule.settings_invalid
Schedules settings in
app.jadpohold something other than a database'sstore: - schedule.store_required
Schedule has no database named to keep its state and lease in
- step.context
Several changing calls where a retry can't resume them
- step.encryption_key_required
Actions make several changing calls but no key encrypts their answers
- step.large_output
Operation with a large answer among several changing calls
- step.late_failure
Action can fail for good after a changing call took effect
- step.settings_invalid
Steps setting in
application { }doesn't read - step.store_required
Action makes several changing calls but writes no store to keep their record in
- step.too_many
More than 8 changing calls on one way through an action
- step.unkeyed
Changing call with no idempotency key beside another changing call
- subscriber.argument_invalid
Subscriber passes something other than its event or a field of it
- subscriber.event_invalid
Subscriber's
on:doesn't name an event type - subscriber.item_invalid
Subscriber holds an item it doesn't take, gives one twice or leaves out
on:orrun: - subscriber.retry_invalid
Subscriber's
retry:isn't attempts and a duration within their limits - subscriber.run_invalid
Subscriber's
run:isn't a call of an action in its own domain - type.batch_capture_not_storable
A batch saves a value that can't be stored
- type.batch_context
Batch operation called outside an action
- type.batch_each_invalid
A batch's
each:orfinished:is not one call of an action in its domain, or a write'seach:no inline function giving the row - type.batch_from_invalid
A batch's
from:is not a call of a named query giving aPage - type.batch_input
An
Inputor a route placeholder holds a batch type, which only the runtime builds - type.batch_order_updatable
A batch walks a query ordered by a field an update can change
- type.batch_row_invalid
A file helper's rows can't be read as the type its
as:names or from where itsitems_at:says, itsmax_unpacked_size:isn't a size, or its rows can't be written as the row itseach:gives
Testing
- semantic.fake_invalid
Test's fakes script something no provider operation answers
- semantic.request_invalid
Route test request doesn't fit its route
- semantic.request_route_unknown
No route answers a route test's request
- syntax.assertion_form
Assertion written in another language's form
- test.assertion_failed
Test assertion does not hold
- test.fake_exhausted
Test called a faked operation more times than its fakes script
- test.fake_unused
Test left a faked operation's scripted answers unused
- test.fault
Test stopped on a fault
- test.subscriber_failed
Subscriber failed for good during a test
- test.unexpected_failure
Test ended in a failure it did not expect
- type.test_clock_context
The clock is moved outside a test
Tooling
- ai.usage_unavailable
AI usage's database couldn't be read
- cli.ai_arguments
AI command has invalid arguments
- cli.api_arguments
Api command has invalid arguments
- cli.build_arguments
Build command has invalid arguments
- cli.calls_arguments
Calls command has invalid arguments
- cli.check_arguments
Check command has invalid arguments
- cli.completions_arguments
Completions command has invalid arguments
- cli.config_arguments
Config command has invalid arguments
- cli.config_prompt_failed
Secure configuration prompt failed
- cli.config_tty_required
Configuration entry requires an interactive terminal
- cli.declines_arguments
Declines command has invalid arguments
- cli.deliveries_arguments
Deliveries command has invalid arguments
- cli.dev_arguments
Dev command has invalid arguments
- cli.dev_port_invalid
Development port is invalid
- cli.dev_start_failed
Development server could not start
- cli.email_arguments
Email command has invalid arguments
- cli.fix_arguments
Fix command has invalid arguments
- cli.fmt_arguments
Format command has invalid arguments
- cli.help_arguments
Help command has invalid arguments
- cli.lsp_arguments
Language-server command has invalid arguments
- cli.migrate_arguments
Migrate command has invalid arguments
- cli.new_arguments
New command has invalid arguments
- cli.package_arguments
Package command has invalid arguments
- cli.package_not_openapi
Description to import is not an OpenAPI 3 document
- cli.package_unreadable
Description to import could not be read as JSON
- cli.presentation_arguments
Terminal presentation option is invalid
- cli.records_arguments
Records command has invalid arguments
- cli.routes_arguments
Routes command has invalid arguments
- cli.runs_arguments
Runs command has invalid arguments
- cli.schedules_arguments
Schedules command has invalid arguments
- cli.sql_arguments
Sql command has invalid arguments
- cli.suggest_arguments
Suggest command has invalid arguments
- cli.test_arguments
Test command has invalid arguments
- cli.toolchain_arguments
Toolchain command has invalid arguments
- cli.translations_arguments
Translations command has invalid arguments
- cli.unknown_command
Unknown Jadpo command
- cli.unknown_flag
Unknown flag
- cli.version_arguments
Version command has invalid arguments
- cli.why_arguments
Why command has invalid arguments
- configuration.local_changed
Local configuration changed during the update
- configuration.local_invalid_encoding
Local configuration is not UTF-8 text
- configuration.local_read_failed
Local configuration could not be read
- configuration.local_syntax
Local configuration syntax is invalid
- configuration.local_unsafe_target
Local configuration target is unsafe
- configuration.local_write_failed
Local configuration could not be saved
- configuration.move_name_taken
A setting already has the constant's name
- configuration.move_read_unsupported
Constant is read where a setting can't be
- configuration.move_type_unsupported
Constant's type can't be a setting
- configuration.value_invalid
Configuration value is invalid
- configuration.value_missing
Required configuration is missing
- conform.failed
Package's answers don't conform to its capability
- conform.refused
Conformance suite can't run against the provider's API
- deliveries.not_found
No delivery or schedule run has the id given
- deliveries.unavailable
Deliveries' database couldn't be read
- deliveries.wrong_state
Delivery or schedule run isn't in a state the action applies to
- deployable.api_unknown
Deployable serves an API the app doesn't have
- deployable.empty
Deployable serves nothing and runs nothing
- deployable.invalid
Deployable is written in a form
deployables:doesn't take - deployable.settle_unrun
Route waits for follow-on work its deployable doesn't run
- deployable.target_unknown
Deployable's target isn't one Jadpo builds for
- deployable.target_unsupported
Deployable reaches a connection its target can't run
- deployable.trigger_unknown
Deployable runs something that isn't a trigger
- deployable.unserved
No deployable serves an API, or runs the background work, the app has
- format.changes_required
Source file is not formatted
- format.unsafe
Formatting would change the file's meaning
- format.write_failed
Formatted source could not be written
- install.fetch_failed
Package's git repository or tag couldn't be read
- install.in_use
Package to remove is still used by the app
- install.link_refused
Linked package in a CI or production build
- install.surface_mismatch
Package's committed surface doesn't match its code
- migration.apply_failed
Migrations could not be applied
- migration.extension_missing
Database lacks a PostgreSQL extension the project's migrations need
- migration.extension_outdated
Database's PostgreSQL extension is older than the project's queries need
- migration.store_diverged
Database does not match the project's migrations
- publish.breaking_change
Package's surface breaks its last release within one major version
- publish.changelog_missing
Package's changelog doesn't say why its new version is released
- publish.description_missing
Package's public declaration has no description
- publish.example_failed
Example in a package's description doesn't compile or doesn't hold
- publish.example_missing
Package's function has no example, or a failure it raises is shown by none
- publish.sample_missing
Package's recipes have no sample app with one domain to compile in
- recording.failed
Sandbox or model gave no answer to record
- recording.refused
Answer can't be recorded through this connection
- runs.unavailable
Unfinished runs' database couldn't be read
- schedules.lease_held
Schedule is already running
- schedules.no_tick
No tick picked up the run asked for
- schedules.run_failed
Schedule's run failed
- schedules.unavailable
Schedules' database couldn't be read
- semantic.multiple_suggestions
Suggestions settings are declared more than once
- suggest.record_invalid
Suggestions record can't be read
- suggest.share_failed
Jadpo HQ couldn't be reached or refused what was shared
- syntax.suggestions_duplicate_option
Suggestions setting is given twice
- syntax.suggestions_unknown_option
Suggestions settings have no such option
- test.failed
Test run failed
- test.no_tests
No tests to run
- test.runtime_start_failed
Test runtime could not start
- toolchain.artifact_write_failed
Generated file could not be written
- toolchain.build_failed
Rust compiler couldn't build the deployable
- toolchain.fetch_failed
Rust toolchain or crates couldn't be fetched
- toolchain.project_not_found
Project could not be found
- toolchain.scaffold_destination_exists
Scaffold destination is an existing file
- toolchain.scaffold_destination_not_empty
Scaffold destination directory is not empty
- toolchain.scaffold_name_invalid
Project destination has no valid name
- toolchain.scaffold_read_failed
Scaffold destination could not be inspected
- toolchain.scaffold_write_failed
Project scaffold file could not be written
- toolchain.source_read_failed
Jadpo source file could not be read
- translation.exchange_file_invalid
Translation exchange file can't be read or written
- translation.exchange_unit_unknown
Translation file holds a unit the project does not have
- type.suggestions_value_invalid
Suggestions setting has a value it can't take
Built-in services
- data.file_field_invalid
A
Filefield's store, size or types are missing or wrong - email.attachment_limit
Email's attachments may exceed what its mail package accepts
- email.connection_required
Action emits an email but the application names no email connection
- email.field_unused
Email's field is written by no template and no subject
- email.health_problem
Email's template fails a check of the mail health score
- email.partial_invalid
Template includes a partial that doesn't exist, can't be reached or is given the wrong fields
- email.sent_context
Reads
email.sentoutside a test - email.settings_invalid
Application's
email:ordisplay_name:is invalid - email.template_missing
Email has no template, or a template no email
- email.template_not_allowed
Template does more than read fields, translate and format
- email.template_value_invalid
Template writes out something that isn't text or a number
- rate_limits.counted_in_memory
Deployable built for Workers would count its rate limits in each instance's memory
- rate_limits.store_invalid
Rate limits' store isn't a connection that can count them
- rate_limits.store_required
Deployable built for Workers has nowhere to count its rate limits
- type.file_read_too_large
A whole read of a file field that can hold more than 10 MB
Records and manifest
- record.edited
Generated record was edited by hand
- record.format_newer
Record was written by a newer Jadpo
- record.out_of_date
Generated record disagrees with the source
Standard library
- semantic.standard_operation_moved
Standard-library operation has moved to another name
- syntax.percent_ambiguous
A number,
%and a value with no spaces could be a percentage or a remainder - type.argument_empty
Text that may be empty where it never is
- type.argument_negative
Count or position may be negative
- type.money_split
Money is divided by a count
- type.password_hash_exposed
Password hash is sent, read from a request or put in a failure
- type.random_context
Randomness is read outside an action
- type.reserved_variant_name
Variant is called
all, which lists an enum's variants - type.secret_exposed
Secret value is sent, stored, logged or read as text
- type.standard_clash
Declaration has a standard type's name
- type.standard_exists
Type has a standard type's shape under another name
- type.temporal_format_part_missing
Format shows a part a local time doesn't have
- type.unit_required
Number is given where a quantity needs a unit
- type.unit_unknown
Number is written with a suffix that is no unit
- type.variant_retired
Code writes a retired code
AI
- ai.connection_required
Action asks a model but the application names no
ai:connection - ai.settings_invalid
Application's
ai:holds something it doesn't take, or leaves out what it needs - data.vector_store_unsupported
Vector field on a store that isn't PostgreSQL
- prompt.free_text_in_instructions
A free-text placeholder is written in a prompt's instructions
- prompt.placeholder_type
A prompt's field is of a type a prompt can't send
- prompt.placeholder_unknown
A prompt's text writes a field its type does not have
- prompt.placeholder_unused
A prompt's field is written nowhere in its text
- prompt.section_missing
A prompt and its file don't make its two sections, each once and in order
- query.nearest_exact
Nearest-neighbour order on a vector too long for an index reads every record
- query.nearest_page
Nearest-neighbour query returns a page
- query.nearest_type
Nearest-neighbour order measures from something it can't
- query.nearest_unindexed
Nearest-neighbour order on a vector with no fixed length
- semantic.ai_budget_missing
Application's
ai:sets no daily limit - semantic.ai_dimensions_mismatch
Vector type an embedding is asked for as has a length other than
embedding_dimensions: - semantic.ai_field_refused
A field marked
to_models: falsereaches a prompt or an embedded text - semantic.ai_field_unmarked
A marked field's value is stored in a field without its marks
- semantic.ai_model_literal
A
ModelIdis written out anywhere but a setting'sdefault: - semantic.ai_output_type
Type a model is asked to answer as is one no model's answer can be
- semantic.ai_personal_data_not_allowed
Personal data reaches a model in a category
ai: { personal_data: { allowed: } }doesn't list