Skip to content

Error code reference

All 610 TQL-* codes, scanned from the framework sources on every refresh and grouped by domain. The meaning is extracted from the raising site (its message text, with dynamic parts shown as ), the raising files are the provenance, and where a cookbook page discusses a code, it is linked. An undocumented code still appears — that is the point of an index.

ACCOUNT · ADM · APP · ATTACH · BATCH · DECISION · FIELD · GOV · IAM · IDEM · LANE · LD · MCP · OAUTH · OIDC · OPS · PLAN · PLUGIN · RATE · REPORT · ROUTE · SCOPE · SEC · SQL · STUDIO · TENANT · TPL · UPGRADE · VIEW · WORKFLOW · YAML

Code Meaning Documented in Raised in
TQL-ACCOUNT-4802 Unsupported locale ‘…’ — the app serves … delegation, productivity AccountViews.java
TQL-ACCOUNT-4803 Password change unavailable: SSO-managed credentials or no local identity realm. saml AccountViews.java
TQL-ACCOUNT-4804 The current password does not match credential-lifecycle AccountViews.java
TQL-ACCOUNT-4806 No unread message ‘…’ in your inbox inbox AccountViews.java
TQL-ACCOUNT-5807 the task queue page could not read the task store — a server-side failure (500), numbered outside the 4xxx refusal space the status ledger governs, the outbox store’s 5101 precedent. AccountViews.java
Code Meaning Documented in Raised in
TQL-ADM-4701 binds a runtime service provider (mode extended); shared apps… are declarative-only · plugin jars are not admissible; shared apps are… declarative-only … admission AdmissionProfile.java
TQL-ADM-4702 deny-by-default requires the policy to be DEFINED here: … admission AdmissionProfile.java
TQL-ADM-4703 a bare ‘*’ egress entry is unbounded; list hosts or *.domain… wildcards admission, connectors, security-hardening AdmissionProfile.java
TQL-ADM-4704 HTML response without a Content-Security-Policy header admission, security-hardening AdmissionProfile.java
TQL-ADM-4705 a governance violation — a review-worthy route with no valid approval — fails admission. admission AdmissionProfile.java
TQL-ADM-4706 every linter error in the app tree is an admission failure. admission AdmissionProfile.java
Code Meaning Documented in Raised in
TQL-APP-4004 a trusted-proxy range is not a valid CIDR block. TrustedProxies.java
TQL-APP-4030 the request’s tenant is not on the app’s entitlement list (HTTP 403). StackRelay.java
TQL-APP-4040 no app is hosted under this name. HostContext.java, MultiAppHost.java
TQL-APP-4041 Package integrity check failed for …: expected sha256 … but was … AppInstaller.java
TQL-APP-4090 this version is already installed with different content. AppInstaller.java
TQL-APP-4201 db/…/migration has no matching tesseraql.datasources.… multi-datasource AppMigrations.java
TQL-APP-4202 Job id ‘…’ of app ‘…’ is already declared by another app TesseraqlRuntime.java
TQL-APP-4203 a migration tree targets a duckdb datasource, which holds nothing durable. AppMigrations.java
TQL-APP-4204 duckdb datasource ‘…’ failed to initialize: …. If a declared extension is missing from… the local cache, provision it offline-first with… ‘tesseraql duckdb install-extensions –app <dir>’… (docs/duckdb.md) DuckDbCommand.java, DataSources.java
TQL-APP-4205 ‘…/…’ is not loaded — … UnclaimedFileRules.java
TQL-APP-4206 a catalog refresh failed; the previous load is still serving. code-catalogs JdbcCatalogStore.java
TQL-APP-4207 catalogs/ and per-tenant datasources are declared together; a catalog is… held app-wide and is not yet keyed by tenant code-catalogs RuntimePools.java
TQL-APP-4208 the history table name does not fit the database’s identifier limit. <p>A refusal rather than a truncation, because truncation is what the database does and it does it silently. Measured against PostgreSQL 16: a … deployment SchemaHistory.java
TQL-APP-4209 the directory holds no application at all. AppDirectory.java
TQL-APP-4210 the directory holds applications, but not the number the flag means. AppDirectory.java
TQL-APP-4211 the stack supplies no framework datasource and the applications disagree about theirs. <p>Divergence here presents as “signing in does not carry between applications”, which reads as a framework defect; the comparison … hosting DevMode.java, MultiAppHost.java
TQL-APP-4212 an application explicitly declares tesseraql.framework.datasource while the stack supplies the connection. <p>The application asked for framework state on a particular pool and the host is replacing that pool; … hosting DevMode.java, MultiAppHost.java, RuntimePools.java
TQL-APP-4213 the catalogue already holds an application with this name. AppCatalog.java
TQL-APP-4214 the security schema is not at the version this runtime expects. <p>Raised by a hosted runtime that validates instead of migrating. Either the host has not migrated the schema, or this runtime resolved a different … hosting FrameworkMigrations.java
TQL-APP-4215 root.redirect names an application the stack does not hold. <p>Validated at start against the full membership, before --app-name narrowing — the file describes the stack and the flag filters a run — so a typo is one … hosting MultiAppGateway.java
TQL-APP-4216 an application declares tesseraql.modules and its work/modules holds no jars. <p>Module resolution reaches Maven repositories, so it never happens at host start — run tesseraql modules resolve against the … hosting ModulesGuard.java
TQL-APP-4217 the jars in an application’s work/modules disagree with its modules.lock. <p>The lock pins the resolved closure by checksum; a jar the lock does not name, a locked artifact that is absent, or a checksum mismatch … hosting PackagedModules.java, ModulesGuard.java
TQL-APP-4218 an application declares tesseraql.modules and has no modules.lock. <p>Packaging resolves the declared closure, and the lock is what says which closure was reviewed. Without it the archive’s contents would depend on … PackagedModules.java, PackageCommand.java, PackageAppMojo.java
TQL-APP-4219 the closure resolved at pack time disagrees with modules.lock. <p>The pack-time twin of the host’s TQL-APP-4217: a jar the lock does not name, a locked artifact that did not resolve, or a checksum mismatch means the … PackagedModules.java, PackageAppMojo.java
TQL-APP-4220 no JDBC driver on the base classpath accepts the stack’s framework datasource URL (docs/module-channel.md decision 6). <p>The framework pool is stack infrastructure, built from a URL and resolved through … hosting MultiAppHost.java
TQL-APP-5001 Failed to read catalog: … (…) AppCatalog.java
TQL-APP-5002 Failed to install package: … AppInstaller.java
TQL-APP-5020 the gateway failed to forward the request to the app’s runtime (HTTP 502). StackRelay.java
TQL-APP-5201 Table ‘…’ has no readable columns scaffolding TableIntrospector.java
TQL-APP-5202 Scaffolded path escapes the app home: … scaffolding ScaffoldWriter.java
TQL-APP-5203 App name must match [a-z][a-z0-9-]{0,63}: ‘…’ · Table ‘…’ needs a primary key to scaffold (tables without one are not… supported) scaffolding AppScaffolder.java, CrudScaffolder.java
TQL-APP-5204 Failed to introspect database catalog: … · Schema introspection failed for datasource ‘…’: … StudioProviders.java, CatalogIntrospector.java
TQL-APP-5205 tesseraql.framework.datasource names ‘…’ but no such datasource is declared under… tesseraql.datasources RuntimePools.java
Code Meaning Documented in Raised in
TQL-ATTACH-3401 attachment ‘…’ must declare kind: attachment attachments AttachmentRules.java
TQL-ATTACH-3402 attachment ‘…’ must declare a basePath attachments AttachmentRules.java
TQL-ATTACH-3403 attachment ‘…’ must declare record.entity and record.key attachments AttachmentRules.java
TQL-ATTACH-3404 attachment ‘…’ basePath must contain the record key ‘{…}’ as a path parameter attachments AttachmentRules.java
TQL-ATTACH-3405 attachment ‘…’ must declare a positive limits.maxBytes (e.g. 25MB) attachments AttachmentRules.java
Code Meaning Documented in Raised in
TQL-BATCH-4040 the requested operations resource (job, execution, trace, or event) is unknown — or outside the caller’s tql.ops.view.&lt;name&gt;/tql.ops.run.&lt;name&gt; scope, which reads the same. Thrown, so the standard error path answers … jobs OperationsRoutes.java, OpsActions.java, OpsShellProviders.java
TQL-BATCH-4041 the reserved businessDate parameter is not an ISO date (HTTP 400). jobs JobExecutor.java
TQL-BATCH-4042 the cancel target is not running — nothing left to stop (HTTP 409). jobs OperationsRoutes.java
TQL-BATCH-4043 a manual job-run request carried an unparseable JSON body (HTTP 400). OperationsRoutes.java
TQL-BATCH-4201 Job ‘…’ schedule names unknown calendar ‘…’ — declare it under calendars/ or fix the reference jobs, troubleshooting CalendarRules.java
TQL-BATCH-4202 Job ‘…’ schedule dayOfMonth … is outside 1-31 · Job ‘…’ schedule declares both runOn: and dayOfMonth: —… one qualifier decides which firings count … jobs CalendarRules.java
TQL-BATCH-4203 Calendar ‘…’ declares both dates: and source: — holiday rows have… exactly one home jobs Calendars.java, CalendarRules.java
TQL-BATCH-4204 the same calendar name is declared in two documents. jobs Calendars.java
TQL-BATCH-4205 Empty calendars document: … · a calendar declaration that cannot mean anything at fire time. jobs SimpleYamlParser.java, Calendars.java
TQL-BATCH-4206 Step ‘…’: chunk batch: true requires the default onError: fail - a… batched writer cannot attribute a failure to one row, so it… cannot skip; drop batch:, or drop onError: skip · Step ‘…’: chunk commitEvery must be at … jobs ChunkRules.java, LintCodes.java, StepRules.java
TQL-BATCH-4207 Step ‘…’: the chunk reader has no order by — without a deterministic order… the checkpoint cannot say where to resume jobs ChunkRules.java
TQL-BATCH-4208 Step ‘…’: the chunk reader never binds chunk.after — a restart… reprocesses from the top, which is only safe for an idempotent… writer jobs ChunkRules.java
TQL-BATCH-4209 Job ‘…’ chains after unknown job ‘…’ — it would never fire · Job ‘…’ is part of an after: cycle (…) — a chain must end jobs JobChainingRules.java
TQL-BATCH-4210 Job ‘…’ declares sla: without completeBy: or runningLongerThan: · Job ‘…’ overlap ‘…’ is not one of concurrent, skip … jobs OverlapSlaRules.java
TQL-BATCH-4211 … (…) is not longer than … (…), so a run would look dead between its own… heartbeats — live runs would be reaped and overlapping firings… would go ahead jobs ExecutionHeartbeats.java, BatchHeartbeatRules.java
TQL-BATCH-4212 an execution was reaped because its owner stopped reporting (docs/audit-hardening.md Decision 6). <p>A code of its own, and that is the point of the whole mechanism: the console and the alert set have to be able to tell … jobs JobRepository.java
TQL-BATCH-5001 the job repository could not read or write the job/execution tables. jobs JobRepository.java
TQL-BATCH-5002 a step failed (its SQL raised an error), a chunk step exceeded its skipLimit, or a step is misdeclared. jobs SqlStepRunner.java, StepContext.java
TQL-BATCH-5003 the step could not read its input. jobs ChunkRows.java
TQL-BATCH-5030 a member’s runtime did not answer a delegated call — a replace in progress, a crashed runtime (HTTP 503). The overview degrades per member instead of surfacing this; a member page surfaces it, because half a page would … OpsShellProviders.java
TQL-BATCH-5101 the outbox store could not complete an operation. JdbcOutboxStore.java
TQL-BATCH-5201 Retention sweep failed: … RetentionSweeper.java
TQL-BATCH-5301 a notification references a channel that is not configured. jobs, notifications, troubleshooting NotificationChannels.java
TQL-BATCH-5302 Failed to encode notification ‘…’: … notifications NotifyEvents.java
TQL-BATCH-5303 a webhook delivery was not accepted by the receiver. · the mail was not accepted by the server (shared with webhooks). notifications MailNotifier.java, WebhookNotifier.java
TQL-BATCH-5304 Mail channel ‘…’ declares no to: — delivery fails… unless every notification payload carries a to key · Mail channel ‘…’: template ‘…’ is not a file inside the app home … notifications MailRules.java, MailNotifier.java
TQL-BATCH-5305 an outbound call targets a host outside the egress allow-list. Declared here beside the policy it enforces so a gateway caller can tell the policy’s refusal — a configuration to fix — from a transport failure it may … connectors, jobs, saml HttpOutbound.java
TQL-BATCH-5306 the per-host circuit breaker is open. Transient — it heals after the cooldown, so a caller holding a cached copy may serve it. connectors HttpCallClient.java, HttpOutbound.java
TQL-BATCH-5307 the outbound call failed (transport error, timeout, or rejected status). connectors HttpCallClient.java, HttpOutbound.java
TQL-BATCH-5308 an http-call step references an unconfigured credential. HttpOutbound.java
TQL-BATCH-5309 the call declaration is invalid (no absolute http/https url). HttpOutbound.java
TQL-BATCH-5310 a connector references an unconfigured credential. FileConnectors.java
TQL-BATCH-5311 the webhook replay store could not record a delivery. JdbcWebhookReplayStore.java
TQL-BATCH-5312 Failed to encode published event ‘…’: … PublishEvents.java
TQL-BATCH-5313 the event channel store could not complete an operation. JdbcEventChannelStore.java
TQL-BATCH-5314 the org-unit store could not complete an operation. JdbcOrgUnitStore.java
TQL-BATCH-5315 the delivery failed (connect, authenticate, write, or rename). connectors, jobs FilePushService.java
TQL-BATCH-5316 the response exceeded tesseraql.http.outbound.maxResponseBytes. A policy bound, not a host failure: the breaker is untouched, and the refusal names the key to raise. connectors HttpOutbound.java
TQL-BATCH-5317 a scheduled entry declares both forms, or an unusable instant. notifications ScheduleSpec.java
TQL-BATCH-5320 the poll-source consumption store could not record a file. JdbcPollConsumedStore.java
Code Meaning Documented in Raised in
TQL-DECISION-4700 Empty decisions document: … SimpleYamlParser.java, DecisionRules.java
TQL-DECISION-4701 a decision name is declared twice across decisions documents. DecisionSets.java
TQL-DECISION-4702 (the core code, raised here for source mappings): malformed contract. · the decision’s contract is malformed (inputs/outputs/policies). DecisionTables.java, DecisionSets.java
TQL-DECISION-4703 a row is malformed (unknown cell, bad literal, wrong outputs). DecisionTables.java
TQL-DECISION-4704 (the core code, raised here for source defaults): miss-policy shape. · the miss policy disagrees with the declared rows. DecisionTables.java, DecisionSets.java
TQL-DECISION-4705 a decide: entry references an unknown decision. DecisionSets.java
TQL-DECISION-4706 a decide: entry’s params do not wire the inputs exactly. StudioProviders.java, DecideSnippetBuilder.java, DecisionSets.java
TQL-DECISION-4707 a wiring expression reads a namespace absent at decision time. DecisionSets.java
TQL-DECISION-4708 a row value violates its declared type or enum value space. DecisionForms.java, DecisionSets.java
TQL-DECISION-4710 Decision ‘…’ maps column ‘…’ of ‘…’, which the schema sidecar… does not know · Decision ‘…’ maps table ‘…’, which the schema… sidecar does not know — regenerate .tesseraql/docs/…schema.json or fix the mapping DecisionRules.java
TQL-DECISION-4711 Route ‘…’ binds ‘…’ but declares no… decide: entry ‘…’ — the bind can only fail… at runtime · … references ‘decision.…’ but declares no… decide: entry ‘…’ — the reference can only resolve null at runtime DecisionRules.java
TQL-DECISION-4712 State ‘…’ branches on decision.….… but no transition handles … — a value the decision can produce has no receiver approval-workflow, declarative-validation DecisionRules.java
TQL-DECISION-4713 … compares decision.….… to ‘…’, which the decision cannot produce — its enum is … approval-workflow, declarative-validation DecisionRules.java
TQL-DECISION-4714 two rows of a unique decision can match the same inputs. DecisionTables.java, DecisionRules.java
TQL-DECISION-4715 Decision ‘…’ row … is unreachable… — row … already matches… everything it matches DecisionRules.java
TQL-DECISION-4716 Decision ‘…’ is declared but never referenced DocViews.java, DecisionRules.java
TQL-DECISION-4717 Decision ‘…’ matches subtree, which resolves through… the managed org closure — set tesseraql.orgunit.mode:… managed or drop the subtree input DecisionRules.java
TQL-DECISION-4718 Decision ‘…’ source.id: was renamed to …keyColumn: before v1 — the old key is dropped and the …join silently falls back to a column named ‘id’ DecisionRules.java
TQL-DECISION-4720 a unique decision matched more than one row at runtime. testing DecisionTables.java, DecisionCases.java, TestSuite.java
TQL-DECISION-4721 no row matched and the decision declares no default. declarative-validation DecisionTables.java, DecisionCases.java, TestSuite.java
TQL-DECISION-4722 a decision.* bind names a decision the route never evaluated. SqlRenderer.java
TQL-DECISION-4723 the generated lookup of a table-backed decision failed. DecisionTables.java
TQL-DECISION-4730 the scaffold request itself is malformed. DecisionScaffolder.java
Code Meaning Documented in Raised in
TQL-FIELD-2001 Invalid ids selection token · Invalid … parameter: …fields … declarative-validation BulkSelectionDecoder.java, InputBinder.java, PageBinder.java, +4 more
TQL-FIELD-2002 The request body must be a JSON object · an array element’s undeclared or non-writable field (the mass-assignment guard). authentication, declarative-validation InputBinder.java, RequestBinder.java, LoginRoutes.java
TQL-FIELD-2003 Validation rule ‘…’ must declare exactly one of rule: or file: · Validation rule ‘…’ needs a field: to report violations… against … declarative-validation ValidationRules.java, DocumentRules.java
TQL-FIELD-2004 Notification ‘…’ declares attach: but channel ‘…’ is type … — attachments ride mail channels only · Notification ‘…’ needs a channel: … jobs, notifications JobRules.java, LintCodes.java, MessagingRules.java, +2 more
TQL-FIELD-2005 … declares message key ‘…’ that no messages/….yml entry resolves internationalization I18nRules.java
TQL-FIELD-2006 Route ‘…’ inputPolicy.readOnlyFieldBehavior must be …reject, ignore or warn, not ‘…’ · Route ‘…’ inputPolicy.unknownFields must be reject or …ignore, not ‘…’ (an unrecognized value silently …disables the mass-assignment … RouteRules.java
TQL-FIELD-2007 Missing required … header or … form field IdempotencyProcessors.java
TQL-FIELD-2008 Step ‘…’ declares an http: arm beside export: - an export’s… extraction is a plain sql: arm, and the export would be dropped in… silence. Spool the acquisition and export from a later step · Step ‘…’ declares sql: … jobs JobRules.java
TQL-FIELD-2009 Step ‘…’ declares enrich: but a command step writes - it publishes… affectedRows and keys, not rows. An enrichment nests under the… source whose rows it folds into. transactional-writes RouteRules.java
TQL-FIELD-2010 an invalid publish declaration (fails fast at build time). PublishEvents.java
TQL-FIELD-2011 a locked route was reached with neither _lock nor _overwrite (HTTP 400). transactional-writes LockBinder.java
TQL-FIELD-2012 This form could not be decoded: … deployment HttpBadRequest.java
TQL-FIELD-4220 declarative validation rejected the input (HTTP 422). declarative-validation, internationalization TransactionalCommandProcessor.java
TQL-FIELD-4222 a snapshot page fetch posted more membership keys than the declared cap (HTTP 422). The search itself renders over-cap in-page as the result-cap reject block (docs/hc-recipe-alignment.md); a keys list this long can only … declarative-views, deployment PageBinder.java, TesseraqlRuntime.java
TQL-FIELD-4600 Domain ‘…’ is declared twice (second: …) declarative-validation FieldDomains.java, FieldDomainRules.java
TQL-FIELD-4601 … references unknown domain ‘…’ — declare it under domains/ or fix the reference declarative-validation FieldDomains.java
TQL-FIELD-4602 Domain ‘…’ (…) declares ‘…’ — a domain describes the… field itself; required/default/writable belong to each route’s… use of it declarative-validation SimpleYamlParser.java, FieldDomains.java, InputField.java
TQL-FIELD-4603 Domains document … must be a map SimpleYamlParser.java
TQL-FIELD-4604 Empty rules document: … SimpleYamlParser.java, RuleSetRules.java
TQL-FIELD-4605 Rule ‘…’ is declared twice (second: …) ValidationRuleSets.java
TQL-FIELD-4606 …: validation rule ‘…’ references unknown rule ‘…’ — declare it under rules/ or fix the reference declarative-validation ValidationRuleSets.java
TQL-FIELD-4607 …: validation rule ‘…’ must wire exactly the binds … of rule ‘…’, not … ValidationRuleBuilder.java, ValidationRuleSets.java
TQL-FIELD-4608 …: validation rule ‘…’ declares use: together with rule:/file: — a reference carries only… its local wiring ValidationRuleSets.java
TQL-FIELD-4609 Rule ‘…’ bind ‘…’ declares type ‘…’ — one of … declarative-validation ValidationRuleSets.java
TQL-FIELD-4610 Field ‘…’ loosens domain ‘…’: … — a loosened copy is the drift domains exist to prevent declarative-validation FieldDomainRules.java
TQL-FIELD-4611 Domain ‘…’ is declared but never referenced declarative-validation DocViews.java, FieldDomainRules.java
TQL-FIELD-4612 Rule ‘…’ is declared but never referenced declarative-validation DocViews.java, RuleSetRules.java
TQL-FIELD-4613 Validation rule ‘…’ repeats shared rule ‘…’ — reference it with use: so the two cannot drift apart RuleSetRules.java
TQL-FIELD-4616 a catalogs document is malformed or declares an unknown key. code-catalogs SimpleYamlParser.java
TQL-FIELD-4617 a catalog name is declared twice across the catalogs/ documents. code-catalogs Catalogs.java
TQL-FIELD-4618 a catalog names something that is not a legal SQL identifier. code-catalogs CatalogQuery.java
TQL-FIELD-4619 Catalog ‘…’ declares language: … but the app supports one locale (…) — every request resolves to it, so the other languages… never render; declare tesseraql.i18n.locales code-catalogs CatalogLocaleRules.java
TQL-FIELD-4620 invalidates: carries an empty table name · invalidates: is only supported on command-json routes, not ‘…’ — there is no commit to invalidate… catalogs after … code-catalogs DocumentRules.java, CrudScaffolder.java
TQL-FIELD-4621 Catalog ‘…’: file ‘…’ is not a SQL file… under catalogs/ · a catalog’s source declaration is contradictory or incomplete. code-catalogs CatalogLocaleRules.java, CatalogSpec.java
TQL-FIELD-4622 Export ‘…’ declares no locale:, and the app… has catalogs with per-language names — declare the export’s… locale: or tesseraql.files.locale; an export has no request to… negotiate one from code-catalogs CatalogLocaleRules.java
TQL-FIELD-4623 a lookup: field’s declaration cannot compile against the manifest. declarative-views LookupReferences.java
Code Meaning Documented in Raised in
TQL-GOV-3001 a route that needs review has no valid approval pinning its current source hash in governance/approvals.yml. · … …: …. To approve after review, add to governance/approvals.yml: route=…, sha256=… governance GovernanceCommand.java, GovernanceMojo.java
Code Meaning Documented in Raised in
TQL-IAM-1001 Raised when the realm provides no SQL for a requested contract. ContractResolver.java
TQL-IAM-1002 A contract’s SQL failed against the realm’s datasource. IdentityService.java
TQL-IAM-1003 No datasource ‘…’ for realm … IdentityService.java
TQL-IAM-1010 No managed schema for dialect ‘…’ DefaultIdentityPack.java
TQL-IAM-2001 an identity bean the contract needs is not bound on this exchange. ContractSqlSource.java
TQL-IAM-4030 a write was attempted on a realm whose capability is read-only. IdentityService.java
TQL-IAM-4031 The realm’s role capability is not readWrite, so role management is refused. IdentityService.java
TQL-IAM-4032 A rule’s shape is refused: an unknown condition kind, a missing value, or an org-subtree condition without the managed org foundation. RoleRules.java
TQL-IAM-4033 A role-management input is refused: a code outside its application, or a bad window. RoleAdmin.java
TQL-IAM-4034 A grant is refused: it would put a person on both sides of a blocking constraint. SeparationOfDuties.java
TQL-IAM-4035 An elevation is refused: no eligibility, a role already held, or a bad duration. Elevation.java
TQL-IAM-4036 A delegated administrator reached outside the application they administer. AdminScope.java
Code Meaning Documented in Raised in
TQL-IDEM-4090 Idempotency store is not configured transactional-writes IdempotencyProcessors.java
TQL-IDEM-4221 Same key, different request: a stale tab or a bug, not a retry (422, not 409). transactional-writes IdempotencyProcessors.java
TQL-IDEM-5001 the idempotency store could not complete an operation. JdbcIdempotencyStore.java
Code Meaning Documented in Raised in
TQL-LANE-5004 Unknown execution lane: … ExecutionLanes.java
TQL-LANE-5031 Execution lane ‘…’ is at capacity LaneGate.java
Code Meaning Documented in Raised in
TQL-LD-0001 a query step’s result exceeded the row cap — the same code routes raise. · an identity contract read exceeded the configured maxRows. … TransactionalCommandProcessor.java, ExportRowCap.java, IdentityService.java, +3 more
TQL-LD-2801 No file codec for format ‘…’ - available: … (the excel format needs the tesseraql-excel module on the classpath) file-transfers, printable-documents FileCodecs.java, ModuleDeclarationRules.java
TQL-LD-2810 Failed to create file transfer schema: … file-transfers JdbcFileTransferService.java
TQL-LD-2820 file-import expects the uploaded file as the request body file-transfers FileImportProcessor.java, JdbcFileTransferService.java
TQL-LD-2821 File transfer service is not configured file-transfers FileExportStartProcessor.java, FileImportProcessor.java, ImportCommitProcessor.java, +1 more
TQL-LD-2822 Unknown transfer: … file-transfers FileDownloadProcessor.java, FileTransferStatusProcessor.java, TransferCancelProcessor.java
TQL-LD-2823 Transfer ‘…’ has no downloadable file · Transfer … has no downloadable file (not an export,… still running, or failed) file-transfers FileDownloadProcessor.java, OperationsRoutes.java
TQL-LD-2824 Polled file ‘…’ had no readable content file-transfers PollImportProcessor.java
TQL-LD-2825 File transfer service is not configured file-transfers PollImportProcessor.java
TQL-LD-2826 an explicitly declared column’s header label is absent from the file. Tables.java
TQL-LD-2830 PDF is an output-only format - file-import cannot read it file-transfers, printable-documents PdfFileCodec.java
TQL-LD-2831 PDF rendering failed… printable-documents PdfFileCodec.java
TQL-LD-2832 PDF template ‘…’ is outside the app resource root ‘…’ printable-documents PdfFileCodec.java
TQL-LD-2833 No pdf engine ‘…’ - available: … (set -D… to one of them) printable-documents PdfEngines.java
TQL-LD-2834 Cannot list the font directory ‘…’: … printable-documents PdfFonts.java
TQL-LD-2840 Attachment service is not configured AttachmentDownloadProcessor.java, AttachmentListProcessor.java, AttachmentUploadProcessor.java
TQL-LD-2841 an upload carried no content. · attachment upload expects a file part or request body AttachmentUploadProcessor.java, DefaultAttachmentService.java
TQL-LD-2842 content type ‘…’ is not allowed for this attachment AttachmentUploadProcessor.java
TQL-LD-2843 the upload exceeded the declared size limit. DefaultAttachmentService.java
TQL-LD-2844 Unknown attachment: … AttachmentDownloadProcessor.java
TQL-LD-2845 the attachment store could not complete a JDBC operation. JdbcAttachmentStore.java
TQL-LD-2846 an object-storage bucket is outside the egress allow-list. S3BlobStore.java
TQL-LD-2847 the scanner could not reach a verdict (fail-closed). DefaultAttachmentService.java
TQL-LD-2848 a download of an object that did not pass scanning. DefaultAttachmentService.java
TQL-LD-2849 a polled file’s import did not complete, so the file moves to moveFailed. PollImportProcessor.java
TQL-LD-2850 a buffering export exceeded its row cap. file-transfers, printable-documents ExportRowCap.java
TQL-LD-2851 a group key reappeared after its group closed — the query is not ordered. file-transfers ExportGroups.java, ExportRules.java
TQL-LD-2852 placement data reached template content below the data area. file-transfers JxlsFileCodec.java
TQL-LD-2853 a row value has no representation in the spool encoding. file-transfers SpooledRows.java
TQL-LD-2854 a row’s columns differ from the first row’s. file-transfers SpooledRows.java
TQL-LD-2855 the spool could not be written or read back. file-transfers SpooledRows.java
TQL-LD-2856 a codec asked for the row source its streaming declaration does not match. file-transfers ExportModel.java
TQL-LD-2857 two group keys name the same file once made safe for a filesystem. file-transfers SplitExport.java
TQL-LD-2858 a split export’s filename carries no {key} placeholder. file-transfers SplitExport.java
TQL-LD-2859 an export’s enrichment failed while its rows were being written. ExportEnrichment.java
TQL-LD-2860 No import batch to commit; upload the file again JdbcFileTransferService.java
TQL-LD-2861 A newer upload replaced this one; confirm that upload instead JdbcFileTransferService.java
TQL-LD-2862 This import was already committed; upload the file again to import it… once more JdbcFileTransferService.java
TQL-LD-2864 No import batch to commit; upload the file again JdbcFileTransferService.java
TQL-LD-2865 …: the file no longer parses as it did when it was reviewed (… row(s) were rejected then, … now); nothing was written JdbcFileTransferService.java
TQL-LD-2866 The reviewed file is not readable from this node (tesseraql.temp.store: …); upload it again, or move the temp store off the node with… tesseraql.temp.store: db JdbcFileTransferService.java
TQL-LD-2867 token mismatch ImportCommitProcessor.java
TQL-LD-5310 through a template…) and declares no maxRows:, so it runs under the app-wide default - declare… export.maxRows: for the number this document can actually carry file-transfers ExportRules.java
TQL-LD-5311 …export groups by ‘…’ but its query has no order by… naming that column - the runtime detects group boundaries on a single pass,… so unordered rows fail rather than writing one group as several file-transfers ExportRules.java
TQL-LD-5312 …export declares groupBy: but no template: - a … export writes rows and nothing else, so the groups have no reader · …the document declares sources beside main: but the export has no template: -… a … export writes the … file-transfers ExportRules.java
Code Meaning Documented in Raised in
TQL-MCP-1001 MCP tool ‘…’ has recipe ‘…’; only query-json and command-json are supported app-mcp ToolRules.java
TQL-MCP-1002 MCP tool ‘…’ has no description; it is the hint the… model uses to decide when to call the tool app-mcp ToolRules.java
TQL-MCP-1003 MCP resource ‘…’ must be read-only: use the query-json… recipe with query-mode SQL app-mcp ResourceRules.java
TQL-MCP-1004 MCP resource ‘…’ must declare a uri: it is the address… the client reads the resource by app-mcp ResourceRules.java
TQL-MCP-1005 MCP resource ‘…’ has no description; it is the hint the… model uses to decide whether to attach the resource app-mcp ResourceRules.java
TQL-MCP-1006 MCP resource ‘…’ must not declare input: a resource is… addressed only by its uri and takes no arguments app-mcp ResourceRules.java
TQL-MCP-1007 MCP resource uri ‘…’ is already declared by … app-mcp SystemApps.java, DuplicateMcpNameRules.java
TQL-MCP-1008 MCP UI resource ‘…’ has recipe ‘…’; a UI resource renders HTML - use query-html or page app-mcp UiResourceRules.java
TQL-MCP-1009 MCP UI resource ‘…’ must declare a ui:// uri: it is the… address the client reads and a tool links to app-mcp UiResourceRules.java
TQL-MCP-1010 MCP UI resource ‘…’ has no description; it is the hint… the model uses to decide whether to surface the UI app-mcp UiResourceRules.java
TQL-MCP-1011 MCP UI resource ‘…’ must not declare input: a UI resource… is addressed only by its uri and takes no arguments app-mcp UiResourceRules.java
TQL-MCP-1012 MCP tool ‘…’ links ui: ‘…’ but no kind: ui resource declares that uri app-mcp ToolUiLinkRules.java
TQL-MCP-1013 an mcp/ document declared a kind: outside tool/resource/ui/prompt. app-mcp ManifestLoader.java
TQL-MCP-1014 MCP … id ‘…’ is already declared by … - the mcp/ folders organize files and name nothing, so two… documents in different folders share one namespace app-layout, app-mcp SystemApps.java, DuplicateMcpNameRules.java
TQL-MCP-1015 Prompt ‘…’ argument ‘…’ declares …: which a prompt cannot act on — … app-mcp PromptRules.java
TQL-MCP-1016 Prompt ‘…’ declares steps: — prompts/get is a read, so… a prompt renders text from sources: and a prompt that writes is a… tool · Prompt ‘…’ source ‘…’ runs in update mode — prompts/get is a read, and a prompt… that … app-mcp PromptRules.java
TQL-MCP-3001 Failed to serialize MCP tool result: … McpToolResultRenderer.java
TQL-MCP-4002 Missing required argument: application. This server… spans … - name the one the request concerns. ai-mcp McpDevTools.java
TQL-MCP-4030 Write MCP tool ‘…’ must declare a security.policy: an AI… agent must not mutate data without authorization (deny by default) app-mcp, authentication McpSecurityDefaults.java, McpReadFloorRules.java, ToolRules.java
TQL-MCP-4261 MCP primitive ‘…’ declares no security: and no… tesseraql.security.defaults.mcp supplies one, so any caller that… reaches the endpoint can read it authentication McpReadFloorRules.java
TQL-MCP-4262 tesseraql.mcp.auth ‘…’ is not served at the… transport gate yet — public and bearer are; the… per-primitive auth:/policy: continue underneath… either · tesseraql.mcp.auth is bearer, but no JWT validation is… configured … TesseraqlRuntime.java
TQL-MCP-4263 the transport bearer was missing or refused (HTTP 401). McpHttpHandler.java
TQL-MCP-4264 the MCP endpoint takes POST and DELETE only (HTTP 405). McpHttpHandler.java
TQL-MCP-5001 No jdbcUrl argument, the app config declares no… tesseraql.datasources.main.jdbcUrl, and no running… dev –embedded-db was found ai-mcp McpDevTools.java
Code Meaning Documented in Raised in
TQL-OAUTH-3000 the authorization server was enabled on a stack member. The issuer is a stack-scoped surface; a member carrying tesseraql.security.oauth.enabled declared it in its own application config, and the place to declare it … oauth OAuthRuntimeExtension.java
TQL-OAUTH-3001 a JWT key source was declared where the stack’s authorization server already issues. The stack signs RS256 with the database-held key set, so a member’s own secret/publicKey/jwksUri — or one left in the stack … oauth StackIssuer.java
TQL-OAUTH-3002 the authorization server is enabled but the stack declares no external origin. The issuer IS the origin — metadata, JWKS addresses and every member’s derived audience hang off it — so guessing one would misname the … oauth StackIssuer.java
TQL-OAUTH-3003 a token request named a stack member this runtime does not address. Either the name is not in the stack, or the exchange serving the request is not the stack’s surface — the member axis exists only where the member list … SessionTokens.java, TokenExchangeRoutes.java
TQL-OAUTH-3004 an application’s own configuration enables the authorization server. OAuthScopeRules.java
Code Meaning Documented in Raised in
TQL-OIDC-3000 OIDC is enabled but ‘…’ is not configured OidcRuntimeExtension.java
Code Meaning Documented in Raised in
TQL-OPS-9001 Trace error rate …% is at or above the …% threshold OpsDashboard.java
TQL-OPS-9002 Lane ‘…’ rejected … request(s) (saturation) OpsDashboard.java
TQL-OPS-9003 Slow span rate …% is at or above the …% threshold OpsDashboard.java
TQL-OPS-9004 Batch failure rate …% is at or above the …% threshold OpsDashboard.java
TQL-OPS-9005 … virtual-thread pinning event(s) detected OpsDashboard.java
TQL-OPS-9006 … outbox event(s) dead-lettered; inspect the outbox delivery… log and redeliver or discard them notifications OpsDashboard.java
TQL-OPS-9007 Poll source for job ‘…’ failed … consecutive import(s); last: … · Poll source for job ‘…’ is not polling: … OpsDashboard.java
TQL-OPS-9008 … queue event(s) dead-lettered; inspect the queue events log… and redeliver or discard them messaging OpsDashboard.java
TQL-OPS-9009 Job ‘…’ fired unfiltered: its calendar ‘…’ could not be resolved (…) jobs CalendarStatus.java, OpsDashboard.java, CalendarDecisions.java
Code Meaning Documented in Raised in
TQL-PLAN-1001 Sequential scan on ‘…’ is not allowed PlanGuard.java
TQL-PLAN-1002 Estimated rows … exceed limit … PlanGuard.java
TQL-PLAN-1003 Plan cost … exceeds limit … PlanGuard.java
TQL-PLAN-1500 EXPLAIN returned no rows PostgresPlanInspector.java
TQL-PLAN-1501 EXPLAIN returned no rows MysqlPlanInspector.java
TQL-PLAN-1502 No query plan inspector for dialect ‘…’ PlanInspectors.java
TQL-PLAN-1504 SHOWPLAN_XML returned no rows SqlServerPlanInspector.java
Code Meaning Documented in Raised in
TQL-PLUGIN-1301 Plugin jar … found but no tesseraql.plugins.trustedKeys are configured… (set tesseraql.plugins.requireSignature: false to allow unsigned… plugins in development) extending Plugins.java
TQL-PLUGIN-1302 Plugin jar … has no detached signature … extending Plugins.java
TQL-PLUGIN-1303 Plugin jar … signature does not verify against any trusted key extending Plugins.java
Code Meaning Documented in Raised in
TQL-RATE-4291 Rate limit exceeded · Too many concurrent requests security-hardening ClusterRateLimiter.java, ConcurrencyLimiter.java, RateLimiter.java
TQL-RATE-4292 too many sign-in attempts from this address (HTTP 429). authentication, security-hardening LoginRoutes.java
TQL-RATE-4293 the runtime is at its in-flight bound; the route limiter’s 4291 is per route. deployment, hypermedia-ui HttpAdmission.java
TQL-RATE-4294 the front door already has this member’s share of forwards in flight (HTTP 503). The member’s own tesseraql.http.maxInFlight is a different bound at a different place; this one keeps a slow member from consuming the … deployment, hypermedia-ui StackRelay.java
TQL-RATE-4295 the runtime is at its event-stream bound, which 4293’s budget is not. deployment HttpAdmission.java
TQL-RATE-4296 the front door already has this member’s share of event-stream forwards open (HTTP 503). A stream holds its forward for as long as the browser keeps the page, so counting it against 4294’s share meant a member’s live … deployment StackRelay.java
TQL-RATE-5030 the live-event registry is at its global capacity — the new stream is refused (HTTP 503; the page still works, it just does not live-refresh until a reload finds a free slot or the operator raises … realtime LiveEvents.java, LiveStreams.java
Code Meaning Documented in Raised in
TQL-REPORT-1001 Failed to render JSON report: … JsonReporter.java
TQL-REPORT-1002 Failed to render SARIF report: … SarifReporter.java
TQL-REPORT-1003 Failed to render Allure result: … AllureReporter.java
TQL-REPORT-2001 Failed to serialize OpenAPI: … OpenApiGenerator.java
TQL-REPORT-2002 Failed to serialize htmx contract: … HtmxContractGenerator.java
TQL-REPORT-2003 Failed to read SQL file …: … RouteSpecGenerator.java
TQL-REPORT-2004 Failed to serialize spec.json: … AppDocGenerator.java
TQL-REPORT-2005 Failed to serialize report.json: … ReportGenerator.java
TQL-REPORT-2006 Failed to write …: … ReportHistory.java
TQL-REPORT-2007 Failed to open a connection for schema introspection: … SchemaGenerator.java
TQL-REPORT-2008 Failed to parse OpenAPI for diff: … OpenApiDiff.java
TQL-REPORT-2101 Failed to serialize release evidence: … ReleaseEvidence.java
TQL-REPORT-2102 Failed to serialize evidence signature: … EvidenceSignature.java
TQL-REPORT-2103 Invalid evidence document: … ReleaseEvidenceVerifier.java
TQL-REPORT-2201 Failed to serialize SBOM: … SbomGenerator.java
Code Meaning Documented in Raised in
TQL-ROUTE-1301 Unsupported tesseraql-service operation: … ServiceStep.java
TQL-ROUTE-1302 Service provider registry is not configured ServiceStep.java
TQL-ROUTE-3001 Failed to serialize JSON response: … · Failed to serialize header … JsonResponseRenderer.java, ResponseHeaders.java
TQL-ROUTE-3100 Route ‘…’: unknown recipe ‘…’ RouteCompiler.java
TQL-ROUTE-3101 a query-export route declares an after: hook, which needs file-export. file-transfers RouteCompiler.java
TQL-ROUTE-3102 the route’s steps declaration is invalid (fail fast at startup). transactional-writes TransactionalCommandProcessor.java
TQL-ROUTE-3103 the route failed to compile during hot reload; a 500 stub serves the compile message on its endpoint until the file is fixed. RouteReloader.java, RouteWatcher.java
TQL-ROUTE-3110 the webhook replay store is not configured (HTTP 500). WebhookVerifyProcessor.java
TQL-ROUTE-3111 the event channel store backing a queue-consume route is not configured. QueueDedupProcessor.java
TQL-ROUTE-3112 a non-main command transaction cannot carry main-anchored features. multi-datasource RouteCompiler.java
TQL-ROUTE-3113 a merge matched more than one reference row for one key. response-shaping KeyedReference.java
TQL-ROUTE-3114 an enrichment’s source: names no result set. KeyedReference.java
TQL-ROUTE-3115 the target of an enrich: is not a result set with rows. EnrichProcessor.java
TQL-ROUTE-3116 a prompt-text recipe declares command steps, and prompts/get is a read. app-mcp RouteCompiler.java
TQL-ROUTE-3117 a prompt-text recipe declares no response.text: to render its message. RouteCompiler.java
TQL-ROUTE-3118 Route ‘…’ declares import.review: ‘…’; the only accepted value is ‘required’ RouteCompiler.java
TQL-ROUTE-3119 the route’s lock: declaration is invalid or unhonoured by its recipe. transactional-writes RouteCompiler.java, DocumentRules.java
TQL-ROUTE-3120 a read acquisition under sources: declares write-only keys. transactional-writes RouteCompiler.java
TQL-ROUTE-5000 Internal error · an unexpected internal error — the failure carried no TesseraQL error code (HTTP 500). ErrorResponseRenderer.java, RouteEdge.java
Code Meaning Documented in Raised in
TQL-SCOPE-3011 route ‘…’ references scope ‘…’ not declared under scope/ data-scoping, two-way-sql ScopeRules.java
TQL-SCOPE-3012 scope ‘…’ declares no match arms · scope ‘…’ must declare kind: scope … data-scoping ScopeRules.java
TQL-SCOPE-3013 route ‘…’ scope ‘on’ alias ‘…’ is not a SQL identifier data-scoping ScopeRules.java
TQL-SCOPE-3014 batch job ‘…’ uses a /*%scope … */… directive in …, but a job runs with no… principal to scope against — it would fail at execution… time (TQL-SQL-2106); filter with a job parameter instead ScopeRules.java
TQL-SCOPE-3020 tesseraql.orgunit.mode must be ‘managed’ or ‘app’, not ‘…’ data-scoping OrgUnitRules.java
Code Meaning Documented in Raised in
TQL-SEC-4000 Unsupported tesseraql-auth operation: … AuthStep.java
TQL-SEC-4001 the authenticator this route needs is not configured, so nothing can pass. authentication AuthStep.java, BearerConfigRules.java
TQL-SEC-4011 The assertion, code or state did not authenticate the caller (401). · authentication required / failed. authentication, security-hardening ApiKeyAuthenticator.java, FederationErrors.java, SignatureVerifier.java, +2 more
TQL-SEC-4012 the webhook signature is missing or does not verify (HTTP 401). WebhookVerifyProcessor.java
TQL-SEC-4013 the webhook timestamp is outside the tolerance window (HTTP 401). WebhookVerifyProcessor.java
TQL-SEC-4014 the webhook delivery was already seen — a replay (HTTP 409). WebhookVerifyProcessor.java
TQL-SEC-4030 MCP UI resource references undefined policy ‘…’ (deny by default) · MCP prompt references undefined policy ‘…’ (deny by default) … AdmissionProfile.java, LintCodes.java, PromptRules.java, +4 more
TQL-SEC-4031 the authenticated principal does not satisfy the policy — deny by default (HTTP 403). authentication, security-hardening, troubleshooting OperationsRoutes.java, PolicyEngine.java
TQL-SEC-4032 CSRF token missing or invalid. authentication, security-hardening, troubleshooting PolicyEngine.java
TQL-SEC-4040 RS256 JWT config must declare a key source (jwksUri or publicKey) authentication JwtConfigRules.java
TQL-SEC-4041 RS256 JWT config declares conflicting key sources; set exactly one of… jwksUri/publicKey authentication JwtConfigRules.java
TQL-SEC-4042 JWT algorithm HS256 declares RS256 key material (publicKey/jwksUri); an… algorithm-confusion risk - pick one algorithm · JWT algorithm RS256 declares an HS256 secret; an algorithm-confusion risk… - pick one algorithm authentication JwtConfigRules.java
TQL-SEC-4043 Unsupported JWT algorithm ‘…’; use HS256 or RS256 authentication JwtConfigRules.java
TQL-SEC-4044 ‘…’ declares auth: api-key but no… tesseraql.security.apiKeys is configured (deny by default) authentication ApiKeyConfigRules.java, BearerConfigRules.java
TQL-SEC-4045 API-key client ‘…’ must declare a secretHash; raw keys are never… stored authentication ApiKeyConfigRules.java
TQL-SEC-4046 API-key client ‘…’ grants no roles or permissions; service… callers should be least-privilege authentication ApiKeyConfigRules.java
TQL-SEC-4047 ‘…’ declares auth: bearer but no… tesseraql.security.jwt is configured — no token can be verified,… so every call fails as a server fault authentication AuthStep.java, BearerConfigRules.java
TQL-SEC-4048 a JWT configuration that can validate a token but names no audience. · tesseraql.security.jwt is configured without an audience, so any token the… issuer minted for any other relying party is accepted; declare… … SecurityConfigFactory.java, SecurityConfig.java, JwtAuthenticator.java, +2 more
TQL-SEC-4049 ‘…’ declares auth: … and no policy, so it identifies the caller and then authorizes… nothing; declare a policy, or auth: public if the route is open AuthWithoutPolicyRules.java
TQL-SEC-4050 OIDC is enabled but tesseraql.oidc.discoveryUri is not configured authentication OidcSamlRules.java
TQL-SEC-4051 OIDC tesseraql.oidc.discoveryUri must be https… (loopback http is allowed for development) authentication OidcSamlRules.java
TQL-SEC-4052 OIDC is enabled but tesseraql.oidc.clientId is not configured authentication OidcSamlRules.java
TQL-SEC-4053 OIDC is enabled but tesseraql.oidc.redirectUri is not configured authentication OidcSamlRules.java
TQL-SEC-4060 Route ‘…’ declares auth: mtls but no… tesseraql.security.mtls is configured (deny by default) authentication BearerConfigRules.java, MtlsConfigRules.java
TQL-SEC-4061 tesseraql.security.mtls declares no forwardedHeader; a forwarded client… certificate has no header to be read from authentication MtlsConfigRules.java
TQL-SEC-4062 mTLS client ‘…’ declares no certificate matcher; set exactly one… of subjectDn/sanDns/sanUri/sanEmail/sanIp/sha256 authentication MtlsConfigRules.java
TQL-SEC-4063 mTLS client ‘…’ declares more than one certificate matcher; set… exactly one of subjectDn/sanDns/sanUri/sanEmail/sanIp/sha256 authentication MtlsConfigRules.java
TQL-SEC-4064 mTLS client ‘…’ grants no roles or permissions; service callers… should be least-privilege authentication MtlsConfigRules.java
TQL-SEC-4065 tesseraql.security.mtls declares no trustBundle; the runtime does not… independently validate the certificate chain and fully trusts the… TLS-terminating edge authentication MtlsConfigRules.java, OidcSamlRules.java
TQL-SEC-4066 mTLS client ‘…’ declares the removed untyped san:; name the kind… with sanDns/sanUri/sanEmail/sanIp so a certificate’s name of… one kind cannot satisfy a matcher meaning another · the untyped san: matcher was removed … authentication SecurityConfigFactory.java, MtlsConfigRules.java
TQL-SEC-4070 http: ‘…’ targets host ‘…’ which is not in… tesseraql.http.outbound.allowedHosts (deny by default) connectors, jobs, troubleshooting HttpSourceRules.java
TQL-SEC-4071 http: ‘…’ needs an absolute http or https url: connectors HttpSourceRules.java
TQL-SEC-4072 http: ‘…’ references undeclared credential ‘…’ connectors HttpSourceRules.java
TQL-SEC-4080 Poll trigger targets host ‘…’ which is not in… tesseraql.connectors.poll.allowedHosts (deny by default) connectors, jobs JobRules.java
TQL-SEC-4081 Poll trigger references undeclared credential ‘…’ connectors JobRules.java
TQL-SEC-4082 webhook route ‘…’ needs a webhook.provider connectors MessagingRules.java
TQL-SEC-4083 webhook route ‘…’ references verifier ‘…’ not configured under tesseraql.connectors.webhooks connectors MessagingRules.java
TQL-SEC-4084 SFTP poll source does not verify the server’s SSH host key; set… tesseraql.connectors.poll.knownHostsFile to pin it · Step ‘…’: sftp push without tesseraql.connectors.push.knownHostsFile — the… server’s host key is not … connectors FileConnectors.java, JobRules.java, LintCodes.java, +1 more
TQL-SEC-4085 Copilot endpoint host ‘…’ is not in tesseraql.http.outbound.allowedHosts (egress is… deny by default); allow it: …tesseraql: … http: … outbound: … allowedHosts: … - … · FTPS poll source does not verify the server … connectors, copilot, security-hardening StudioSupport.java, JobRules.java, LintCodes.java, +1 more
TQL-SEC-4087 SAML IdP metadata url ‘…’ must be https - the metadata pins the IdP signing key saml SamlMetadataSource.java
TQL-SEC-4088 A remote poll source / push target declared without a credential (docs/connectors.md). RemoteFiles.java
TQL-SEC-4089 A connector credential declaring no authentication method, or more than one. RemoteFiles.java
TQL-SEC-4090 queue-consume route ‘…’ references channel ‘…’ not configured under tesseraql.messaging.channels messaging ConsumerRules.java
TQL-SEC-4091 publish: of ‘…’ needs a channel · publish: of ‘…’ references channel ‘…’ not configured under tesseraql.messaging.channels messaging MessagingRules.java
TQL-SEC-4092 SAML is enabled but declares no tesseraql.saml.sp.acsUrl; the assertion’s… SubjectConfirmation recipient is not checked, and neither the login… route nor the SP metadata endpoint is published saml OidcSamlRules.java
TQL-SEC-4093 Local poll source has no tesseraql.connectors.poll.allowedPaths root:… without one the job can read — and move — files anywhere the… process can reach connectors JobRules.java
TQL-SEC-4100 route ‘…’ writes scope-governed table ‘…’ with no /*%scope … */ predicate; confirm the write cannot… reach rows outside the caller’s scope attachments, data-scoping, security-hardening, threat-model ScopeRules.java
TQL-SEC-4110 attachment ‘…’ must declare a bucket when tesseraql.object-storage.provider… is s3 · attachment ‘…’ targets bucket ‘…’ which is not in …tesseraql.object-storage.allowedBuckets (deny by default) attachments ObjectStorageEgressRules.java
TQL-SEC-4120 Invitations not configured / not available on this deployment. credential-lifecycle IdentityInvites.java
TQL-SEC-4121 Invite channel ‘…’ must be type mail · Recovery channel ‘…’ must be type mail … TesseraqlRuntime.java
TQL-SEC-4130 tesseraql.security.defaults.api/htmx is replaced by the path-matched… security.defaults.routes rules and has no effect authentication SecurityDefaultRules.java
TQL-SEC-4131 Route ‘…’ is public, but the security… default rule ‘…’ declares policy ‘…’ for its path — confirm the route is… deliberately open authentication SecurityDefaults.java, SecurityDefaultRules.java
TQL-SEC-4132 Route ‘…’ csrf must be auto, required or off, not ‘…’ · tesseraql.security.defaults.routes must be a list of rules authentication SecurityDefaults.java, RouteRules.java, SecurityDefaultRules.java
TQL-SEC-4133 Route ‘…’ restates the default… response header ‘…’ — the app default… already sends it response-shaping ResponseHeaderDefaults.java, ResponseHeaderRules.java
TQL-SEC-4134 Route ‘…’ overrides the default… response header ‘…’ with a wildcard the… default does not carry — confirm the broadening · Route ‘…’ suppresses the default… response header ‘…’ — confirm the response must… not send it response-shaping ResponseHeaderDefaults.java, ResponseHeaderRules.java
TQL-SEC-4135 tesseraql.security.responseHeaders must be a map of header name to value ResponseHeaderDefaults.java, ResponseHeaderRules.java
TQL-SEC-4136 Route ‘…’ binds ‘…’ but never carries an… authenticated principal — the bind can only fail as an… unbound parameter at runtime two-way-sql AmbientPrincipalRules.java, DecisionRules.java
TQL-SEC-4137 Route ‘…’ … wires ‘…: …’ — the ambient bind /* … */ makes the… wiring unnecessary two-way-sql AmbientPrincipalRules.java
TQL-SEC-4139 Route ‘…’ declares the response header ‘…’, which the transport owns — framing and connection… control are computed from the body the server writes, and… the tql. namespace never leaves the runtime · The default … ResponseHeaderRules.java
TQL-SEC-4140 The federation exchange failed on our side or the IdP’s (500), not the caller’s. FederationErrors.java
TQL-SEC-4141 a push target’s host is not in the push allow-list (deny by default). connectors, jobs FilePushService.java, PushStepRules.java
TQL-SEC-4143 the token’s aud does not name this application (HTTP 401). <p>Its own code rather than the shared authentication failure, under the one-meaning-per-code rule: an operator reading it needs to know the token verified … oauth StackIssuer.java, JwtAuthenticator.java
TQL-SEC-4144 the token carries no exp, so it would never expire (HTTP 401). JwtAuthenticator.java
TQL-SEC-4145 tesseraql.security.defaults.mcp must be a map of auth/policy McpSecurityDefaults.java
TQL-SEC-4146 issuing was enabled and there is nothing to sign with — neither an HS256 secret nor the stack’s authorization server. <p>A boot refusal rather than a runtime one, and narrower than it once was: the original premise … authentication TokenExchangeRoutes.java
TQL-SEC-4148 the caller asked to act as a role they do not hold for this application. <p>The shipped SEC family had no “authenticated, allowed in, wrong capacity” answer: a browser gets the role picker (the human fix is choosing … authentication TokenCommand.java, AuthStep.java, SessionTokens.java, +2 more
TQL-SEC-4149 the sign-in came from a network this deployment does not admit. authentication SignInAdmission.java, SignInAllowList.java
TQL-SEC-4150 the request body exceeds tesseraql.http.maxBodyBytes (HTTP 413). deployment HttpBodyLimit.java
TQL-SEC-5001 PBKDF2 hashing failed: … Pbkdf2PasswordEncoder.java
TQL-SEC-5002 Unsupported password algorithm: … PasswordVerifier.java
Code Meaning Documented in Raised in
TQL-SQL-2001 Expected a collection for ‘…’ but got … two-way-sql TqlErrorCode.java, SqlRenderer.java
TQL-SQL-2101 Notification ‘…’ has a malformed when: expression: … · Unterminated string literal at … … declarative-validation, notifications ExpressionParser.java, DocumentRules.java, LintCodes.java, +1 more
TQL-SQL-2102 a 2-way SQL file could not be parsed; the message names the offending line. two-way-sql Sql2WayParser.java
TQL-SQL-2103 Query ‘…’ references a missing SQL file: … · Referenced SQL file is missing: … … declarative-validation, troubleshooting, two-way-sql ConsumerRules.java, DocumentRules.java, JobRules.java, +6 more
TQL-SQL-2104 Step ‘…’: UPDATE declares expect.rowCount but has no …-column predicate; a concurrent edit is only detected… when the row vanishes - add and … = ... transactional-writes, two-way-sql DocumentRules.java
TQL-SQL-2105 Step ‘…’: UPDATE has a … predicate but no… expect.rowCount; a stale edit silently affects zero rows -… declare expect: { rowCount: 1 }… transactional-writes, two-way-sql DocumentRules.java
TQL-SQL-2106 a scope directive was rendered without a resolver configured. data-scoping, security-hardening ScopeResolver.java, ScopeRules.java
TQL-SQL-2107 a scope directive named a scope not declared under scope/. data-scoping CompiledScopeResolver.java
TQL-SQL-2108 an embedded variable resolved to a value carrying SQL meta-characters. transactional-writes, two-way-sql SqlRenderer.java
TQL-SQL-2109 Embedded variable ‘{…}’ interpolates request input ‘…’ into SQL; constrain it with an ‘enum’ allowlist to …prevent injection scaffolding, security-hardening, transactional-writes, two-way-sql ConsumerRules.java, DocumentRules.java
TQL-SQL-2110 Expression function name ‘…’ (…) is not a legal identifier declarative-validation ExpressionFunction.java, ExpressionFunctions.java
TQL-SQL-2111 ${dataset.…} needs a params: entry named ‘…’ binding the dataset reference · A file-reading function on a duckdb datasource must take a… ${scope.*} file placeholder, not a raw argument … duckdb FilePathResolver.java, DuckDbRules.java
TQL-SQL-2112 Bind ‘…’ has no authenticated principal to read… — an ambient principal bind needs a route that authenticates two-way-sql AmbientBinds.java, SqlRenderer.java
TQL-SQL-2113 a match arm’s when: block was present but declared no recognized predicate (an empty block, or a typo’d key like roles:). A present-but-empty when: would otherwise compile to a null rule that matches every … CompiledScopeResolver.java
TQL-SQL-2114 the distinct key set exceeded maxKeys. response-shaping KeyedReference.java
TQL-SQL-2115 a lock directive rendered on a statement with no lock value seeded. transactional-writes TransactionalCommandProcessor.java, SqlRenderer.java
TQL-SQL-2116 Step ‘…’: lock: names ‘…’ but this UPDATE’s SET list… never assigns it, so the lock compares a value that never moves… and every stale save is accepted - advance it (… = … + 1), unless the database advances it for you transactional-writes, two-way-sql DocumentRules.java
TQL-SQL-2117 Step ‘…’: the lock directive is not in the statement’s WHERE -… it renders a predicate, so a lock anywhere else is a syntax error… the database raises the first time the statement runs transactional-writes, two-way-sql DocumentRules.java
TQL-SQL-2118 an empty list was bound under NOT IN, where (null) hides every row. two-way-sql SqlRenderer.java
TQL-SQL-2119 ‘…’ is bound under NOT IN with nothing guarding it against being empty, and an empty list hides every row instead of none — wrap the site in /%if !….empty / … /%end/ two-way-sql DocumentRules.java
TQL-SQL-2120 params: key ‘…’ is not a bind name — a bind name is an identifier, because the 2-way SQL bind it names is an expression the directive parses, so this one binds null on every request; declared under … identifiers DocumentRules.java
TQL-SQL-2121 the bind /* … */ and the declared name ‘…’ are the same name written in two Unicode normalization forms, so they never match and the bind resolves to null on every request — spell both the same way, and prefer the … identifiers DocumentRules.java
TQL-SQL-2500 the SQL failed to execute for a reason beyond the portable constraint kinds. SqlStep.java
TQL-SQL-2501 Unsupported SQL mode ‘…’ (supported: query, update, query-export) SqlStep.java
TQL-SQL-2502 No DataSource named ‘…’ in the registry multi-datasource TenantRouting.java
TQL-SQL-2600 Command transaction failed: … TransactionalCommandProcessor.java
TQL-SQL-2601 Outbox store is not configured TransactionalCommandProcessor.java
TQL-SQL-2602 a row-count expectation failed with onMismatch: error. transactional-writes TransactionalCommandProcessor.java
TQL-SQL-2603 Failed to serialize outbox payload OutboxEvents.java
TQL-SQL-2610 a document sequence number could not be allocated from its table. transactional-writes JdbcDocumentSequences.java
TQL-SQL-2611 a sequence step needs the runtime’s DocumentSequences bean. transactional-writes TransactionalCommandProcessor.java
TQL-SQL-4001 not null violation · not null violation code transactional-writes TransactionalCommandProcessor.java, SqlStep.java
TQL-SQL-4002 check violation · check violation code transactional-writes TransactionalCommandProcessor.java, SqlStep.java
TQL-SQL-4090 The login id is already taken. · unique violation … transactional-writes TransactionalCommandProcessor.java, SqlStep.java, IdentityInvites.java
TQL-SQL-4091 fk violation · foreign key violation code transactional-writes TransactionalCommandProcessor.java, SqlStep.java
TQL-SQL-4092 a row-count expectation failed, reported as an optimistic-lock conflict. hypermedia-ui, transactional-writes TransactionalCommandProcessor.java
TQL-SQL-4093 a serialization failure or deadlock; the write may succeed if retried (HTTP 409). transactional-writes TransactionalCommandProcessor.java, SqlStep.java
TQL-SQL-4094 a declared lock refused a stale write (docs/edit-conflict.md decision 5). hypermedia-ui, scaffolding, transactional-writes TransactionalCommandProcessor.java, OpenApiGenerator.java
Code Meaning Documented in Raised in
TQL-STUDIO-4002 Missing ‘…’ parameter · Path escapes app home: … StudioRoutes.java, DraftStore.java
TQL-STUDIO-4003 Path escapes app home: … DocService.java
TQL-STUDIO-4030 Studio is read-only; scaffolding is disabled StudioService.java
TQL-STUDIO-4040 No such file: … · Unknown or expired copilot turn CopilotService.java, StudioService.java
TQL-STUDIO-4041 Failed to read …: … DocService.java
TQL-STUDIO-4042 No such doc: … DocService.java
TQL-STUDIO-4043 unknown member and out-of-scope member read identically (404). WorkshopRoutes.java, WorkshopTargets.java
TQL-STUDIO-4090 A migration already exists at …; open it in the editor, or use a different description. StudioService.java
TQL-STUDIO-4221 Draft does not compile: … DraftStore.java
TQL-STUDIO-4222 Template escapes app home: … PreviewRenderer.java
TQL-STUDIO-4223 Review the diff in the compare panel and confirm before applying. StudioEdit.java
TQL-STUDIO-4224 A new route path must be a web/**/<method>.yml file: … · Unknown DDL operation: … StudioProviders.java, StudioService.java
TQL-STUDIO-4225 A menu item needs a label and an href · The app failed to load: … StudioProviders.java, OverlayEditor.java
TQL-STUDIO-4226 A policy rule needs a … value OverlayEditor.java
TQL-STUDIO-4227 Invalid locale tag: … OverlayEditor.java
TQL-STUDIO-4228 Not an editable setting: … OverlayEditor.java
TQL-STUDIO-4229 Invalid flag name: … OverlayEditor.java
TQL-STUDIO-4230 The document does not parse as YAML; fix it in …the text editor first: … RouteForms.java
TQL-STUDIO-4231 An outbound SCIM target needs a token secret …reference like ${secret.env.SCIM_TOKEN} · Missing required field: … … StudioProviders.java, StudioSupport.java, StudioService.java
TQL-STUDIO-4232 … need explicit confirmation StudioSupport.java
TQL-STUDIO-4233 This invocation is not recordable as a test case StudioProviders.java, StudioService.java
TQL-STUDIO-4234 the data-browser row edit was rejected — editor disabled, unknown table, no row matches the key, or the update failed (HTTP 400). StudioSupport.java
TQL-STUDIO-4235 Model endpoint answered … · The copilot is not configured (tesseraql.copilot.enabled/endpoint/model) … copilot CopilotRoutes.java, StudioSupport.java, CopilotService.java
TQL-STUDIO-4236 Capturing a baseline without a schema sidecar to copy (409). StudioService.java
TQL-STUDIO-4237 A decision-rows grid save that cannot even reach the decision compile (shape/target). DecisionForms.java
TQL-STUDIO-4238 a calendar edit that cannot mean anything (docs/jobs.md). jobs CalendarForms.java
TQL-STUDIO-4239 a job-policy edit that cannot mean anything (docs/jobs.md). jobs JobPolicyForms.java
TQL-STUDIO-4240 Unknown wizard ‘…’ — expected one of … StudioService.java
TQL-STUDIO-4241 Menu index ‘…’ is not a number · the menu index names no item, so the edit cannot be applied. StudioSupport.java, OverlayEditor.java
TQL-STUDIO-4242 Failed to read the database catalog: … StudioScaffoldService.java
TQL-STUDIO-4243 An index needs at least one column MigrationDdl.java
TQL-STUDIO-5030 the member’s runtime did not answer the delegated call (503). WorkshopTargets.java
Code Meaning Documented in Raised in
TQL-TENANT-3001 Shared-schema route ‘…’ has no tenant predicate; bind tenant.id or filter by a tenant column data-scoping, multi-tenancy DocumentRules.java
TQL-TENANT-4001 No tenant could be resolved for the request multi-tenancy TenantResolution.java
TQL-TENANT-4031 No datasource configured for tenant ‘…’ in a per-tenant …isolation mode; add a tenancy.datasources.… block …(a shared-pool fallback would expose another tenant’s data) multi-tenancy TenantRouting.java, TenantDataSources.java
TQL-TENANT-5005 Tenant registry query failed: … multi-tenancy TenantRegistry.java
Code Meaning Documented in Raised in
TQL-TPL-2001 the template could not be resolved or rendered — one rule, declared once. TemplateResolution.java
TQL-TPL-2002 Mail channel ‘…’: unknown fragment ‘…’ — tql/email/… declares notifications MailRules.java
TQL-TPL-2003 Mail channel ‘…’ …: ‘${……}’ does not resolve — the mail model carries payload and… event notifications MailRules.java
TQL-TPL-2004 templates could not be read: … · …=“…” is rooted at the… origin, and this application is served under… tesseraql.http.basePath — write th:…=“@{…}” unless the link is… deliberately outside the application BasePathRules.java
Code Meaning Documented in Raised in
TQL-UPGRADE-4090 Upgrade preflight failed: …; AppUpgrader.java
TQL-UPGRADE-4091 No staged candidate for app: … AppUpgrader.java
TQL-UPGRADE-4092 Not an install root: … holds no catalog.json. deploy writes versions into an install root -… the catalogue plus one unpacked tree per application version, the shape… host serves in production. A workspace of source … hosting DeployCommand.java
Code Meaning Documented in Raised in
TQL-VIEW-3301 Structurally invalid view document (docs/declarative-views.md, TQL-VIEW-3301). declarative-views ViewRules.java, ViewSpec.java
TQL-VIEW-3302 response.html declares both template: and view: — they are mutually exclusive · response.html declares both template: and view: — they are mutually… exclusive … declarative-views HtmlResponseRenderer.java, ViewBinding.java, ViewRules.java
TQL-VIEW-3303 a form’s action names no POST route (or one without input:). · view …: action route … declares no input: block to derive fields from … ViewBinding.java, ViewRules.java
TQL-VIEW-3304 a fields: entry names an input the action route does not declare. · view …: field … is not declared by the action route’s input: block declarative-views, troubleshooting ViewRules.java, ViewFields.java
TQL-VIEW-3305 unknown widget name. · view …: unknown widget … (known: …) ViewRules.java, ViewFields.java, ViewSpec.java
TQL-VIEW-3306 unknown slot name for the view kind (customization ladder L1). · view …: unknown slot … (a … view offers …) declarative-views ViewBinding.java, ViewRules.java, ViewSpec.java
TQL-VIEW-3307 view pattern override lacks the expected … signature (docs/declarative-views.md) · view pattern overrides could not be read: … declarative-views ViewRules.java
TQL-VIEW-3308 a children: entry names a source the route does not declare. · view …: children source … is not a source of the route… (a sources: entry, or main) … declarative-views ViewBinding.java, ViewRules.java
TQL-VIEW-3309 view …: search: … is not a declared input of the route declarative-views ViewRules.java
TQL-VIEW-3310 view …: sortable columns need the route to declare… sort and dir inputs its SQL applies ViewRules.java
TQL-VIEW-3311 view …: refreshOn: is not a form-view key — a live… replacement would discard in-progress input realtime LiveViewRules.java
TQL-VIEW-3312 view …: refreshOn: topic ‘…’ is emitted by no route — the view will never refresh realtime LiveViewRules.java
TQL-VIEW-3313 Chart-panel vocabulary violation (docs/analytics-experience.md track 2, TQL-VIEW-3313): an unknown chart:, y: and series: together (or neither), a mark: outside chart: combo, or a malformed passthrough … declarative-views ViewSpec.java
TQL-VIEW-3314 Unknown key in a view document (docs/view-composition.md wave 0, TQL-VIEW-3314). View documents are strict at every nesting level — the same posture the domains/ documents take — because a silently dropped key renders … declarative-views ViewSpec.java
TQL-VIEW-3315 The app-wide view registry (docs/view-composition.md wave 1): every *.view.yml under web/ and templates/, indexed by the document’s idresponse.html.view references that id, so the files themselves stay … declarative-views ViewRules.java, ManifestLoader.java
TQL-VIEW-3316 ejecting a view referenced by more than one route is refused — the flip would fork rendering for the other routes silently. Forking a shared view is an explicit copy-then-eject (docs/view-composition.md wave 1). declarative-views ViewEjects.java
TQL-VIEW-3317 response.html.shell must be ‘auto’, ‘always’ or ‘never’, got: … · response.html.shell must be auto, always, or never. declarative-views HtmlResponseRenderer.java, ViewRules.java
TQL-VIEW-3318 an embedded view embeds further — embedding depth is 1. · view …: embedded view … embeds views itself — embedding depth is 1 declarative-views ViewBinding.java, ViewRules.java
TQL-VIEW-3319 model: must not declare the reserved view-model names (v, views). declarative-views HtmlResponseRenderer.java
TQL-VIEW-3320 the stream was asked for a topic no route declares with emit:. realtime LiveEvents.java
TQL-VIEW-3321 view …: link … placeholder {…} must be a plain column name declarative-views ViewRules.java
TQL-VIEW-3322 a declared list key: column is null, absent or empty in a result row. declarative-views ViewBinding.java
TQL-VIEW-3323 a filters: entry names an input the route does not declare. · view …: filter … is not a declared input of the route declarative-views ViewRules.java, ViewFields.java
TQL-VIEW-3324 view …: preset ‘…’ param … is not a declared input of the route declarative-views ViewRules.java
TQL-VIEW-3325 view …: action ‘…’ targets …, which matches no POST route declarative-views ViewRules.java
TQL-VIEW-3326 view …: pagination strategy snapshot requires a… single-column key: (the membership travels as row… tokens) ViewRules.java
TQL-VIEW-3327 a detail view’s workflow: names no declared kind: workflow document. declarative-views RouteCompiler.java
TQL-VIEW-3328 the detail row is missing the workflow’s key column or, in app mode, its state column — the region cannot render truthfully without them, so the page refuses loudly instead of showing a lifecycle that may be wrong … declarative-views WorkflowViewBinder.java
TQL-VIEW-3329 a lookup source row lacks a declared column (id, code: or label:). declarative-views LookupReferences.java, ViewBinding.java
TQL-VIEW-3330 the row a locked form renders from carries no value for its lock column. declarative-views ViewBinding.java, ViewEjector.java
Code Meaning Documented in Raised in
TQL-WORKFLOW-3101 workflow ‘…’ initial state ‘…’ is not declared in states · … from-state ‘…’ is not declared in states … approval-workflow WorkflowRules.java
TQL-WORKFLOW-3102 workflow ‘…’ declares more than one initial state · workflow ‘…’ state ‘…’ is unreachable from the initial state approval-workflow WorkflowRules.java
TQL-WORKFLOW-3103 … guard is not a valid expression: … · …’; allowed roots are document, task, principal, decision approval-workflow WorkflowRules.java
TQL-WORKFLOW-3104 … escalate ‘…’ is not a declared transition · … guard file ‘…’ is unreadable: … … approval-workflow WorkflowRules.java
TQL-WORKFLOW-3105 workflow ‘…’ non-terminal state ‘…’ has no outgoing transition (dead end) · workflow ‘…’ terminal state ‘…’ has an outgoing transition approval-workflow WorkflowRules.java
TQL-WORKFLOW-3106 workflow ‘…’ declares no document · workflow ‘…’ in …managed approval-workflow WorkflowRules.java
TQL-WORKFLOW-3107 … escalate ‘…’ starts from ‘…’, not the deadline’s state approval-workflow WorkflowRules.java
TQL-WORKFLOW-3108 … guard must declare exactly one of an expression or a file approval-workflow WorkflowRules.java, GuardSpec.java
TQL-WORKFLOW-3109 … guard file ‘…’ must be a query - a guard never writes approval-workflow WorkflowRules.java
TQL-WORKFLOW-3110 tesseraql.workflow.mode must be ‘managed’ or ‘app’, not ‘…’ approval-workflow WorkflowRules.java
TQL-WORKFLOW-3111 … stamp column ‘…’ is not a plain identifier · … stamp value ‘…’ is outside the …decision/document/principal whitelist and will be …stamped as a literal string … approval-workflow WorkflowRules.java
TQL-WORKFLOW-3112 … collides with a transition of the same id · … decide alias ‘…’ collides with member ‘…’ declaring its own ‘…’ … approval-workflow WorkflowDispatchProcessor.java, WorkflowRules.java
TQL-WORKFLOW-3113 … member ‘…’ has no guard and is not last -… the members after it are unreachable approval-workflow WorkflowRules.java
TQL-WORKFLOW-3114 doc_type literal ‘…’ names no declared workflow document type… (declared: …) approval-workflow WorkflowRules.java
TQL-WORKFLOW-3115 current_state literal ‘…’ names no declared workflow state… of document type ‘…’ approval-workflow WorkflowRules.java
TQL-WORKFLOW-3116 the request names more keys than the bulk ceiling allows (HTTP 400). approval-workflow WorkflowBulkProcessor.java
TQL-WORKFLOW-3117 …: join stamp ‘…’ is not a plain identifier · …: join: is the guard — declaring both leaves two answers to whether… this transition is legal approval-workflow WorkflowRules.java, JoinSpec.java
TQL-WORKFLOW-3118 transition ‘…’ returns a document to ‘…’ without clearing … — … would advance on approvals given before it · …: join stamp ‘…’ is set by no transition out of ‘…’ — the join can never complete approval-workflow WorkflowRules.java
TQL-WORKFLOW-3119 transition ‘…’ stamps ‘…’ on the join state of ‘…’ but the join does not count it — the approval gates… nothing approval-workflow WorkflowRules.java
TQL-WORKFLOW-3120 comment: only takes ‘required’ — anything else is a typo. · … comment: takes only ‘required’, got ‘…’ — an optional comment needs no declaration approval-workflow WorkflowRules.java
TQL-WORKFLOW-3201 a transition is not legal for the document’s current state (HTTP 409). approval-workflow, testing TransactionalCommandProcessor.java, WorkflowDispatchProcessor.java, TestSuite.java, +2 more
TQL-WORKFLOW-3202 a transition guard rejected the request (HTTP 422). · no dispatch member transition holds (HTTP 422). approval-workflow, testing WorkflowDispatchProcessor.java, TestSuite.java, WorkflowCases.java, +1 more
TQL-WORKFLOW-3203 the caller holds no actionable task for the document (HTTP 403). approval-workflow WorkflowDelegateProcessor.java, TransitionExecutor.java
TQL-WORKFLOW-3204 the transition’s command updated no rows (HTTP 409) — the caller holds no row authority over the document (a /*%scope … *``/ in the command’s WHERE) or the data state the command demands is absent. The documented … approval-workflow TransitionExecutor.java
TQL-WORKFLOW-3210 a managed transition needs the runtime’s WorkflowStore bean. · delegation needs the runtime’s WorkflowTaskStore bean. TransactionalCommandProcessor.java, WorkflowDelegateProcessor.java
TQL-WORKFLOW-3220 the workflow store could not complete a JDBC operation. JdbcWorkflowStore.java
TQL-WORKFLOW-3221 the app-mode workflow column store could not complete a JDBC operation. ColumnWorkflowStore.java
TQL-WORKFLOW-3222 the delegation transaction failed. WorkflowDelegateProcessor.java
TQL-WORKFLOW-3223 the workflow sweeper could not complete a JDBC operation. WorkflowSweeper.java
TQL-WORKFLOW-3224 the workflow task store could not complete a JDBC operation. JdbcWorkflowTaskStore.java
Code Meaning Documented in Raised in
TQL-YAML-1001 Failed to parse … YAML: … security-hardening SimpleYamlParser.java
TQL-YAML-1002 Unknown route recipe ‘…’ RouteRules.java
TQL-YAML-1003 validate: has no effect on ‘…’ routes — it is… honored on …, declarative-validation RouteRules.java
TQL-YAML-1004 notify: is only supported on command-json routes, not ‘…’ notifications, troubleshooting MessagingRules.java
TQL-YAML-1005 Step ‘…’: after.timing: download is route vocabulary — an export step supports… timing: extract only · pdf export: sheet:/startCell: are workbook options - a pdf lays out… through its template, not cell placement jobs, printable-documents ExportRules.java
TQL-YAML-1006 Step ‘…’: export references a missing template: … · export references a missing template: … … printable-documents ExportRules.java
TQL-YAML-1007 a message catalog file is malformed (filename or content). internationalization MessageCatalog.java, I18nRules.java
TQL-YAML-1008 Catalog ‘…’ is missing … key(s) present in the default locale ‘…’ (first: …) internationalization I18nRules.java
TQL-YAML-1009 queue-consume route ‘…’ needs a steps: pipeline · queue-consume route ‘…’ needs consume.channel and consume.topic messaging ConsumerRules.java
TQL-YAML-1010 a consume/ route must… use the queue-consume recipe, not ‘…’ · consume: is only… supported on a queue-consume route under consume/, not the ‘…’ recipe … connectors, messaging ConsumerRules.java, LintCodes.java, MessagingRules.java, +1 more
TQL-YAML-1011 HEAD/OPTIONS route files are not servable — remove … InputRules.java
TQL-YAML-1012 input …: pattern does not compile: … InputRules.java
TQL-YAML-1013 input …: unknown string format … (known: …) InputRules.java
TQL-YAML-1014 input …: requiredWhen does not parse: … declarative-validation InputRules.java
TQL-YAML-1015 page: is a query-json/query-html key (recipe is …) pagination InputRules.java
TQL-YAML-1016 page: by: entries must be column names · page: cap: is a strategy: snapshot key … pagination InputRules.java
TQL-YAML-1017 page: size must be >= 1 and maxSize >= size InputRules.java
TQL-YAML-1018 page: appends the pagination clause — the authored SQL should… not carry its own LIMIT/FETCH pagination, two-way-sql InputRules.java
TQL-YAML-1020 statusWhen: condition does not parse: … · statusWhen: status … is not an HTTP status response-shaping InputRules.java
TQL-YAML-1021 Source ‘…’ timeoutSeconds must be >= 0… (0 disables the statement timeout) · Step ‘…’ timeoutSeconds must be >= 0 RouteRules.java
TQL-YAML-1022 an http: source is supported on query recipes (query-json,… query-html, page) and on transactional ones (…, connectors, troubleshooting HttpSourceRules.java
TQL-YAML-1023 rateLimit.scope must be ‘node’ or ‘cluster’, got ‘…’ RateLimitRules.java
TQL-YAML-1024 tesseraql.temp.store must be ‘file’, ‘db’, or ‘blob’, got ‘…’ TesseraqlRuntime.java
TQL-YAML-1025 cache.visibility must be ‘private’ or ‘public’, got ‘…’ · cache.visibility: public is only allowed on auth: public routes - an… authenticated response is per-principal … response-shaping HttpCacheRules.java
TQL-YAML-1026 a ui: value is not of the type the block declares. <p>Every read here used to be an instanceof that fell back to the default, so a wrong-typed value disappeared: prefersBorder: "true" (a YAML string) left the hint … UiSpec.java
TQL-YAML-1027 input …: a line is flat — an array inside items.fields: is… not declarable · input …: items.fields: declares the elements of an array —… set type: array … declarative-validation InputRules.java, InputField.java
TQL-YAML-1028 input …: type sort requires columns: (the sortable-column… allowlist its keys validate against) InputRules.java
TQL-YAML-1030 a malformed preferences.yml (parse error, bad key, duplicate key). account PreferencesSpec.java, PreferenceRules.java
TQL-YAML-1031 Preference ‘…’ has unknown type ‘…’ (boolean | choice | text) PreferencesSpec.java
TQL-YAML-1032 Preference ‘…’ is a choice but declares no options PreferencesSpec.java
TQL-YAML-1033 Preference ‘…’ default ‘…’ is not an acceptable value PreferencesSpec.java
TQL-YAML-1034 Notification ‘…’ delivers to inbox channel ‘…’ but declares no recipient: inbox InboxNotifier.java, MessagingRules.java
TQL-YAML-1035 Step ‘…’: datasource ‘…’ is not declared under tesseraql.datasources · datasource ‘…’ is not declared under tesseraql.datasources … multi-datasource DocumentRules.java, DuckDbRules.java, LintCodes.java, +1 more
TQL-YAML-1036 a ‘datasource: …’ route cannot declare… notify:/publish:/outbox: or sequence allocation - they… ride the main connector; project through main instead · datasource: is not supported on the ‘…’ recipe - its pipeline runs … duckdb, messaging, multi-datasource RouteCompiler.java, DocumentRules.java
TQL-YAML-1037 Step ‘…’ declares datasource: - a transactional pipeline is… one transaction on one connection and cannot pick a connector… per step · Step ‘…’: only a read step may declare datasource: - a write on another… connector … jobs, multi-datasource JobExecutor.java, StepContext.java, DocumentRules.java, +3 more
TQL-YAML-1038 emit: has no effect on an MCP tool — the compiled tool pipeline does not… broadcast live-view topics · emit: is only supported on … routes, not ‘…’ realtime LintCodes.java, LiveViewRules.java, ToolRules.java
TQL-YAML-1039 emit: topic ‘…’ is not a legal topic name… (lowercase dot/dash-separated segments) · refreshOn: topic ‘…’ is not a legal topic name… (lowercase dot/dash-separated segments) realtime LiveViewRules.java
TQL-YAML-1040 a duckdb datasource is a query engine with nothing durable to… migrate - remove db/…/migration · a duckdb datasource is not a projection target - it holds nothing… durable; project into a server datasource instead … DuckDbRules.java
TQL-YAML-1041 Step ‘…’: an export step needs the rows to write — declare the step’s own… sql: { file: … } · Step ‘…’: export needs format: (csv, excel, or pdf) … file-transfers, jobs ExportRules.java
TQL-YAML-1042 Step ‘…’: a remote push target needs credential: (declared… under tesseraql.connectors.push.credentials) · Step ‘…’: a remote push target needs host: … jobs PushStepRules.java
TQL-YAML-1043 Unknown key ‘…:’ (accepted: …) — it is silently ignored troubleshooting UnknownKeyRules.java
TQL-YAML-1044 ‘…:’ moved to ‘…:’ before v1 and is now… silently dropped — declare it there · ‘…:’ was renamed to ‘…:’ before v1 and is now …silently dropped — rename it troubleshooting UnknownKeyRules.java
TQL-YAML-1046 enrich ‘…’: needs exactly one reference — sql: with a… file:, http: with a url:, or source: naming a sibling · enrich ‘…’: source: ‘…’ is not another source of this document response-shaping EnrichRules.java
TQL-YAML-1047 enrich ‘…’: needs a non-empty on: parentColumn: childColumn… map and exactly one of as: (attach a list) or merge: (copy… columns onto each row) EnrichRules.java
TQL-YAML-1048 ‘key.<column>’… — every request would be identical · enrich ‘…’: … never binds… ‘keys’ — the reference would be read whole once per… batch instead of by the keys being looked up response-shaping EnrichRules.java
TQL-YAML-1049 ‘…’: body: is declared with method …, which carries no request body — declare the method that does… (POST, PUT, PATCH), or drop the body connectors HttpSourceRules.java
TQL-YAML-1050 http: source ‘…’ on a ‘…’ route needs… readOnly: true — the call is made before the transaction and… a rollback cannot un-make it, so a call with a side effect… belongs after the commit, on the outbox connectors HttpSourceRules.java
TQL-YAML-1051 queue-consume route ‘…’ declares sources: — a consumer’s pipeline is its… steps:, and a declared source compiles to nothing here RouteCompiler.java, ConsumerRules.java
TQL-YAML-1052 route ‘…’ declares publish:/notify:/outbox:/validate: but no… steps: pipeline — these ride the command transaction RouteRules.java
TQL-YAML-1053 The file could not be read (…) — every lint that reads its content was skipped, so fix… its readability before trusting this report LintContext.java
TQL-YAML-1054 Job ‘…’ declares after: together with another trigger… kind; declare one · Job ‘…’ declares both a schedule and a poll trigger; declare one … connectors, jobs JobChainingRules.java, JobRules.java, LintCodes.java
TQL-YAML-1055 Poll-triggered job ‘…’ needs an import: block saying how to parse the… file, and a pipeline step saying what to write per row connectors, jobs JobRules.java
TQL-YAML-1056 webhook route ‘…’ needs a steps: pipeline connectors MessagingRules.java
TQL-YAML-1057 …http: source ‘…’ declares onError: empty on an export -… a document that is archived and mailed would look complete with a… section missing, so an export whose source failed should fail ExportRules.java
TQL-YAML-1058 http: ‘…’ declares retry.attempts … (1 to …) · http: ‘…’ declares retry.backoff ‘…’ which is not a duration (e.g. 200ms, 2s) … connectors HttpSourceRules.java
TQL-YAML-1059 input …: lookup source … declares no main SQL query for the resolve leg to re-render · input …: lookup source … matches no GET route … declarative-views InputRules.java
TQL-YAML-1060 Job ‘…’ declares import.review:, which only a… route can honour: a review is a person confirming a parsed batch,… and a job has no one to confirm it · a job declares import.review: required (docs/csv-import.md … JobRules.java
TQL-YAML-1061 An import’s row contract names a column the import does not map. · input: ‘…’ names no column this import declares, so… no row would ever be held to it; import.columns: has …, RouteRules.java
TQL-YAML-1062 An import’s row contract declares a key a row cannot be held to. · …, which a file-import route’s row contract cannot honour —… those keys are about a request, and here the body is rows RouteRules.java
TQL-YAML-1101 Missing required configuration key: … AppConfig.java
TQL-YAML-1102 Notification ‘…’ references undeclared channel ‘…’ · Step ‘…’ references undeclared push credential ‘…’ … notifications LintCodes.java, MessagingRules.java, PushStepRules.java, +1 more
TQL-YAML-1103 Declared locale ‘…’ has no messages/….yml catalog internationalization I18nRules.java
TQL-YAML-1104 an invalid tesseraql.connectors.&lt;block&gt; declaration (fail fast). FileConnectors.java
TQL-YAML-1105 an invalid or unknown tesseraql.connectors.webhooks verifier. WebhookVerifiers.java
TQL-YAML-1106 an invalid or unknown tesseraql.messaging.channels declaration. messaging MessagingChannels.java
TQL-YAML-1107 a config value expected to be a boolean was not a recognized spelling. AppConfig.java
TQL-YAML-1108 the configured object-storage provider is not on the classpath. BlobStores.java
TQL-YAML-1109 an invalid tesseraql.http.outbound declaration (fail fast). connectors HttpOutbound.java
TQL-YAML-1110 config/menu.yml is mis-shaped, or could not be written. MenuSpec.java
TQL-YAML-1111 config/flags.yml is mis-shaped, or could not be written. FlagsSpec.java
TQL-YAML-1112 a declared HTTP thread count that is not a positive integer. deployment TesseraqlRuntime.java
TQL-YAML-1113 the request-body spool directory exists but cannot be written to. deployment TesseraqlHttpServer.java
TQL-YAML-1114 a declared identity row bound that is not a positive integer or -1. TesseraqlRuntime.java
TQL-YAML-1201 App ‘…’ index entry escapes the app root: · Path escapes app home: … ClasspathAppSource.java, ManifestLoader.java
TQL-YAML-1202 Invalid environment profile name: … ManifestLoader.java
TQL-YAML-1204 App ‘…’ resource not found on classpath: … ClasspathAppSource.java
TQL-YAML-1205 Duplicate app source name: … AppSources.java
TQL-YAML-1206 … is defined by both … and … SystemApps.java
TQL-YAML-1207 No service provider named ‘…’ ServiceProviders.java
TQL-YAML-1208 Service provider already registered: … ServiceProviders.java
TQL-YAML-1209 Unknown secret provider ‘…’ in ${secret.…} SecretResolvers.java
TQL-YAML-1301 a configured duration is not &lt;number&gt;&lt;unit&gt; with unit ms/s/m/h/d, for example 30s. Durations.java, BatchHeartbeatRules.java
TQL-YAML-1302 a configured size is not &lt;number&gt; or &lt;number&gt;&lt;unit&gt; with unit B/KB/MB/GB, for example 25MB. Sizes.java, TesseraqlRuntime.java
TQL-YAML-1310 Poll source ‘…’ polls …, which has no server-side exclusion, and declares no… consumeOnce: true — every replica will import every file · a remote poll source with no exclusive-consumption store, so every replica imports … connectors JobRules.java, PollSpec.java
TQL-YAML-1401 Failed to load test suite: … TestSuiteLoader.java
TQL-YAML-1402 Failed to parse route suite: … RouteTestRunner.java
TQL-YAML-1403 an expect: block that is present but asserts nothing. TestSuiteLoader.java
TQL-YAML-1404 the application declares no tesseraql.app.name. <p>Not defaulted, because the default is an identity shared with every other unnamed application: one migration history table, one set of outbox claims, one … deployment ApplicationName.java
TQL-YAML-1405 the name is not a safe URL path segment (docs/stack-architecture.md Decision 25), or it collides with the framework’s authorization grammar (docs/stack-shells.md structural decision 1). <p>The rule is segment safety … ApplicationName.java
TQL-YAML-1406 a policy rule references a permission code outside the application’s own namespace — it does not begin with the application’s name, or it sits under the framework’s tql. mark — or the configuration declares a policy … PolicyCodes.java, AppScaffolder.java
TQL-YAML-1407 an application role declaration is refused — its code does not begin with the application’s own name, its bundle references a code outside the application’s own namespace, or the declaration repeats a code. Reported at … DeclaredRoles.java
TQL-YAML-1408 format: … needs the … module, which this… application neither declares under tesseraql.modules nor carries… on the classpath — a package built from it would deploy and fail… at the first export ModuleDeclarationRules.java
TQL-YAML-1409 a route’s policy: resolves an atom from the request, but not from this route’s own path — it interpolates something other than path.&lt;name&gt;, names a path parameter the route does not declare, or sits outside the … authentication PolicyCodes.java, RouteRules.java