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