Skip to content

Error code reference

All 660 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 · PLUGIN · RATE · REPORT · ROUTE · SCOPE · SEC · SQL · STUDIO · TENANT · TPL · UPGRADE · VIEW · WORKFLOW · YAML

Code Meaning Documented in Raised in
TQL-ACCOUNT-4802 A shortcut needs a relative path of at most 1000 characters · Channel ‘…’ does not offer a user opt-out … delegation, productivity AccountViews.java
TQL-ACCOUNT-4803 Credentials are managed by your identity provider · Delegation needs the managed workflow task inbox … 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-4807 Two-factor authentication is on - disable it with your password first · Two-factor authentication is on: the enforced secret leaves only through disable. credential-lifecycle AccountViews.java
TQL-ACCOUNT-5807 Failed to read the task queue: … · 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 Not a trusted-proxy range: … · a trusted-proxy range is not a valid CIDR block. — TrustedProxies.java
TQL-APP-4030 The request’s tenant is not entitled to this application · the request’s tenant is not on the app’s entitlement list (HTTP 403). — StackRelay.java
TQL-APP-4040 App is not hosted: … · App is not hosted: …. Adding an application to the stack is a stack deploy, not a replace. … — MultiAppGateway.java, MultiAppHost.java, StackRelay.java
TQL-APP-4041 Failed to read package: … · Package entry escapes install root: … — AppInstaller.java
TQL-APP-4090 Version … of app ‘…’ is already installed with different… content; a placed version directory is immutable — bump the… package version. · 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. · db/…/migration: a… duckdb datasource is a query engine with nothing durable to migrate… (docs/duckdb.md) — 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) — DataSources.java
TQL-APP-4205 ‘…/…’ is not loaded — … — UnclaimedFileRules.java
TQL-APP-4206 Catalog ‘…’ could not be loaded and has never loaded: … · a catalog could not be loaded and has never loaded; the screens that read it answer 500 until it does. code-catalogs, troubleshooting 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 Migration history table ‘…’ is … bytes and this database allows …; the database would truncate it silently and share the history with any… other application truncating to the same name. Set… … deployment SchemaHistory.java
TQL-APP-4209 the directory holds no application at all. · … Run from inside the stack or an application it holds, or name one:… –stack <dir>. — AppDirectory.java
TQL-APP-4210 the directory holds applications, but not the number the flag means. · … is an application home and no… stack claims it: nothing above it carries … or catalog.json (the search is one level, never further). If …a parent… … — AppDirectory.java
TQL-APP-4211 The stack supplies no framework… datasource and its applications disagree about theirs, so one sign-in… would silently not be one:… Declare framework.datasource… in … beside the applications, or point their … hosting MultiAppHost.java
TQL-APP-4212 The stack supplies the framework… datasource, and the candidate for … explicitly declares… tesseraql.framework.datasource. The host would replace the pool that… declaration asked for, so it refuses instead: remove the … hosting MultiAppHost.java
TQL-APP-4213 The catalogue already holds ‘…’ (v… at …). The name is the… stack’s contract, so a second application does not take it by installing;… upgrades of the same application replace explicitly. · the catalogue already holds … — AppCatalog.java
TQL-APP-4214 The security schema is not at the version this runtime expects: … A hosted runtime validates instead of migrating — either the… host has not migrated the framework schema, or this runtime… resolved a different framework … 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 Application ‘…’ declares … module(s) under tesseraql.modules… but carries none and its work/modules holds no jars — package it with… ‘tesseraql package’ (which bundles the locked closure) or run… ’tesseraql modules … hosting ModulesGuard.java
TQL-APP-4217 Application ‘…’ has an unreadable modules.lock (…) — re-run ‘tesseraql modules resolve’ against … · Application ‘…’ has … jar(s) in work/modules that disagree with… modules.lock (… locked artifact(s)) — re-run… … hosting ModulesGuard.java
TQL-APP-4218 Application ‘…’ declares tesseraql.modules but has no modules.lock, so packaging cannot… say which closure was reviewed — run ‘tesseraql modules resolve –app …’ and commit the lock beside the declaration · an … — PackagedModules.java
TQL-APP-4219 Application ‘…’ has a modules.lock naming … artifact(s) the runtime already carries, which a module’s closure leaves… out: …, · Application ‘…’ has an unreadable modules.lock (…) — re-run ’tesseraql modules resolve … — PackagedModules.java
TQL-APP-4220 No JDBC driver on the classpath… accepts the stack’s framework datasource URL. …. The framework… pool is stack infrastructure, so its driver ships with the deployment… rather than with any application: place the jar … hosting MultiAppHost.java
TQL-APP-4221 a declared module could not be resolved — the artifact, its version through the BOM, or the BOM itself is not in any repository this resolver reaches. A refusal in one line naming what and where to look, exit 2, in … — ModuleResolver.java
TQL-APP-4222 a declared module is an artifact the runtime already carries — a copy that would never load, since the module loader is a child of the runtime’s, parent-first. A module is what the runtime does not carry; the refusal … — ModuleResolver.java
TQL-APP-5001 Failed to read catalog: … (…) — AppCatalog.java
TQL-APP-5002 Failed to install package: … — AppInstaller.java
TQL-APP-5020 The gateway could not forward the request to the application · the gateway failed to forward the request to the app’s runtime (HTTP 502). — StackRelay.java
TQL-APP-5201 Failed to introspect table ‘…’: … · 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 OpsActions.java
TQL-BATCH-4041 businessDate ‘…’ is not an ISO date (yyyy-MM-dd) · the reserved businessDate parameter is not an ISO date (HTTP 400). jobs JobExecutor.java
TQL-BATCH-4042 Execution … is … — only a RUNNING execution can be stopped · the cancel target is not running — nothing left to stop (HTTP 409). jobs OperationsRoutes.java
TQL-BATCH-4043 Request body is not valid JSON: … · 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 CalendarRules.java
TQL-BATCH-4204 Calendar ‘…’ is declared twice (second: …) · the same calendar name is declared in two documents. jobs Calendars.java
TQL-BATCH-4205 Calendar ‘…’ holiday ‘…’ is not an ISO date (yyyy-MM-dd) · Calendar ‘…’ is empty … 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 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 Step ‘…’ declares enrich: but holds no rows - only… a step that reads (mode: query, or an http: call) has rows to… fold a reference into · Step ‘…’ declares export: but no file-transfer… service is wired … jobs ChunkStepRunner.java, ExportStepRunner.java, HttpStepRunner.java, +4 more
TQL-BATCH-5003 the step could not read its input. jobs ChunkRows.java
TQL-BATCH-5030 Member ‘…’ did not answer the delegated call (…) — a replace in progress, or a runtime that is down · a member’s runtime did not answer a delegated call — a replace in progress, a crashed runtime (HTTP 503). The … — 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 Notification channel ‘…’ is not configured under tesseraql.notifications.channels · a notification references a channel that is not configured. jobs, notifications, troubleshooting NotificationChannels.java
TQL-BATCH-5302 Failed to decode notification envelope: … · Failed to encode notification ‘…’: … notifications NotifyEvents.java
TQL-BATCH-5303 Mail channel ‘…’ delivery failed: … · Mail channel ‘…’ test delivery failed: … … 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 ‘…’: attachment ‘…’ exceeds … bytes (raise maxAttachmentBytes on the channel… to allow it) … notifications MailRules.java, MailNotifier.java
TQL-BATCH-5305 Outbound host ‘…’ is not in tesseraql.http.outbound.allowedHosts (egress is deny by… default); allow it: …tesseraql: … http: … outbound: … allowedHosts: … - … · an outbound call targets a host outside the egress … connectors, jobs, saml HttpCallClient.java, ScimOutboundClient.java, HttpOutbound.java
TQL-BATCH-5306 http-call circuit for host ‘…’ is open after repeated failures · 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, SamlMetadataSource.java, HttpOutbound.java
TQL-BATCH-5307 http-call to ‘…’ failed: … · the outbound call failed (transport error, timeout, or rejected status). connectors HttpCallClient.java, SamlMetadataSource.java, HttpOutbound.java
TQL-BATCH-5308 HTTP credential ‘…’ is not configured under tesseraql.http.outbound.credentials · an http-call step references an unconfigured credential. — HttpOutbound.java
TQL-BATCH-5309 http-call url ‘…’ must be an absolute http or https URL · the call declaration is invalid (no absolute http/https url). — HttpCallClient.java, HttpOutbound.java
TQL-BATCH-5310 a connector references an unconfigured credential. · … credential ‘…’ is not configured under tesseraql.connectors.….credentials — FileConnectors.java
TQL-BATCH-5311 Failed to create webhook replay schema: … · Failed to record webhook delivery: … … — JdbcWebhookReplayStore.java
TQL-BATCH-5312 Failed to decode published event envelope: … · Failed to encode event payload: … … — 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 Push filename ‘…’ must be a plain file name · Push to ‘…’ failed: … … connectors, jobs FilePushService.java
TQL-BATCH-5316 http-call response from ‘…’ exceeded tesseraql.http.outbound.maxResponseBytes (… bytes); raise it, or have the provider answer… smaller · the response exceeded tesseraql.http.outbound.maxResponseBytes. A policy bound, … connectors HttpCallClient.java, HttpOutbound.java
TQL-BATCH-5317 a scheduled entry declares both forms, or an unusable instant. · delay: and deliverAt: are two answers to one question — declare one … notifications ScheduleSpec.java
TQL-BATCH-5320 Failed to claim poll file … for …: … · Failed to clear poll consumption for …: … … — JdbcPollConsumedStore.java
Code Meaning Documented in Raised in
TQL-DECISION-4700 Decisions document … must declare version: … · Empty decisions document: … — SimpleYamlParser.java
TQL-DECISION-4701 Decision ‘…’ is declared twice (second: …) · a decision name is declared twice across decisions documents. — DecisionSets.java
TQL-DECISION-4702 (the core code, raised here for source mappings): malformed contract. · Decision ‘…’ (hitPolicy: first)… needs a priority: column — first-hit needs a resolution order … — DecisionTables.java, DecisionSets.java
TQL-DECISION-4703 Decision ‘…’ cell ‘…’: a bool cell is true or false, not ‘…’ · Decision ‘…’ cell ‘…’: a subtree input needs a table source… (docs/decision-tables.md) … — DecisionTables.java
TQL-DECISION-4704 (the core code, raised here for source defaults): miss-policy shape. · Decision ‘…’ declares onMiss:… default but no default row — add a trailing row without when: … — DecisionTables.java, DecisionSets.java
TQL-DECISION-4705 a decide: entry references an unknown decision. · …: decide entry ‘…’ declares no use: — a decide: entry is always a reference to a… decision under decisions/ … — DecisionSets.java
TQL-DECISION-4706 a decide: entry’s params do not wire the inputs exactly. · …: decide entry ‘…’ declares effectiveAt: but decision ‘…’ declares no effective: columns … — DecisionSets.java
TQL-DECISION-4707 a wiring expression reads a namespace absent at decision time. · …: decide entry ‘…’ wires input ‘…’ from … — a wiring expression… reads the request context only (…, …); document/steps values do not exist when decisions … — DecisionSets.java
TQL-DECISION-4708 Decision ‘…’ …: ‘…’ is not a … · Decision ‘…’ …: ‘…’ is not one of the declared enum … … — 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 Decision ‘…’ (hitPolicy:… unique) rows … and … can match the same inputs — tighten the cells or use… hitPolicy: first · two rows of a unique decision can match the same inputs. — DecisionTables.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 — 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 Decision ‘…’ (hitPolicy: unique)… matched more than one row for inputs … — the… maintenance routes’ write-time integrity checks should have… prevented this · Decision ‘…’ (hitPolicy: unique)… matched … rows for inputs … … testing DecisionTables.java, DecisionCases.java
TQL-DECISION-4721 Decision ‘…’ matched no row for inputs … and declares no default — a decision never resolves to… silent nulls · no row matched and the decision declares no default. declarative-validation DecisionTables.java, DecisionCases.java
TQL-DECISION-4722 Bind ‘…’ names no evaluated decision — declare… it in the route’s decide: block (docs/decision-tables.md) · a decision.* bind names a decision the route never evaluated. — SqlRenderer.java
TQL-DECISION-4723 Decision ‘…’ is table-backed and needs the operation’s connection · Decision ‘…’: the generated lookup failed: … … — DecisionTables.java
TQL-DECISION-4730 A decision needs at least one input and one output · Decision name ‘…’ must be a plain identifier … — DecisionScaffolder.java
Code Meaning Documented in Raised in
TQL-FIELD-2001 Invalid ids selection token · Invalid … parameter: …fields … declarative-validation, file-transfers BulkSelectionDecoder.java, InputBinder.java, PageBinder.java, +4 more
TQL-FIELD-2002 Field ‘…’ is not writable for this principal · Field ‘….…’ is not writable … 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). · publish: of ‘…’ declares both delay: and deliverAt: — two answers to one question … — PublishEvents.java
TQL-FIELD-2011 Route ‘…’ declares lock: …; the request carried neither … nor … · Route ‘…’: … is not a valid … value … transactional-writes LockBinder.java
TQL-FIELD-2012 This form could not be decoded: … deployment HttpBadRequest.java
TQL-FIELD-4220 Route ‘…’: validation rejected the input with … violation(s) · Route ‘…’: … lookup reference(s) did not resolve … declarative-validation, internationalization TransactionalCommandProcessor.java
TQL-FIELD-4222 Snapshot page fetch posted … keys — more than the declared cap … (pagination.cap, docs/list-surface.md… decision 10) · a snapshot page fetch posted more membership keys than the declared cap (HTTP 422). The search … declarative-views, deployment PageBinder.java
TQL-FIELD-4600 Constraint ‘…’ is mapped twice (second: …) · Domain ‘…’ is declared twice (second: …) declarative-validation FieldDomains.java
TQL-FIELD-4601 … references unknown domain ‘…’ — declare it under domains/ or fix the reference declarative-validation FieldDomains.java
TQL-FIELD-4602 Constraint ‘…’ (…) declares ‘…’ — a constraint mapping… accepts only field, code, message · Domain ‘…’ (…) declares ‘…’ — a domain describes the… field itself; required/default/writable belong to each route’s… use of it declarative-validation SimpleYamlParser.java
TQL-FIELD-4603 Domains document … must be a map · Domains document … must declare version: … — SimpleYamlParser.java
TQL-FIELD-4604 Empty rules document: … · Rule ‘…’ (…) must declare exactly one of rule: or file: … — SimpleYamlParser.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 … · …: validation rule ‘…’ wires ‘…: …’ (…) against rule ‘…’ which declares ‘…: …’ — the typed contract must match the input — 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 … · Rule ‘…’ declares binds … but … binds … — the contract every reference is checked against must match the SQL … 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 FieldDomainRules.java
TQL-FIELD-4612 Rule ‘…’ is declared but never referenced declarative-validation 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 Catalog ‘…’ (…) declares ‘…’ — a catalog accepts only …, · Catalogs document … must be a map … code-catalogs SimpleYamlParser.java
TQL-FIELD-4617 Catalog ‘…’ is declared twice (second: …) · a catalog name is declared twice across the catalogs/ documents. code-catalogs Catalogs.java
TQL-FIELD-4618 Catalog identifier ‘…’ is not a legal table or column name · 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 a recipe that commits (command-json,… webhook, queue-consume, file-import, file-export), not ‘…’ — there is no commit to invalidate… catalogs … code-catalogs, file-transfers, jobs DocumentRules.java
TQL-FIELD-4621 A catalog’s label: is a column name or… { message: <key with {key}> }, not … · Catalog ‘…’ declares file:… but no tables: — invalidation cannot find it, and nothing parses… SQL to work it out … code-catalogs JdbcCatalogStore.java, CatalogLocaleRules.java, CatalogSpec.java
TQL-FIELD-4623 Lookup column ‘…’ is not a legal column name · Route ‘…’: input …: lookup source … declares no main SQL query to resolve against … declarative-views RouteCompiler.java, 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 Default identity pack has no contract ‘…’ · No identity realm is configured … — AccessRequests.java, AccessReview.java, ContractResolver.java, +8 more
TQL-IAM-1002 A contract’s SQL failed against the realm’s datasource. · Contract ‘…’ failed: … … — IdentityService.java
TQL-IAM-1003 No datasource ‘…’ for realm … — IdentityService.java
TQL-IAM-1010 No managed schema for dialect ‘…’ — DefaultIdentityPack.java
TQL-IAM-2001 Identity bean ‘…’ is not configured · No datasource ‘…’ for realm … … — ContractSqlSource.java
TQL-IAM-4030 Realm ‘…’ does not allow write contract ‘…’ · a write was attempted on a realm whose capability is read-only. — IdentityService.java
TQL-IAM-4031 Realm ‘…’ does not allow role management contract ‘…’ · The realm’s role capability is not readWrite, so role management is refused. — IdentityService.java
TQL-IAM-4032 A ‘…’ condition names the attribute it matches · A condition needs a value … — RoleRules.java
TQL-IAM-4033 ‘…roleCode…’ cannot be requested: it has no owner to approve it · A condition is ‘…’ or ‘…’, not ‘…’ … — AccessRequests.java, AccessReview.java, GroupAdmin.java, +2 more
TQL-IAM-4034 A grant is refused: it would put a person on both sides of a blocking constraint. · Separation of duties ‘…’ refuses ‘…’: the user already holds …. Revoke one side before granting the other. — SeparationOfDuties.java
TQL-IAM-4035 An elevation is refused: no eligibility, a role already held, or a bad duration. · This deployment has no identity realm to elevate against — Elevation.java, LoginRoutes.java
TQL-IAM-4036 A delegated administrator reached outside the application they administer. — AdminScope.java
TQL-IAM-4037 The caller’s own account: an administrator cannot disable themselves. · You cannot disable your own account iam-admin IamAdminRoutes.java, IdentityDisables.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 Failed to read replay headers: … · Failed to serialize replay headers: … … — 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 Identity contract ‘…’ returned more than … rows (raise tesseraql.identity.maxRows,… or narrow the contract) · Result exceeds maxRows=… (use pagination or query-export) … — TransactionalCommandProcessor.java, IdentityService.java, SqlStepRunner.java, +2 more
TQL-LD-2801 …no file codec for format ‘…’ - available: …; pdf and excel are modules,… declared under tesseraql.modules (docs/printable-documents.md,… docs/file-transfers.md), and an application’s own codec arrives the… same way file-transfers, printable-documents FileCodecs.java
TQL-LD-2802 The document could not be written after the extraction ran: a codec, a column format or the spool it writes to — not the statement, which had run to completion. Raised here, the one write every surface shares, so the … file-transfers ExportWrite.java
TQL-LD-2810 Export follow-up statement failed: … · Export query failed: … … 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, multi-tenancy FileDownloadProcessor.java, FileTransferStatusProcessor.java, TransferCancelProcessor.java
TQL-LD-2823 Transfer ‘…’ has no downloadable file · Transfer … has no downloadable file (not an export,… still running, stopped, 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 Column ‘…’ maps to header ‘…’ which is not present in the file header · 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… · PDF template ‘…’ is not a file 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 ‘…’: … · Cannot read font ‘…’: … printable-documents PdfFonts.java
TQL-LD-2836 Column ‘…’ at data row … holds … characters; a workbook cell holds at most … - shorten the value in the query, or export it as csv · The export has … columns and a worksheet holds at most … … file-transfers JxlsFileCodec.java
TQL-LD-2837 The workbook template … … - restore the file the export declares, or fix template: · the declared workbook template cannot be opened — it is missing, a directory, empty or not a workbook — named by its path. A template … file-transfers JxlsFileCodec.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 carried no content … — AttachmentUploadProcessor.java, DefaultAttachmentService.java
TQL-LD-2842 content type ‘…’ is not allowed for this attachment — AttachmentUploadProcessor.java
TQL-LD-2843 attachment exceeds the …-byte limit · 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. · object-storage bucket ‘…’ is not in tesseraql.object-storage.allowedBuckets (deny by default) — S3BlobStore.java
TQL-LD-2847 attachment scan could not complete: … · the scanner could not reach a verdict (fail-closed). — DefaultAttachmentService.java
TQL-LD-2848 a download of an object that did not pass scanning. · attachment … is awaiting its malware scan - retry shortly — DefaultAttachmentService.java
TQL-LD-2849 Interrupted while awaiting the import · Polled file ‘…’ failed to import (transfer …); it moves to the failure directory … — PollImportProcessor.java
TQL-LD-2850 Export exceeds maxRows=…: the …declared… export holds every row before it writes (use a streaming format such as csv,… split the document with splitBy:, or raise export.maxRows) · a buffering export exceeded its row cap. file-transfers, printable-documents ExportRowCap.java
TQL-LD-2851 Group ‘…’ reappears after its rows… ended - order the extraction by …, or the same group would be written more than once · Named query ‘…’ selects …, so each document reads its own rows from it… - order it by … as the … file-transfers ExportGroups.java, SplitExport.java
TQL-LD-2852 placement data reached template content below the data area. · placement export reached row … of sheet ‘…’, which the… template already uses - the data area below startCell … holds … rows (move the… band down, or split … file-transfers JxlsFileCodec.java
TQL-LD-2853 Column ‘…’ holds a …, which the row spool cannot carry without… changing it - select it as a supported type in the query · a row value has no representation in the spool encoding. file-transfers SpooledRows.java
TQL-LD-2854 Row … has columns … where the first row had … - a spooled row set is one shape throughout · a row’s columns differ from the first row’s. file-transfers SpooledRows.java
TQL-LD-2855 Could not read spooled rows: … · Could not spool rows: … … file-transfers SpooledRows.java
TQL-LD-2856 This export carries a re-readable row set… because its codec declared that it holds rows - iterate repeatableRows() · This export streams its rows because its… codec declared that it writes them through - iterate rows() … file-transfers ExportModel.java
TQL-LD-2857 Groups ‘…’ and ‘…’ … - one document would overwrite the other · two group keys name the same file once made safe for a filesystem — the same name outright, or the same name up to case, which a case-insensitive … file-transfers, troubleshooting SplitExport.java
TQL-LD-2858 a split export’s filename carries no {key} placeholder. · splitBy: writes one document per group, so… filename: must carry … - otherwise every group would be written… to the same name and only the last would survive file-transfers SplitExport.java
TQL-LD-2859 An export enrichment failed while writing rows: … · 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 · The review window for this import has passed; upload the file again — JdbcFileTransferService.java
TQL-LD-2862 This import was already committed; upload the file again to import it… once more — JdbcFileTransferService.java
TQL-LD-2863 The export answered … by its statusWhen: arm ‘…’ · a query-export’s statusWhen: arm matched, so the route answers the status the arm declares instead of a document. The status rides in the details (status, with … file-transfers ErrorResponseRenderer.java, SqlStep.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-2868 Transfer … completed, but its file cannot be… opened on this node (tesseraql.temp.store: …): … - run the export again, or move the temp store off the node… with tesseraql.temp.store: db · a COMPLETED export whose … file-transfers, troubleshooting JdbcFileTransferService.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 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. · mcp document … declares kind: … — expected tool, resource, ui or 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 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. · Missing required argument: … … 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 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 MCP transport requires a valid bearer token · the transport bearer was missing or refused (HTTP 401). — McpHttpHandler.java
TQL-MCP-4264 The MCP endpoint takes POST and DELETE · the MCP endpoint takes POST and DELETE only (HTTP 405). — McpHttpHandler.java
TQL-MCP-4265 The MCP endpoint does not answer a browser page at this origin · the request’s Origin is neither loopback nor one the server allows — a web page, not an MCP client, is calling (HTTP 403). ai-mcp, app-mcp, troubleshooting McpHttpHandler.java
TQL-MCP-4266 The MCP endpoint takes application/json · a POST to the MCP endpoint must declare application/json (HTTP 415). ai-mcp, app-mcp McpHttpHandler.java
TQL-MCP-4267 MCP-Protocol-Version … is not served · the MCP-Protocol-Version header names a revision not served (HTTP 400). ai-mcp, app-mcp McpHttpHandler.java
TQL-MCP-4268 A request after initialize must carry its Mcp-Session-Id · a request after initialize carried no Mcp-Session-Id (HTTP 400). ai-mcp, app-mcp McpHttpHandler.java
TQL-MCP-4269 The Mcp-Session-Id names no live session; initialize again · the Mcp-Session-Id names no live session — unknown or idle too long (HTTP 404). ai-mcp, app-mcp McpHttpHandler.java
TQL-MCP-4270 The MCP transport reads at most … bytes of request body · the request body exceeds the MCP transport’s ceiling (HTTP 413). ai-mcp 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 is enabled on stack… member ‘…’, but the issuer is the stack’s — declare security.oauth.enabled in… tesseraql-stack.yml, not in an application’s config · the authorization server was enabled on … oauth OAuthRuntimeExtension.java
TQL-OAUTH-3001 The stack’s authorization server issues… for this stack, but … declares… tesseraql.security.jwt.… — a second issuer beside… it; remove the key source (the stack file’s security.jwt block… keeps only claim names and … oauth StackIssuer.java
TQL-OAUTH-3002 security.oauth.enabled is true but the stack… declares no externalOrigin — the issuer is the origin, so declare… externalOrigin in tesseraql-stack.yml · the authorization server is enabled but the stack declares no … oauth StackIssuer.java
TQL-OAUTH-3003 The token request names stack member ‘…’, but this… runtime addresses no stack members — the member axis is… the stack surface’s · a token request named a stack member this runtime does not address. Either the name is … — SessionTokens.java
TQL-OAUTH-3004 an application’s own configuration enables the authorization server. · tesseraql.security.oauth.enabled is declared in this application’s… configuration, but the authorization server is the stack’s —… declare … — OAuthScopeRules.java
TQL-OAUTH-3005 The stack’s authorization server… names …’s MCP resource from its address, but the… configuration declares tesseraql.mcp.resource — a name the stack’s… metadata document never publishes and its grants never carry, so … oauth, troubleshooting StackIssuer.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) capacity 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 notifications 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 OpsDashboard.java
TQL-OPS-9010 Readiness is DOWN (…); the orchestrator has stopped… routing traffic here until it recovers notifications OpsDashboard.java
TQL-OPS-9011 Pool ‘…’ has had … thread(s) waiting for a connection at every sample across… the last …: the pool, not the database, is the constraint; raise… maximumPoolSize with workerThreads capacity, deployment, notifications OpsDashboard.java
TQL-OPS-9012 Admission refused … request(s)/s over the last … (threshold …/s): the runtime is at capacity (TQL-RATE-4293, 4295); raise… workerThreads and maxInFlight, or add a replica notifications OpsDashboard.java
TQL-OPS-9013 A stop reached its drain bound … with … request(s) still in flight and cut them; raise… tesseraql.shutdown.timeout and the platform’s grace period… together notifications OpsDashboard.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 … capacity, security-hardening BenchHarness.java, ClusterRateLimiter.java, ConcurrencyLimiter.java, +1 more
TQL-RATE-4292 Too many attempts; retry later · the sign-in throttle … authentication, security-hardening BenchHarness.java, LoginRoutes.java
TQL-RATE-4293 application/json; charset=utf-8 · the runtime is at its in-flight bound; the route limiter’s 4291 is per route. … capacity, deployment, hypermedia-ui BenchHarness.java, HttpAdmission.java
TQL-RATE-4294 The member is at its event-stream forwarding capacity;… retry later · 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 … capacity, deployment, hypermedia-ui BenchHarness.java, StackRelay.java
TQL-RATE-4295 application/json; charset=utf-8 · the runtime is at its event-stream bound, which 4293’s budget is not. … capacity, deployment BenchHarness.java, HttpAdmission.java
TQL-RATE-4296 The member is at its event-stream forwarding capacity;… retry later · 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 … deployment BenchHarness.java, StackRelay.java
TQL-RATE-5030 Live-event registry is at its global capacity of … streams (tesseraql.live.maxTotal) · the live-event registry is at its global capacity — the new stream is refused (HTTP 503; the page still works, it just does not … realtime 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 Coverage history … is unreadable; the regression gate has no baseline to compare against —… delete the file to start a fresh history · Failed to write …: … testing ReportHistory.java
TQL-REPORT-2007 Failed to open a connection for schema introspection: … · Failed to serialize schema.json: … — 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 Evidence signature is missing ‘…’ · 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 Prompt ‘…’: unknown recipe ‘…’; a prompt document uses prompt-text · Route ‘…’: queue-consume mounts no sources: — the pipeline is its steps: … — RouteCompiler.java
TQL-ROUTE-3102 Route ‘…’: … · the route’s steps declaration is invalid (fail fast at startup). transactional-writes TransactionalCommandProcessor.java
TQL-ROUTE-3103 Route failed to compile; see the server log for the cause · Route {} failed to compile; serving a {} stub: {} … — RouteReloader.java
TQL-ROUTE-3110 Webhook replay store is not configured · the webhook replay store is not configured (HTTP 500). — WebhookVerifyProcessor.java
TQL-ROUTE-3111 Event channel store is not configured · the event channel store backing a queue-consume route is not configured. — QueueDedupProcessor.java
TQL-ROUTE-3112 Route ‘…’: notify:/publish:/outbox: and sequence allocation ride the main… connector and cannot join a ‘datasource: …’ transaction · 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. · enrich ‘…’: … reference rows matched one key; a merge is… many-to-one - use as: to attach them as a list, or narrow the… reference query response-shaping KeyedReference.java
TQL-ROUTE-3114 - it spooled its rows instead of holding them,… so load the spool into a table with a… chunk: step and reference that · an enrichment’s source: names no result set. — KeyedReference.java
TQL-ROUTE-3115 enrich ‘…’: into: ‘…’ is not a result set with rows · the target of an enrich: is not a result set with rows. — EnrichProcessor.java
TQL-ROUTE-3116 Prompt ‘…’ declares steps: — prompts/get is a read, so a prompt renders text from… sources: and a prompt that writes is a tool · a prompt-text recipe declares command steps, and prompts/get is a read. app-mcp RouteCompiler.java
TQL-ROUTE-3117 Prompt ‘…’ declares no response.text: — the rendered text is the message it… returns, so there is nothing to answer with · 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’ · Route ‘…’ declares import.review: required without authentication; a reviewed… batch belongs to the principal who uploaded it, so the route … — RouteCompiler.java
TQL-ROUTE-3119 Route ‘…’: input: declares… ‘…’, which is also the lock column — the lock is the… framework’s value, sent as …, not an application input · Route ‘…’: lock column ‘…’ is declared but no step’s statement carries… the lock … transactional-writes RouteCompiler.java
TQL-ROUTE-3120 Route ‘…’: source ‘…’ declares …, which a read acquisition does not… honour — move the statement to steps: · 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 data-scoping 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 auth type: … · Unsupported tesseraql-auth operation: … — AuthStep.java
TQL-SEC-4001 Security bean ‘…’ is not bound;… security is not configured for auth: … · the authenticator this route needs is not configured, so nothing can pass. authentication AuthStep.java
TQL-SEC-4011 A bearer was presented but… the stack validates none: declare security.jwt.* in… tesseraql-stack.yml so the origin can verify tokens · Authentication failure code shared by all verifiers (TQL-SEC-4011). … authentication, security-hardening OidcRoutes.java, DeployRoutes.java, LoginRoutes.java, +9 more
TQL-SEC-4012 Webhook ‘…’ is missing its signature or timestamp header · Webhook ‘…’ signature did not verify … — WebhookVerifyProcessor.java
TQL-SEC-4013 Webhook ‘…’ timestamp is not epoch seconds · Webhook ‘…’ timestamp is outside the … tolerance … — WebhookVerifyProcessor.java
TQL-SEC-4014 Webhook ‘…’ delivery was already processed (replay) · 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 Policy ‘…’ is not defined (deny by default) · Policy ‘…’ resolves… from this request’s path, which names no application it can check … authentication, security-hardening, troubleshooting AuthStep.java, DeployRoutes.java, OperationsRoutes.java, +2 more
TQL-SEC-4032 CSRF token missing or invalid. · Invalid CSRF token authentication, security-hardening, troubleshooting PolicyEngine.java, CsrfValidator.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
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 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, JwtConfigRules.java
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 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
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 · mTLS client ‘…’ declares the 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 JobRules.java, LintCodes.java, PushStepRules.java
TQL-SEC-4085 FTPS poll source does not verify the server certificate; set… tesseraql.connectors.poll.trustStore (file:, password:) to… pin the CA that signs it · Step ‘…’: ftps push needs tesseraql.connectors.push.trustStore — … connectors JobRules.java, LintCodes.java, PushStepRules.java
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-4094 Copilot endpoint host ‘…’ is not in tesseraql.http.outbound.allowedHosts (egress is… deny by default); allow it: …tesseraql: … http: … outbound: … allowedHosts: … - … · tesseraql.copilot.endpoint ‘…’ must be an absolute … connectors, copilot, security-hardening StudioSupport.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 need tesseraql.identity.invite.{channel,url} · 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 SecurityDefaultRules.java
TQL-SEC-4132 A security default rule is missing its ‘match’ pattern · Each security default rule must be a map with a ‘match’ key … authentication SecurityDefaults.java, RouteRules.java
TQL-SEC-4133 Route ‘…’ restates the default… response header ‘…’ — the app default… already sends it response-shaping 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 ResponseHeaderRules.java
TQL-SEC-4135 Default response header ‘…’ carries the control character … — a header value is one line of printable text · Default response header ‘…’ has no value — a default exists to be sent … troubleshooting 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
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 … troubleshooting ResponseHeaderDefaults.java, ResponseHeaderRules.java
TQL-SEC-4140 OIDC request failed · SAML request failed … — OidcRoutes.java, SamlAcsRoutes.java, FederationErrors.java
TQL-SEC-4141 Push target host ‘…’ is not in tesseraql.connectors.push.allowedHosts (deny by default) · a push target’s host is not in the push allow-list (deny by default). connectors, jobs FilePushService.java
TQL-SEC-4143 JWT audience does not include this application · 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 … oauth JwtAuthenticator.java
TQL-SEC-4144 JWT carries no exp claim, so it would never expire · the token carries no exp, so it would never expire (HTTP 401). — JwtAuthenticator.java
TQL-SEC-4145 tesseraql.security.defaults.mcp declares nothing to default (auth or policy) · 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-4147 tesseraql.security.conditions.zone is not a time-zone id the JDK knows. Reported at lint and refused at boot from the same predicate. iam-admin ConditionZone.java, ConditionZoneRules.java
TQL-SEC-4148 The caller does not hold application role ‘…’ for member ‘…’, so a token cannot be minted acting as it · The caller does not hold application role ‘…’, so a token cannot be minted acting as it … authentication AuthStep.java, SessionTokens.java, Activation.java
TQL-SEC-4149 Sign-in is not allowed from this network · tesseraql.security.network.allow: … … authentication SignInAllowList.java
TQL-SEC-4150 The limit is … bytes (tesseraql.http.maxBodyBytes). · The request body exceeds tesseraql.http.maxBodyBytes (… bytes) … deployment HttpBodyLimit.java
TQL-SEC-4151 Route ‘…’ declares the response… header ‘…’ with the control character … — the edge refuses it on every request — ResponseHeaderRules.java
TQL-SEC-4152 A declared header whose name is not a token the wire can carry. · Route ‘…’ declares the response header ‘…’, whose name … — the edge refuses it on every request troubleshooting ResponseHeaderRules.java
TQL-SEC-4153 A declared Content-Disposition building a filename from a placeholder. · Route ‘…’ builds a Content-Disposition… filename from a placeholder — the value is neither quoted… nor encoded on the wire; name a download … troubleshooting ResponseHeaderRules.java
TQL-SEC-4154 tesseraql.security.jwt.secret is the development secret the scaffold… publishes, and the ‘…’ profile is active, so anyone… could mint a token this application accepts. Supply the secret… for this environment in … deployment SecurityConfigFactory.java, JwtConfigRules.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 SqlRenderer.java
TQL-SQL-2101 Expected ‘…’ · Notification ‘…’ has a malformed recipient: expression: … … declarative-validation, notifications, response-shaping, troubleshooting, two-way-sql ExpressionParser.java, DocumentRules.java, InputRules.java, +2 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 Referenced SQL file is missing: … · Source ‘…’ references a missing SQL file: … … declarative-validation, troubleshooting, two-way-sql RouteFiles.java, JobRules.java, LintCodes.java, +3 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
TQL-SQL-2107 Scope ‘…’ is not declared under scope/ · a scope directive named a scope not declared under scope/. approval-workflow, data-scoping CompiledScopeResolver.java
TQL-SQL-2108 Embedded variable ‘…’ resolved to a value with SQL …meta-characters or control characters; constrain it with an …enum input. Value: … · 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 DocumentRules.java
TQL-SQL-2110 Expression function ‘…’ (…) declares a negative arity · Expression function ‘…’ (…) shadows a built-in … declarative-validation 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 SqlRenderer.java
TQL-SQL-2113 A scope match arm’s when: declares no role, …permission, or claim (an empty block or a misspelled key would match every …principal); remove the when: for an unconditional arm, or name a predicate · a match arm’s when: … — CompiledScopeResolver.java
TQL-SQL-2114 enrich ‘…’: … distinct keys exceeds maxKeys=… (narrow the rows being enriched, or raise maxKeys) · the distinct key set exceeded maxKeys. response-shaping KeyedReference.java
TQL-SQL-2115 A lock directive rendered with no lock value seeded. On a request… the command pipeline seeds it from the caller; in a declarative… test suite the case declares lock: with the route whose lock:… names the column … testing, transactional-writes 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 under NOT IN renders not in (null), which… excludes every row instead of none. Guard the site:… /%if !….empty / … /%end/ · 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 … approval-workflow, 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-2122 An operand the expression could not evaluate at request time. The sentence names the operator and the operand kinds, never a value: an operand may be a claim or a row. declarative-validation, troubleshooting, two-way-sql Expr.java
TQL-SQL-2123 The file carries a transaction-control statement on line … (…). A 2-way SQL file never owns its… transaction: the command pipeline does on a request and the test runner… does for a case, which it always rolls back — … testing, troubleshooting, two-way-sql TransactionControl.java
TQL-SQL-2500 Cannot read export query ‘…’: … · 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) · query-export requires the compiled export binding (codec and write spec) — SqlStep.java
TQL-SQL-2502 No DataSource named ‘…’ in the registry multi-datasource TenantRouting.java
TQL-SQL-2503 Source ‘…’ column ‘…’ row index …: the value ‘…’ … - declared …source · a column’s value could not be parsed into the kind its result: entry declares — text that is not JSON, not a date in the declared format, not a … response-shaping DeclaredKinds.java
TQL-SQL-2600 Command transaction failed: … — TransactionalCommandProcessor.java
TQL-SQL-2601 Outbox store is not configured — TransactionalCommandProcessor.java
TQL-SQL-2602 Step ‘…’ affected … row(s), expected … · 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 Route ‘…’: document sequences are not configured in this runtime · 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 Login ‘…’ already exists · The login id is already taken. … credential-lifecycle, 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 Step ‘…’ affected … row(s), expected … · 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 Step ‘…’ affected … row(s), expected … · a declared lock refused a stale write (docs/edit-conflict.md decision 5). hypermedia-ui, scaffolding, transactional-writes ErrorResponseRenderer.java, TransactionalCommandProcessor.java
Code Meaning Documented in Raised in
TQL-STUDIO-4002 Draft path escapes drafts dir: … · Path escapes app home: … — DraftStore.java
TQL-STUDIO-4003 Path escapes app home: … — DocService.java
TQL-STUDIO-4004 Missing ‘…’ parameter · a Studio request without a parameter its verb requires (HTTP 400). — StudioRoutes.java
TQL-STUDIO-4030 Studio is read-only; apply is disabled · Studio is read-only; capturing baselines is disabled … — CalendarForms.java, DecisionForms.java, DraftStore.java, +4 more
TQL-STUDIO-4040 No decision named ‘…’ is declared under decisions/ · No draft to apply for: … … — CopilotService.java, DecisionForms.java, Declarations.java, +3 more
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). — WorkshopTargets.java
TQL-STUDIO-4090 A migration already exists at …; open it in the editor, or use a different description. · The saved source changed since this draft was started;… review the diff and re-apply to overwrite, or discard the draft. — DraftStore.java, 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 file already exists at …; open it in the editor instead · A migration needs a description … — 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 kind must be ‘role’ or ‘permission’ · A policy rule needs a … value … — OverlayEditor.java
TQL-STUDIO-4227 Invalid locale tag: … · Invalid message key: … — OverlayEditor.java
TQL-STUDIO-4228 Not an editable setting: … · … must be a whole number — OverlayEditor.java
TQL-STUDIO-4229 Flag value must be a number: … · Invalid flag name: … — OverlayEditor.java
TQL-STUDIO-4230 Input … … must be a number: … · Input … … must be an integer: … … — RouteForms.java
TQL-STUDIO-4231 A basic credential needs a username · A connector name is lowercase letters, digits and dashes: … … — StudioProviders.java, StudioSupport.java, OverlayEditor.java, +1 more
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). — StudioProviders.java, StudioSupport.java
TQL-STUDIO-4235 Model endpoint answered … · Model endpoint returned no choices … copilot CopilotRoutes.java, StudioSupport.java, CopilotService.java
TQL-STUDIO-4236 Capturing a baseline without a schema sidecar to copy (409). · No schema sidecar to baseline; refresh the schema first. — StudioService.java
TQL-STUDIO-4237 A decision-rows grid save that cannot even reach the decision compile (shape/target). · Decision ‘…’ is table-backed —… its rows live in the app table (edit them in the data browser) … — DecisionForms.java
TQL-STUDIO-4238 A holiday toggle needs a date · Calendar ‘…’ is table-backed… — its holiday rows are data (edit them in the data browser) … jobs CalendarForms.java
TQL-STUDIO-4239 A job cannot chain after itself · A trigger declares one kind: after: or a schedule, not both … jobs JobPolicyForms.java
TQL-STUDIO-4240 Unknown wizard ‘…’ — expected one of … — StudioService.java
TQL-STUDIO-4241 Menu index … names no item; the menu has … item… · the menu index names no item, so the edit cannot be applied. — OverlayEditor.java
TQL-STUDIO-4242 Failed to introspect table ‘…’: … · Failed to read the database catalog: … — StudioScaffoldService.java
TQL-STUDIO-4243 A table needs at least one column · A … is required … — MigrationDdl.java
TQL-STUDIO-4244 Menu index ‘…’ is not a number — StudioSupport.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-3002 tenancy.mode ‘…’ isolates tenants by pool but… tenancy.datasources declares none — the runtime refuses to boot,… since every tenant would be refused (TQL-TENANT-4031) · tenancy.mode must be ‘shared-schema’, … multi-tenancy TenancyConfigRules.java
TQL-TENANT-4001 No tenant could be resolved for the request multi-tenancy TenantResolution.java
TQL-TENANT-4031 No datasource configured for tenant ‘…’ · 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) file-transfers, multi-tenancy TenantDataSources.java
TQL-TENANT-4032 tenancy.mode names no isolation mode, or a per-tenant mode declares no tenancy.datasources — the boot refuses rather than serving every tenant the shared pool (docs/multi-tenancy.md). · tenancy.mode ‘…’ is not an … multi-tenancy TenancySettings.java, TenantDataSources.java
TQL-TENANT-5005 Tenant registry query failed: … multi-tenancy TenantRegistry.java
Code Meaning Documented in Raised in
TQL-TPL-2001 a response’s page template does not resolve — neither beside the document nor under the application’s templates/ — one rule, declared once, for the html, file and text renderers. · …‘…’ resolves to no file beside the … troubleshooting RouteFiles.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 previous version to roll back to for app: … · 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 Cannot eject panel type … · Cannot eject view kind … … declarative-views ViewBinding.java, ViewEjector.java, ViewEjects.java, +1 more
TQL-VIEW-3302 View …: embedded view … does not resolve to a view document id · response.html declares both template: and view: — they are mutually exclusive … declarative-views HtmlResponseRenderer.java, ViewBinding.java, ViewRules.java
TQL-VIEW-3303 View …: action route … declares no input: block to derive fields from · View …: action route … is not a file-import route — an import view renders one… import’s upload, report and confirm … — ViewBinding.java, ViewRules.java
TQL-VIEW-3304 View …: field … is not declared by the action route’s input: block · a fields: entry names an input the action route does not declare. … declarative-views, troubleshooting ViewRules.java, ViewFields.java
TQL-VIEW-3305 View …: unknown widget … on field … (known: …) · unknown widget name. … — ViewRules.java, ViewFields.java
TQL-VIEW-3306 View …: unknown slot … (a … view offers …) · unknown slot name for the view kind (customization ladder L1). … declarative-views ViewBinding.java, ViewRules.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 view’s own source:, a child’s, a panel’s, or an embedded document’s is not a source of the binding route (a sources: entry, or main). declarative-views ViewBinding.java, ViewRules.java, ViewSources.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 Invalid view document …: … does not accept …: (accepted: …) · 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 … 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 id — response.html.view references that id, so the files themselves stay … declarative-views 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’, got: … … declarative-views HtmlResponseRenderer.java, ViewRules.java
TQL-VIEW-3318 View …: embedded view … embeds views itself — embedding depth is 1 · an embedded view embeds further — embedding depth is 1. … declarative-views ViewBinding.java, ViewRules.java
TQL-VIEW-3319 model: must not declare the reserved view-model names (v, views). · response.html.model must not declare ‘v’,… ‘views’ or ‘codes’ — they are the reserved model names declarative-views HtmlResponseRenderer.java
TQL-VIEW-3320 the stream was asked for a topic no route declares with emit:. · …; a stream for an undeclared topic can never fire… (this app declares no topics) realtime LiveEvents.java
TQL-VIEW-3321 view …: link … placeholder {…} must be a plain column name declarative-views ViewRules.java
TQL-VIEW-3322 View …: … (declared key: …) · a declared list key: column is null, absent or empty in a result row. declarative-views ViewBinding.java
TQL-VIEW-3323 View …: filter … is not a declared input of the route · a filters: entry names an input the route does not declare. … 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. · a workflow without a document: — the region has nothing to… render transitions of declarative-views RouteCompiler.java
TQL-VIEW-3328 Workflow ‘…’: the detail row has no ‘…’ column — the view’s SQL must select the document’s … column for the transitions region to render truthfully… (docs/workflow-surface.md) · the detail row is missing the workflow’s … declarative-views WorkflowViewBinder.java
TQL-VIEW-3329 Lookup source … rows carry no ‘…’ column (the declared id, code: and label:… columns must all be selected) · a lookup source row lacks a declared column (id, code: or label:). declarative-views LookupReferences.java
TQL-VIEW-3330 View …: the action route’s lock… column ‘…’ carries a read policy — a masked or hidden lock… cannot be sent back unchanged, so the form could never be saved · View …: the action route’s lock… column ‘…’ holds a …, which … declarative-views ViewBinding.java
TQL-VIEW-3331 an exports: entry targets a route that is not a query-export GET or a file-export POST, or one that would refuse the list’s question (a list input it does not declare or declares with another type, a sort allowlist … declarative-views RouteCompiler.java, ViewBinding.java, ViewRules.java, +1 more
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
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 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 Workflow ‘…’: bulk ‘…’ was given … keys, over the …-key ceiling (tesseraql.workflow.bulk.maxKeys) · 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
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-3121 … reassign params: ‘…’ reads ‘…’ — the sweeper runs with no request, so a reassign… resolver’s params: read document., key, docId, state or… audit. only (key is seeded already) approval-workflow WorkflowRules.java
TQL-WORKFLOW-3201 Workflow ‘…’: transition ‘…’ requires state ‘…’ but …conflict · a transition is not legal for the document’s current state (HTTP 409). approval-workflow, testing WorkflowDispatchProcessor.java, WorkflowCases.java, TransitionExecutor.java
TQL-WORKFLOW-3202 Workflow ‘…’: dispatch ‘…’ found no member transition that holds · Workflow ‘…’: transition ‘…’ guard matched no rows … approval-workflow, testing WorkflowDispatchProcessor.java, WorkflowCases.java, TransitionExecutor.java
TQL-WORKFLOW-3203 Workflow ‘…’: only the assignee may delegate this task · Workflow ‘…’: transition ‘…’ requires an assigned task the caller does not hold … approval-workflow WorkflowDelegateProcessor.java, TransitionExecutor.java
TQL-WORKFLOW-3204 Escalation ‘…’ of …/… updated no rows — the required data state… is absent; the document stays in ‘…’ · Transition ‘…’ updated no rows — outside the caller’s row… authority or the required data state is absent … approval-workflow WorkflowSweeper.java, TransitionExecutor.java
TQL-WORKFLOW-3210 Workflow ‘…’ delegation needs a task store · Workflow ‘…’ is managed but no workflow store is configured … — 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 Delegation failed: … · the delegation transaction failed. — WorkflowDelegateProcessor.java
TQL-WORKFLOW-3223 Workflow sweep failed: … · 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: … · Failed to serialize YAML: … … security-hardening SimpleYamlParser.java, AppLinter.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 a declared key cannot apply where it is declared — the format never reads it, the type is not one the export renders, or no column the declaration reaches is typed. A lint error (a warning when the declaration is … file-transfers, jobs, printable-documents ExportDeclarations.java, ExportRules.java
TQL-YAML-1006 export.template…‘…’ must be an… .html file (a pdf renders through the template engine before… conversion) · export.template…references a missing template: … … file-transfers, printable-documents ExportDeclarations.java
TQL-YAML-1007 Message catalog ‘…’ is not valid YAML: … · Message catalog ‘…’ must be a map of message keys to texts … 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 pagination: is a query-json/query-html key (recipe is …) pagination InputRules.java
TQL-YAML-1016 pagination: by: entries must be column names · pagination: cap: is a strategy: snapshot key … pagination InputRules.java
TQL-YAML-1017 pagination: size must be >= 1 and maxSize >= size — InputRules.java
TQL-YAML-1018 pagination: 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 ‘…’ — TempStores.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, troubleshooting 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
TQL-YAML-1028 input …: type sort requires columns: (the sortable-column… allowlist its keys validate against) — InputRules.java
TQL-YAML-1030 Duplicate preference key ‘…’ · Each preference must be a map of settings … account PreferencesSpec.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: approval-workflow, inbox 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 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 DocumentRules.java, LintCodes.java, StepRules.java
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 ‘…’ … file-transfers, 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 a piece the export or the import needs is missing — the block itself, a follow-up’s statement, the main source an export writes, or the row write a file-import applies. · export.after…a follow-up needs its statement … file-transfers, jobs, troubleshooting RouteCompiler.java, ExportDeclarations.java, RecipeShape.java, +1 more
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-1045 the declared filename’s extension is not the format’s (a warning). · …filename: ends in ‘…’ but the export is … (…) - the file is served and recorded as … whatever its name, and a reader trusts the name file-transfers ExportRules.java
TQL-YAML-1046 Step ‘…’: enrich ‘…’: source: ‘…’ must name an earlier step’s result… (steps.<id>) - a job’s results sit under steps · Step ‘…’: enrich ‘…’: source: names ‘…’, which is not an earlier step … jobs, response-shaping EnrichRules.java, StepRules.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 — 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-1063 an export or import declaration carries a value the runtime cannot honour where it reads it — a time-zone id the JDK does not know, a language tag it cannot format, a column pattern the parser refuses, an import column … file-transfers, jobs ExportDeclarations.java
TQL-YAML-1064 a declared field key its surface does not honour — a type: no request binds on input: (json, or a name outside the input vocabulary), a locale: written on an input: entry (a request parses in its own locale), … response-shaping DeclaredKinds.java, DeclaredKindRules.java
TQL-YAML-1065 a tesseraql.i18n.defaultLocale or locales entry names a locale the runtime cannot serve — not a BCP-47 language tag (ja_JP), or one the JDK has no formatting data for. Judged by the linter as a finding and here as … internationalization I18nSettings.java, I18nRules.java
TQL-YAML-1066 a route declares no response arm its recipe renders — a JSON recipe (query-json, command-json, webhook) answers through response.json: or response.redirect:, a page recipe (query-html, page) through … troubleshooting RecipeShape.java
TQL-YAML-1067 a source or a step declares no arm to run — nothing under sql: names a file:, and there is no contract:, service: or http: (nor, on a command step, a sequence:); or an http: block names no url:. Reported … troubleshooting RecipeShape.java
TQL-YAML-1068 Job ‘…’ schedule.cron: … · a job’s schedule.cron is not a Quartz cron expression the scheduler can fire — six or seven fields, seconds first, with ? in one of the two day fields. Reported at lint and refused at boot … jobs JobSchedules.java, CronExpressions.java, JobRules.java
TQL-YAML-1069 a header.&lt;name&gt; source outside a service: binding’s params: — SQL binds what the route declares under input:, a request header is a provider’s argument — or one that names no header. Reported at lint and refused … extending, troubleshooting, two-way-sql RequestSources.java
TQL-YAML-1070 A body source on a route that carries no body. · …reads the request body, and a GET carries none - the edge reads no… body on a GET, so the value is null on every request; declare… input: … and read query.… troubleshooting RequestSourceRules.java
TQL-YAML-1071 A body source naming a field the route refuses. · …names a field the route does not declare under input: - a request… carrying it is refused by the mass-assignment guard as an unknown… input field, and one without it … troubleshooting RequestSourceRules.java
TQL-YAML-1072 a declared input’s default: is not a value the input accepts — it does not parse as the declared type, or the parsed value breaks a constraint the field declares (enum, min/max, a length, pattern, format, … transactional-writes, troubleshooting InputDefaults.java
TQL-YAML-1073 response.file.contentType declares a charset= the body is not written in. The file response encodes its text as UTF-8; declare charset=utf-8 or omit the parameter. · …response.file.contentType: ‘…’ declares … troubleshooting ResponseLiterals.java
TQL-YAML-1074 response.redirect.location starts or ends with whitespace. The literal is written as given — a trailing space is %20 on the wire, a leading one keeps the base path off the value and the redirect leaves the … troubleshooting ResponseLiterals.java
TQL-YAML-1075 a declared file reference resolves outside the application home (or is not a path the filesystem can express) — refused at lint, admission, boot, the hot reload and job run alike, naming the document, the key and the … printable-documents, threat-model, troubleshooting RouteFiles.java
TQL-YAML-1076 a filename: placeholder the site cannot resolve — a spelling outside the dotted-path grammar (letters, digits, _ and . between the braces), a root the request or the job context does not carry, a params.&lt;name&gt; … file-transfers, jobs, troubleshooting FilenameTemplates.java
TQL-YAML-1077 a source’s or a reference’s cache: where nothing can be held — a transactional or streaming surface, a step, a contract, service, HTTP or spool arm, a mode other than query, a missing, unparseable or non-positive … response-shaping, troubleshooting HeldSources.java
TQL-YAML-1101 Cannot resolve placeholder ‘${…}’ · Cannot resolve secret ‘${…}’ … deployment AppConfig.java
TQL-YAML-1102 Notification ‘…’ references undeclared channel ‘…’ · Notification channel ‘…’ has unsupported type ‘…’ (expected mail or webhook) … 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 A local … connector needs a… path: · A local … connector needs tesseraql.connectors.….allowedPaths: without a declared root the job can touch files… anywhere the process can reach … — FileConnectors.java
TQL-YAML-1105 Webhook verifier ‘…’ is not configured under tesseraql.connectors.webhooks · Webhook verifier ‘…’ must be a map of settings … — WebhookVerifiers.java
TQL-YAML-1106 Messaging channel ‘…’ declares unknown transport ‘…’ (built-in transports: ‘…’, ‘…’) · Messaging channel ‘…’ is not configured under tesseraql.messaging.channels … messaging MessagingChannels.java
TQL-YAML-1107 Configuration key ‘…’ is not a boolean (expected true/false, yes/no, on/off or 1/0): … · a config value expected to be a boolean was not a recognized spelling. — AppConfig.java
TQL-YAML-1108 No object-storage provider ‘…’ on the classpath; is the tesseraql-… module installed? · the configured object-storage provider is not on the classpath. — BlobStores.java
TQL-YAML-1109 HTTP credential ‘…’ has unsupported type ‘…’ (expected bearer, basic, or… header) · HTTP credential ‘…’ must be a map of settings … connectors HttpOutbound.java
TQL-YAML-1110 Failed to serialize menu.yml · config/menu.yml is mis-shaped, or could not be written. … — MenuSpec.java
TQL-YAML-1111 Failed to serialize flags.yml · 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. · … must be a positive integer, got ‘…’ … deployment TesseraqlRuntime.java
TQL-YAML-1113 The request-body spool directory … is not writable: …. Every form post spools through it, so the runtime… would answer none. Set tesseraql.app.work to a writable location… or grant the runtime user write access to this … deployment TesseraqlHttpServer.java
TQL-YAML-1114 a declared identity row bound that is not a positive integer or -1. · tesseraql.identity.maxRows must be a positive integer or -1, got ‘…’ … — TesseraqlRuntime.java
TQL-YAML-1115 a role pool this runtime would never use — under a datasource other than main, where jobs take that datasource’s own pool and transfers never run, or on a main that is an in-process duckdb engine, which has no … deployment MainRoles.java
TQL-YAML-1116 an export renders dates and times with no declared zone, so the JVM’s applies — a lint warning (docs/deployment-decisions.md decision 2). · …no zone is declared - neither this export’s timezone: nor… … deployment ExportDeclarations.java
TQL-YAML-1201 App ‘…’ index entry escapes the app root: · Path escapes app home: … — ClasspathAppSource.java, ManifestLoader.java
TQL-YAML-1202 App home is not a directory: … · Environment profile ‘…’ is active but config/env/….yml does not exist … — 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. · …Duration must start with a number: … … — Durations.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. · …Size does not fit in a byte count: … … — Sizes.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
TQL-YAML-1401 Failed to load test suite: … · Failed to parse test suite: … … — TestSuiteLoader.java
TQL-YAML-1403 an expect: block that is present but asserts nothing. · …: case ‘…’ has an expect:… block that asserts nothing — check for a misspelled key (rowCount, rows,… updateCount), or omit expect: to only assert the case runs — 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, ApplicationNameRules.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, ApplicationNameRules.java
TQL-YAML-1406 Policy ‘…’: … · 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 … — SecurityConfigFactory.java, PolicyCodes.java, PolicyCodeRules.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, DeclaredRoleRules.java
TQL-YAML-1408 format: … names no codec this classpath carries and the… application declares none — …the … module provides it: declare it… under tesseraql.modules, or a package built… from this application deploys and fails at… the … file-transfers, printable-documents 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 RouteCompiler.java, PolicyCodes.java, RouteRules.java
TQL-YAML-1410 Test case ‘…’ is declared twice: in … and … — the reports join results to… cases by name, so both would show the first result · two cases across the app’s suites share a name. testing, troubleshooting AppTestRunner.java
TQL-YAML-1411 No test case is named … under …tests… — nothing ran · a --case filter named no case. testing AppTestRunner.java
TQL-YAML-1412 Policy ‘…’: … · a policy rule names more than one of role, permission and claim. A rule is exactly one condition; the runtime used to take the first key it recognised and drop the rest, so the written permission … troubleshooting SecurityConfigFactory.java, PolicyCodes.java, PolicyCodeRules.java
TQL-YAML-1413 Bench scenario … declares no requests: — a run drives at least… one route · Bench scenario … has a request without route: … — SimpleYamlParser.java, BenchScenario.java
TQL-YAML-1414 Bench request names route ‘…’, which the application does not declare… (tesseraql routes lists the ids) · a bench request names a route the application does not declare. capacity BenchScenarios.java
TQL-YAML-1415 Bench request for route ‘…’ passes ‘…’, which the route’s input: does not declare · a bench request passes a param the route’s input: does not declare. — BenchScenarios.java
TQL-YAML-1416 Bench request drives ‘…’ (…), a write, and the scenario does not declare writes: allowed —… a load run that mutates data is a decision the author writes down · a bench request drives a route that is not GET or HEAD and … — BenchScenarios.java