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
ACCOUNT
Section titled “ACCOUNT”| 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 |
ATTACH
Section titled “ATTACH”| 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.<name>/tql.ops.run.<name> 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 |
DECISION
Section titled “DECISION”| 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 |
PLUGIN
Section titled “PLUGIN”| 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 |
REPORT
Section titled “REPORT”| 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 |
STUDIO
Section titled “STUDIO”| 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 |
TENANT
Section titled “TENANT”| 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 |
UPGRADE
Section titled “UPGRADE”| 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 |
WORKFLOW
Section titled “WORKFLOW”| 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.<name> 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.<name> … |
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 <number><unit> 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 <number> or <number><unit> 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.<name>, 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 |