Reference · errors
Compiler errors
Every rule the compiler can report, 744 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.
About errors
- Error messages
Every error has one shape, in the terminal, in the editor and as JSON: what is wrong, where, why, the recommended next step, who decides, the rule ID and a help link.
- Declining a judgement call
Most rules report plain mistakes, and only a fix answers them.
- Errors only the running app or a build raises
The running app reports three events of its own, never compile errors:
- Command-line errors
These are the errors about the command line itself: a command, an action or a flag Jadpo doesn't have, or an argument or a value a command can't use.
- Command errors
These are the errors only a command raises, so
jadpo checkcan't show them with a source example; the command line's own are under Command-line errors. - Database command errors
These are the errors of the commands that reach a database: applying migrations, seeding, and reading or acting on background work.
- Project layout and modules
- Values and types
- Logic
- Failures
- Entities, stores and migrations
- Reads and writes
- HTTP
- Sign-in and identity
- Policy
- Configuration
- External services
- Background work
- Testing
- Tools
- Personal data
- Built-in services
- Review and records
- 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
A file uses a name declared elsewhere in the project without bringing it in on a
useline - import.unknown
Import names nothing in its folder
- import.unneeded
A file imports a name it already sees without a
useline, such as a built-in or something its test subject declares - import.unused
Imported name the file does not use
- layout.call_direction
Code in
shared/uses a declaration that belongs to one 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
A domain or library is called something generic, such as
helpersorutils, that says nothing about what it holds - naming.round_trip
Name does not survive conversion to its file name
- semantic.application_section_unknown
Application has a section Jadpo does not know
- 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
The code uses a name that nothing in the project or the standard library declares
- 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
The project is written for a later Jadpo release line than the
jadpochecking it, and thatjadpocan't run the later release instead - toolchain.version_older
The project is written for an earlier Jadpo release line than the
jadpochecking it, and thatjadpocan't run the earlier release instead - visibility.private_cross_domain
Code in one domain uses an action, type or other declaration that another domain keeps private, because it isn't marked
public - 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
A type that builds on another sets a looser bound than the one it inherits, such as a higher
max_length - type.constraint_repeated
Constraint is given twice
- type.constructor_argument_count
Constructor is not given exactly one value
- type.constructor_input
A type's constructor is given a value it can't convert, because the value is built on a different kind of value or may be
none - type.copy_clash
Copied field would replace another field
- type.copy_cycle
Type includes its own fields
- type.copy_into_input
An
Inputtype copies every field of another type withinclude, so a request could set any of them - 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
A literal value breaks a rule of the type it goes into, such as a number below the type's
min - type.invalid_pattern
Pattern is not a supported regular expression
- type.map_key_boundary
Map key at a boundary isn't text
- type.mismatch
A value of one type is used where a different type is required
- type.missing_field
An object value is built without one of the fields its type declares
- 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.record_type_arguments
A record names its type with type arguments, which come from its place or its values
- 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.unit_as_number
You declared a type named for a unit, such as
Grams,PenceorPercent, on a plain number - type.unknown_enum_variant
The code names a variant that the enum doesn't have, often a misspelling of one it does
- 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
An action calls itself, or calls other actions that end up calling it again
- failure.attempt_infallible
Attempt is used on something that cannot fail
- failure.attempt_required
A call that can fail is made as if it can't, with nothing passing its failure on or handling it
- 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
A variable is given a value that nothing ever reads
- 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
A variable is declared with
let,constorval, words from other languages, where Jadpo writesvar - toolchain.not_built_yet
Operation is declared but not built yet
- type.argument_count
A call passes more or fewer values than the function or action it calls has parameters
- type.arithmetic_operand
A sum, difference or division mixes two different named types, or uses a value that isn't a number
- type.assign_immutable
A variable declared without
mut, or a parameter, is given a new value - type.assign_unknown
Assignment target is not declared
- type.divisor_zero
A division's divisor has a type that allows zero, so the division could fail when the program runs
- 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
A
matchon an enum, aBoolor a value that may benoneleaves out one of its cases - 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
A
matchon text or a number lists some values but has no_arm for all the others - 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
A comparison such as
<or>is used on a value that has no order, such as text or a value that may benone - 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
Two failures have the same code, or a failure has a code the runtime already answers with itself
- 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
A failure is declared without a
kind:saying what sort of failure it is - 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
An
attemptblock maps a rule to a failure, but the value being built can never break that rule - failure.rule_unmapped
An
attemptblock builds a value that can break one of its type's rules, and no arm says which failure that gives - failure.stale_declaration
A function or action lists a failure after
failsthat nothing in it can ever raise or pass on - failure.undeclared_propagation
A function or action can end with a failure that its
failslist doesn't name - 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
Entities, stores and migrations
- 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
A lifecycle's
visible:orwhen:condition isn't a plain test of the record's own fields against fixed values - 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
A field refers to a record of another entity but doesn't say what happens to it when that record is deleted
- data.reference_across_stores
A field refers to a record of an entity that is kept in a different database
- data.reference_cycle
Two or more entities refer to each other through required fields, so none of their records could ever be created first
- 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
An entity names no database to live in, and the app declares databases but none called
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
A migration needs your decision, such as a value for records already stored, and its
changes.jadpodoesn't give one yet - migration.decision_unknown
Migration decides about something that is not changing
- migration.out_of_date
The entities ask for a database schema that no migration has written yet, because they are new or have changed since the latest migration
- migration.record_invalid
A file in a migration's folder is missing, can't be read, or was changed by hand, so Jadpo can't use the migration
- migration.unfinished
Latest migration is not finished
Reads and writes
- data.conflict_cannot_break
A write's
conflict:block maps a rule that the write can never break - data.conflict_unknown
Conflict mapping names no unique rule or reference
- data.conflict_unmapped
A write could be refused by a unique rule or a reference, and its
conflict:block doesn't say which failure the caller gets then - data.lifecycle_hard_delete
Code would remove a record that has a lifecycle for good, which only the lifecycle's own purge may do
- data.lifecycle_owned_field
A create, update or patch sets a field that only the entity's lifecycle may change
- 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
An update by
idworks out a new value from a stored field, and the value could break its type's rules - data.update_by_id_value
An update by
idsets a value that the database can't work out on its own, such as one read earlier in the action - 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
A map-layer query's
geometry:names a field whose type isn't the shape the layer's result type says each feature holds - query.group_key
Records cannot be grouped by this
- query.include_depth
A query's includes nest more than two levels deep: records inside records inside records
- 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
A query's
limit:could be less than 1, either as written or because its value's type allows it - query.limit_unbounded
Query limit or page size comes from a value with no maximum
- query.not_unique
A query that returns one record, or none, picks it by a test that several records could match
- 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
A query sorts records by a field, such as a
Boolor an enum, that the database and Jadpo don't order the same way - query.other_domain
A query in one domain reads the records of an entity that belongs to another domain
- 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
A query leaves out a section its result type needs, such as
from:, or thelimit:that bounds a list - 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
An action writes to two databases, itself or through an action it calls, but an action's writes all commit in one database
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.route_needs_sign_in
A route needs a signed-in caller, but its API says
authentication: [], which accepts no way to sign in - api.serve_openapi_invalid
An API's
serve_openapi:setting holds something other thantrueorfalse - 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
A route's
authentication:line holds something other thanRouteAuthentication.noneorRouteAuthentication.fresh - route.binding_unused
Route reads a placeholder or input it never passes on
- route.cache_invalid
Route's
cache:isn'timmutable, or it keeps an answer a public cache may not hold - route.deadline_invalid
Route deadline is not a duration up to 60 seconds
- route.header_credential
A route's input reads a header that sign-in or the runtime reads first, such as
Authorization, a cookie orIdempotency-Key - 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 an action that isn't read-only, or a route of another method runs a query - route.run_required
Route does not say what it runs
- route.sends_invalid
Route's
sends:isn't a media type, or itsOutputisn't exactly oneBytesfield - 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
Sign-in and identity
- route.confirm_invalid
A route's
confirm:holds something other thanConfirmation.passkey, or no signed-in person could confirm the route - 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
A route needs a signed-in caller, but the app declares no way for anyone to sign 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
A route that anyone may call, with
authentication: RouteAuthentication.none, passes on the signed-in caller, though it never looks for one - 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.call_ungranted
An action listed under
actions:calls another action that refuses some of the people the listed action's line lets in - policy.declaration_duplicate
Policy is declared twice
- policy.effect_duplicate
Policy gives the same list twice
- policy.effect_ungranted
A route runs an action that nobody is allowed to call, because nothing in the app says who may
- 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
A field's own
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
A query or action lets a caller see a field's value, directly or through what it decides, though not every caller may read that field
- policy.public_grant_missing
A route that anyone may call, with no sign-in, reads or changes a record that only signed-in people are allowed to see
- policy.requirement_invalid
A role's line in
requires:holds something a requirement can't - policy.requirement_unsatisfiable
A role's requirement asks for a sign-in that no way in the app can give
- policy.requirements_incomplete
A membership's
requires:leaves out one of its roles - 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
An entity names a role held in another record, or belongs to the app's tenant, but has no reference to that record
- policy.subject_duplicate
Grant names the same caller twice
- policy.system_grant_missing
A schedule or subscriber reaches something whose list doesn't name
Access.system, the one way an entity lets background work in - type.field_update_forbidden
An update changes a field that stays fixed once its record exists, such as a user field a grant names or a field marked
immutable: true
Configuration
- 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
Your code reads a secret setting somewhere other than the few places where Jadpo keeps it on the server
- configuration.secret_invalid
Secret option is not true or false
- configuration.test_value_missing
A test reaches code that reads a setting, and the setting has no value for tests to use
- 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
The app supports a locale, but a folder of messages has no language file for it
- 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
The app supports a locale that Jadpo doesn't ship its own messages in, and the app hasn't worded them itself
- 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 placeholder, such as
{nom}, that isn't one of its message's fields - 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 that changes with a count or with an enum's value leaves out one of the plural forms or values
- 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 language file of a supported locale leaves out one of the messages, or failures, that its folder has to word
- 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
Your code writes out a locale, such as
Locale.fr_fr, that isn't in the app's list of supported locales - 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
Your code formats a date with a format that also shows a clock time, and a date has no time to show
- type.temporal_locales_required
Formatting needs declared locales
- type.temporal_option_unused
Option means nothing for this value
- type.temporal_zone_required
Your code formats an
Instantfor people to read without saying which time zone to show it in
External services
- connection.domain_not_listed
An action calls an outside service through a connection whose
domains:list doesn't include the action's domain - 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
The files of an installed package in
packages/have been changed, added or removed since it was installed - 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
An installed package says its licence is proprietary, but it wasn't installed from a git repository
- package.name_mismatch
Package's index names another package than its folder
- package.name_taken
A package has the same name as one of the app's domains, libraries, declarations or other packages
- package.not_installed
The app's lock file,
jadpo.lock, lists a package whose folder inpackages/isn't there - package.not_locked
A package sits in
packages/, butjadpo.lockhas no line for it, so it was copied in rather than installed - 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.own_source_invalid
Application's
packages:lists your company's git locations wrongly - 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
Your code names something through a package that the app holds in two versions, without saying which version it means
- 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
The outside calls a route makes could, at their slowest, take longer than the route is allowed to run
- test.recording_undecodable
A saved answer from an outside service doesn't fit the types your integration reads that answer as
- test.round_trip_failed
Field's decode and encode don't round-trip a recorded value
Background work
- 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
An action emits an event but writes no database, and the app names no database to keep its events in
- receiving.invalid
A queue in
receiving:doesn't say how its messages are read - schedule.every_invalid
A schedule's
every:says how often it runs in something other than 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
An app has a schedule but no database named to keep its state in, because it has several databases or none
- step.context
An action makes several changing calls from somewhere a retry can't carry on where it stopped, such as a route whose API doesn't require
Idempotency-Key - step.encryption_key_required
An action makes several changing calls, but the app names no key to encrypt the answers it keeps from them
- step.large_output
Operation with a large answer among several changing calls
- step.late_failure
An action can fail for good after a call that changes something outside the app took effect, leaving that change behind
- step.settings_invalid
Steps setting in
application { }doesn't read - step.store_required
An action makes several changing calls but writes no database, and the app names no database to keep the record of its calls 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
A subscriber's
on:names something other than an event, such as an entity or a plain type - subscriber.item_invalid
Subscriber holds an item it doesn't take, gives one twice or leaves out
on:orrun: - subscriber.retry_invalid
A subscriber's
retry:holds something other than 1 to 100 tries and up to 30 days to keep trying - 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 something other than a call of a named query that gives aPage, such as a query that gives aList - type.batch_input
An
Inputor a route placeholder holds a batch type, aFileor aFileContents, or what a provider or a queue sends holds aFileor aFileContents, 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_item_duplicate
A route test's
request { }gives an item, or a placeholder inparams:, twice - semantic.request_route_unknown
A route test's
request { }names a method and path that no route in the app answers - semantic.test_setting_duplicate
A test gives one of its settings,
clock:,config:,fakes:orflags:, twice - syntax.assertion_form
Assertion written in another language's form
- test.assertion_failed
A test's
assertdoesn't hold: its condition is false, or a call checked withassert … failsreturned or failed differently - test.fake_exhausted
Test called a faked operation more times than its fakes script
- test.fake_unused
A test passed otherwise, but its
fakes:scripted more answers for a provider operation than the code called it for - 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
Tools
- acceptance.base_missing
Base commit the change is compared with isn't in this clone
- acceptance.edited
Acceptance already on the before side was edited
- acceptance.invalid
Acceptance file isn't written as an acceptance
- acceptance.missing
A change could break someone else or widen who can do what, and no acceptance this change adds says a person agreed to it
- acceptance.no_reason
An acceptance this change adds has no
///line aboveacceptancesaying why a person accepted the changes it lists - acceptance.unmatched
Acceptance lists a change this change doesn't make
- ai.usage_unavailable
The app's AI usage couldn't be read from its database, because it can't be reached or has no table for it yet
- cli.acceptance_arguments
A
jadpo acceptancecommand names no action, one it doesn't have, or no purpose fornew - cli.ai_arguments
A
jadpo aicommand names no action, one it doesn't have, or a prompt the project doesn't declare - cli.api_arguments
A
jadpo apicommand names no action, one it doesn't have, or more thanupdate - cli.approval_arguments
A
jadpo approvalcommand is given an argument it doesn't take, names a--beforegit doesn't know, or has nothing to compare with - cli.build_arguments
A
jadpo buildcommand names a deployable the app doesn't have, or more than one - cli.calls_arguments
A
jadpo callscommand names an action it doesn't have, a call the log doesn't hold, or an answer without its operation - cli.check_arguments
A
jadpo checkcommand names a path that isn't there or isn't a.jadpofile, or a--beforegit doesn't know - cli.completions_arguments
A
jadpo completionscommand names no shell, or one Jadpo writes no completions for - cli.config_arguments
A
jadpo configcommand names no action, an action it doesn't have, or a settingconfig.jadpodoesn't declare - cli.config_generate_refused
A new key would be written where a person could read it, by
jadpo config generate, or--generatewould replace a key already set - cli.config_prompt_failed
Nothing was typed at the prompt of
jadpo config set, or the terminal couldn't hide what you type there - cli.config_rotation_unavailable
The sealed rows
jadpo config rotationcounts couldn't be counted, because their database can't be reached or has no table for them yet - cli.config_tty_required
You ran
jadpo config setwhere there is no terminal to type the value at, such as from a coding agent or a script - cli.declines_arguments
A
jadpo declinescommand names no action, one it doesn't have, or a rule or path that isn't the project's - cli.deliveries_arguments
A
jadpo deliveriescommand names an action it doesn't have, no id for one that needs it, or a state or page it doesn't list - cli.dev_arguments
A
jadpo devcommand names an action it doesn't have,tokenwithout a user's id, or a--urlthe project's several stores can't share - cli.dev_port_invalid
A
jadpo dev --portflag holds something other than a whole number from 0 to 65535 - cli.dev_start_failed
The app couldn't start under
jadpo dev, usually because another program is using its port, it has no database to run on, or a connection would call a provider's live API - cli.email_arguments
A
jadpo emailcommand names an action it doesn't have, or a mail or link the dev inbox doesn't hold - cli.fix_arguments
A
jadpo fixcommand names a declaration with nothing to fix, or a fix it doesn't have - cli.flags_arguments
A
jadpo flagscommand names an action it doesn't have, a flag the project doesn't declare, or a value, user or share the flag can't take - cli.fmt_arguments
A
jadpo fmtcommand names a path that isn't there or isn't a.jadpofile - cli.help_arguments
A
jadpo helpcommand names more than one command or rule - cli.lsp_arguments
A
jadpo lspcommand is given an argument, which it doesn't take - cli.migrate_arguments
A
jadpo migratecommand names no action, one it doesn't have, a purpose for an action that takes none, or a--dropof what isn't retired - cli.new_arguments
A
jadpo newcommand names no project, or more than one - cli.package_arguments
A
jadpo packagecommand names no action, one it doesn't have, or a package the project doesn't hold - cli.package_not_openapi
A file given to
jadpo package importis JSON but not an OpenAPI 3.0 or 3.1 document - cli.package_unreadable
A file given to
jadpo package importisn't there, can't be read, or isn't JSON - cli.presentation_arguments
A
--colorflag holds something other thanauto,alwaysornever, or nothing - cli.records_arguments
A
jadpo recordscommand names an action other thanupdate - cli.routes_arguments
A
jadpo routescommand is given an argument, which it doesn't take - cli.runs_arguments
A
jadpo runscommand names an action other thanunfinished, or leaves out its--build - cli.schedules_arguments
A
jadpo schedulescommand names an action it doesn't have, or a schedule the project doesn't declare - cli.seed_arguments
A
jadpo seedcommand names no seed, one the project doesn't have, or more than one - cli.sql_arguments
A
jadpo sqlcommand names no query or action, one the project doesn't declare, or an action that writes nothing - cli.suggest_arguments
A
jadpo suggestcommand names an action it doesn't have, or a suggestion the last scan didn't find - cli.test_arguments
A
jadpo testcommand names a path that isn't there, or a seed, a kind or a--nameit can't use - cli.toolchain_arguments
A
jadpo toolchaincommand names an action it doesn't have, or a release that isn't kept - cli.translations_arguments
A
jadpo translationscommand names no action, one it doesn't have, or a locale the project doesn't translate into - cli.unknown_command
A
jadpocommand line starts with a command Jadpo doesn't have, or asksjadpo helpabout a command or rule it doesn't have - cli.unknown_flag
A
jadpocommand line has a flag the command doesn't take - cli.verifier_start_failed
The verifier won't start, for want of its credential or a sandbox to run packages in, or because it can't listen
- cli.version_arguments
A
jadpo versioncommand is given an argument, which it doesn't take - cli.why_arguments
A
jadpo whycommand names no schedule, one the project doesn't declare, or more than one - configuration.local_changed
Something else saved
.env.localwhilejadpo config setwas saving a value in it - configuration.local_invalid_encoding
The
.env.localfile holds bytes that aren't UTF-8 text - configuration.local_read_failed
The
.env.localfile is there, but it couldn't be read: it is a folder, or you aren't allowed to read it - configuration.local_syntax
A line of
.env.localisn't blank, a#comment orNAME=value, or it sets a variable a line above it already sets - configuration.local_unsafe_target
The
.env.localfile thatjadpo config setwould save a value in is a link, not an ordinary file - configuration.local_write_failed
Saving a value in
.env.localfailed, usually because the project's folder can't be written - configuration.move_name_taken
A constant
jadpo config movewas asked to make a setting has the name of a settingconfig { }already declares - configuration.move_read_unsupported
A constant
jadpo config movewas asked to make a setting is read where a setting can't be: in a query, an update byid, a backfill or another constant's value - configuration.move_type_unsupported
A constant
jadpo config movewas asked to make a setting has a type one environment variable can't hold, such as a list or an object - configuration.value_invalid
A setting's value on this machine, from the environment or
.env.local, doesn't fit the typeconfig.jadpogives it - configuration.value_missing
A setting
config.jadpodeclares without adefault:has no value on this machine, in the environment or.env.local - conform.failed
A package's answers to
jadpo package conformdon't fit the capability it fills, or the suite couldn't run - conform.refused
The conformance suite wasn't sent to the provider's live API, because the app has no connection to the package, nothing sets the connection's credential or address, or
ai:doesn't ask its models through it - deliveries.not_found
The id given to
jadpo deliveriesmatches no delivery or schedule run in the database - deliveries.unavailable
The app's deliveries couldn't be read from their database, because it can't be reached or has no table for them yet
- deliveries.wrong_state
A delivery or schedule run was asked to do something its state rules out, such as cancelling one that has already failed
- 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
- email.browser_failed
A
jadpo email opencommand couldn't start the browser to open a mail's link - flags.unavailable
The flags' state couldn't be read or changed in their database, because it can't be reached, has no table for them yet, or changed while the command ran
- format.changes_required
A file
jadpo fmt --checkread isn't laid out asjadpo fmtwould write it - format.unsafe
A file was left as it was, because what the formatter made of it didn't read back as the same code, which is a mistake in Jadpo's formatter
- format.write_failed
A file
jadpo fmtformatted couldn't be written, usually because it is read-only - install.fetch_failed
Installing a package couldn't read its git repository, or found no release there at the tag you gave
- install.in_use
Package to remove is still used by the app
- install.link_refused
Linked package in a CI or production build
- install.not_in_registry
The registry has no package of the name you gave, or no such release of it
- install.not_proved
The registry's answers don't prove the release is the one in its public log
- install.surface_mismatch
The package you are installing has code that offers something different from its committed
surface.jadpo_record - install.yanked
The release you asked for has been yanked, so it can't be newly installed
- migration.apply_failed
Applying the project's migrations to a database stopped at a step that failed
- migration.drop_not_accepted
A migration removes data, and no acceptance in the project says a person agreed to it
- migration.extension_missing
The project's migrations need a PostgreSQL extension, such as pgvector, that the database server doesn't offer or that the role applying them can't create
- migration.extension_outdated
The database server's PostgreSQL extension, such as pgvector, is older than the project's migrations and queries need
- migration.store_diverged
The migrations a database has applied don't match the project's: one has changed since it ran, the project doesn't have one, or one comes out of order
- package.advisory
An advisory is against a declaration of an installed package that the app reaches
- protocol.mismatch
A registry's OpenAPI document differs from the registry protocol
- protocol.unreadable
The document given to
jadpo package protocolcouldn't be read as OpenAPI's JSON - publish.behaviour_changed
An example or test of a package's last release fails against its new version, and the change isn't marked a fix
- publish.breaking_change
A package's new version changes or removes something its last release offered, within the same 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.failed
The registry's verifier refused the release
- publish.file_not_allowed
A commit holds a file a release can't: anything but Jadpo source and the package's text files
- publish.licence_proprietary
A package's licence is
Licence.proprietary, which the public registry refuses - publish.not_at_tag
What
jadpo package publishwould ask for isn't a pushedv<version>tag whose commit is the one checked out - publish.publisher_mismatch
A release names another publisher than the one asked to publish it
- publish.publisher_missing
A package's index names no publisher, and it has to for the registry
- publish.repository_refused
The package's repository isn't one the registry can fetch: a public git repository reached over HTTPS
- publish.sample_missing
Package's recipes have no sample app with one domain to compile in
- publish.stale_files
A commit's
surface.jadpo_recordor changelog list isn't what the package's code gives - publish.too_large
A commit's release is past the size limit
- recording.failed
A recording by
jadpo package recordorjadpo ai recordgot no answer worth keeping from the sandbox or the model, or its call couldn't be made - recording.refused
A recording was refused before anything was sent, because its connection would call a live API or has nothing set for its sandbox, its package is installed, or there is nothing to ask its prompt with
- registry.unreachable
The registry couldn't be reached, or answered in a way that can't be read
- runs.unavailable
The app's unfinished runs couldn't be read from their database, because it can't be reached or has no table for them yet
- schedules.lease_held
A schedule was run by hand while another run of it still holds its lease, so it wasn't run again
- schedules.no_tick
A schedule was run by hand against a deployment, and no tick of the app picked the run up in time, so nothing ran
- schedules.run_failed
A schedule run by hand ended in a failure, or its run on the app never ended
- schedules.unavailable
The app's schedules couldn't be read from their database, because it can't be reached or has no table for them yet
- seed.failed
A seed
jadpo seedran stopped at a call that failed or faulted, and the calls before it stay in the database - seed.production_refused
A seed was run against a database that isn't on this machine, which may be production
- seed.unavailable
The database a seed runs against couldn't be reached, so nothing was run
- semantic.multiple_suggestions
Suggestions settings are declared more than once
- suggest.record_invalid
A suggestions record
jadpo suggestreads,ignored_suggestions.jadpo_recordortaught_suggestions.jadpo_record, isn't as Jadpo writes it - suggest.share_failed
Jadpo HQ couldn't be reached, or refused what
jadpo suggest sharesent, so the entries wait to be shared again - syntax.suggestions_duplicate_option
Suggestions setting is given twice
- syntax.suggestions_unknown_option
Suggestions settings have no such option
- test.database_unavailable
The tests that need a database couldn't run, because PostgreSQL for the tests couldn't be started or reached
- test.failed
A test failed under
jadpo test, or among a package's own tests underjadpo package check - test.no_tests
A
jadpo testcommand found no test to run: the project has none, or none matches the path, line, name, kind or--failedit gives - test.runtime_start_failed
The tests couldn't start, because the machine couldn't give
jadpo testthe thread with a large stack they run on, usually for lack of memory - toolchain.artifact_write_failed
A file Jadpo writes for you, such as a record, couldn't be written, usually because it or its folder is read-only
- toolchain.build_failed
The Rust
jadpo buildwrote for a deployable didn't compile, because the machine lacks something the build runs, such as a C compiler, or because of a mistake in Jadpo - toolchain.fetch_failed
The Rust toolchain or the crates
jadpo buildcompiles with couldn't be fetched, usually because the server they come from, or the mirror in its place, can't be reached - toolchain.project_not_found
You ran a command that works on a project in a folder with no
app.jadpo, in it or in any folder above it - toolchain.scaffold_destination_exists
You ran
jadpo neworjadpo package newwith the name of a file that already exists - toolchain.scaffold_destination_not_empty
You ran
jadpo neworjadpo package newon a folder that already has files in it, hidden files included - toolchain.scaffold_name_invalid
You ran
jadpo newwith a path that doesn't end in a folder's name, such as..or/ - toolchain.scaffold_read_failed
You ran
jadpo neworjadpo package newon a path Jadpo can't look into, such as a folder you can't read or a path through a file - toolchain.scaffold_write_failed
You ran
jadpo neworjadpo package new, and writing its files failed, usually because the folder they go in can't be written - toolchain.source_read_failed
A
.jadpofile in the project couldn't be read, because it isn't UTF-8 text or you aren't allowed to read it - translation.exchange_file_invalid
A file given to
jadpo translations importisn't XLIFF 2.x or JSON in the shapeexportwrites, or can't be read as one - translation.exchange_unit_unknown
A file given to
jadpo translations importholds a unit of wording the project doesn't have - type.suggestions_value_invalid
Suggestions setting has a value it can't take
Personal data
- data.encrypted_field_invalid
A field that can't be stored sealed, or that says it isn't sealed when its type always is
- data.encrypted_field_used
An encrypted field is used somewhere the database or a log would have to read it
- data.erase_field_required
Erasing a person would clear a field that can't be
none: a reference whose record erasure keeps, a marked field of a record it anonymises, or a marked field of the person's own record it keeps - data.erase_own_field
A person's own record says something about erasure it can't:
erase:on a field with anything butErasure.retainedor with nopersonal:, a reference that deletes a record that must stay, or a field named as the column erasure keeps - data.erase_required
A
restrictedreference into records that erasing a person deletes doesn't say what erasure does to the record holding it - data.erase_retention_required
Erasing a person keeps records with
Erasure.retained, their own or others', but their entity has noretention:saying when they go - data.erase_unreached
A field's
erase:is on a field erasing a person never reaches: one that isn't a reference, or a reference to records erasure never deletes - data.field_encryption_key_invalid
The application's
field_encryption_key:reads something other than anEncryptionKeysetting - data.field_encryption_key_required
A field is kept sealed, but the application names no key to seal it with
- data.personal_unreachable
A field marked as personal data is on an entity erasing a person never reaches, so it could never be found
- data.retention_field_required
A field's
retention:is on a field that can't benone, so its value could never be cleared - data.retention_held
An entity's
retention:would delete records that arestrictedreference keeps from being deleted - data.retention_lifecycle_field
A field's
retention:would clear a field the entity's lifecycle owns or reads, changing which records are hidden or undoing what a transition set - data.retention_period
A retention's
after:isn't aDurationsetting inconfig.jadpo - data.retention_since
A retention's
since:isn't one of the record'sInstantfields - query.include_erased_reads
A query that finds erased people reads more than their
idand the fields erasure keeps of them - query.include_erased_unused
A query says
include_erased: trueon an entity that keeps nothing of an erased person
Built-in services
- connection.disk_path_invalid
A disk store's
path:isn't an absolute folder outside the project - 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
An email template includes a partial that doesn't exist, can't be reached from it, 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
An email template calls a function, does arithmetic or builds a value, when it may only read its fields, translate and format
- email.template_value_invalid
An email template writes out a value that isn't text, a number or an enum with wording, such as a date
- flag.declaration_invalid
A flag in
flags { }isn't aBoolor an enum of plain variants, or itsdefault:,owner:orexpires:is missing or isn't valid - flag.expired
A flag's
expires:date has passed while the flag is still declared - flag.read_context
A function, a constant or other pure code reads a flag, which only an action, a test or a route's
run:can - flag.store_invalid
Flags' settings in
app.jadpohold something other than a database'sstore: - flag.store_required
An app declares flags but no database named to keep their state in, because it has several databases or none
- flag.unknown
Code or a test's
flags:names a flag thatflags { }doesn't declare - flag.value_untested
A flag is read where no test that reaches the read gives it one of its values
- 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
- rate_limits.window_unsupported
A rate limit's window is one its store can't count
- route.rate_limit_invalid
A
rate_limit:doesn't say how many requests over how long, or says it wrongly - search.settings_invalid
An entity's
search:holds something it doesn't take, or leaves out what it needs - search.undeclared
A query searches an entity by words that has no
search:section - threshold.declaration_invalid
A threshold in
thresholds { }doesn't watch one thing, gives a limit that doesn't apply to it, or gives a value a limit can't take - threshold.subject_unknown
A threshold watches a route, action, query, schedule or subscriber its domain doesn't have
- type.file_read_too_large
Code reads a whole file into memory from a file field that can hold more than the 10 MB a whole read allows
Review and records
- record.edited
Generated record was edited by hand
- record.format_newer
A record file in the project was written by a newer Jadpo, in a format this one can't read
- record.out_of_date
A record file that Jadpo writes from your code is missing, or no longer matches the code
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
A list or text operation is given a count or a position that might be negative
- type.key_as_value
A key held as data is read as a value, when it goes only into a key-type field or a
cryptocall'skey: - 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
You declared a type with the same fields as a standard type, such as a start and an end, under a name of your own
- type.temporal_format_part_missing
Format shows a part a local time doesn't have
- type.unit_required
A plain number is given where a physical quantity, such as a length or a mass, needs its 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 prompt writes a free-text value, such as text a user typed, in its instructions rather than in its request
- 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 type has a field that its prompt file never writes
- 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 value from a field marked
to_models: false, which must never be sent to a model, reaches a prompt or text sent for an embedding - semantic.ai_field_unmarked
Code stores a value from a field marked as personal data, or
to_models: false, in a field that doesn't carry the same 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
Your code sends a model personal data of a kind, such as health records, that the app's
ai:settings don't allow it to send