[{"data":1,"prerenderedAt":3705},["ShallowReactive",2],{"navigation":3,"\u002Fdocs\u002Freference\u002Fconfiguration-reference":314,"\u002Fdocs\u002Freference\u002Fconfiguration-reference-surround":3700},[4,38,86,149,176,219,257,273],{"title":5,"path":6,"stem":7,"children":8,"icon":37},"Getting Started","\u002Fdocs\u002Fgetting-started","1.docs\u002F1.getting-started\u002F1.index",[9,12,17,22,27,32],{"title":10,"path":6,"stem":7,"icon":11},"Getting started","i-lucide-flag",{"title":13,"path":14,"stem":15,"icon":16},"Modules overview","\u002Fdocs\u002Fgetting-started\u002Fmodules-overview","1.docs\u002F1.getting-started\u002F2.modules-overview","i-lucide-boxes",{"title":18,"path":19,"stem":20,"icon":21},"Installation","\u002Fdocs\u002Fgetting-started\u002Finstallation","1.docs\u002F1.getting-started\u002F3.installation","i-lucide-download",{"title":23,"path":24,"stem":25,"icon":26},"License configuration","\u002Fdocs\u002Fgetting-started\u002Flicense-configuration","1.docs\u002F1.getting-started\u002F4.license-configuration","i-lucide-key-round",{"title":28,"path":29,"stem":30,"icon":31},"Your first app","\u002Fdocs\u002Fgetting-started\u002Ffirst-app","1.docs\u002F1.getting-started\u002F5.first-app","i-lucide-square-play",{"title":33,"path":34,"stem":35,"icon":36},"Project setup","\u002Fdocs\u002Fgetting-started\u002Fproject-setup","1.docs\u002F1.getting-started\u002F6.project-setup","i-lucide-package",false,{"title":39,"path":40,"stem":41,"children":42,"icon":45},"Core Concepts","\u002Fdocs\u002Fconcepts","1.docs\u002F2.concepts\u002F1.index",[43,46,51,56,61,66,71,76,81],{"title":44,"path":40,"stem":41,"icon":45},"Core concepts","i-lucide-book-open",{"title":47,"path":48,"stem":49,"icon":50},"Architecture","\u002Fdocs\u002Fconcepts\u002Farchitecture","1.docs\u002F2.concepts\u002F2.architecture","i-lucide-layers",{"title":52,"path":53,"stem":54,"icon":55},"Exactly-once semantics","\u002Fdocs\u002Fconcepts\u002Fexactly-once","1.docs\u002F2.concepts\u002F3.exactly-once","i-lucide-shield-check",{"title":57,"path":58,"stem":59,"icon":60},"Lanes and parallelism","\u002Fdocs\u002Fconcepts\u002Flanes-and-parallelism","1.docs\u002F2.concepts\u002F4.lanes-and-parallelism","i-lucide-split",{"title":62,"path":63,"stem":64,"icon":65},"State and thread-safety","\u002Fdocs\u002Fconcepts\u002Fstate-and-thread-safety","1.docs\u002F2.concepts\u002F5.state-and-thread-safety","i-lucide-lock",{"title":67,"path":68,"stem":69,"icon":70},"Event time and watermarks","\u002Fdocs\u002Fconcepts\u002Fevent-time-and-watermarks","1.docs\u002F2.concepts\u002F6.event-time-and-watermarks","i-lucide-clock",{"title":72,"path":73,"stem":74,"icon":75},"The configuration model","\u002Fdocs\u002Fconcepts\u002Fconfiguration-model","1.docs\u002F2.concepts\u002F7.configuration-model","i-lucide-sliders-horizontal",{"title":77,"path":78,"stem":79,"icon":80},"The error-handling model","\u002Fdocs\u002Fconcepts\u002Ferror-handling-model","1.docs\u002F2.concepts\u002F8.error-handling-model","i-lucide-triangle-alert",{"title":82,"path":83,"stem":84,"icon":85},"How StoatFlow differs from Kafka Streams","\u002Fdocs\u002Fconcepts\u002Fhow-stoatflow-differs-from-ks","1.docs\u002F2.concepts\u002F9.how-stoatflow-differs-from-ks","i-lucide-arrow-left-right",{"title":87,"path":88,"stem":89,"children":90,"icon":93},"Building Topologies","\u002Fdocs\u002Fbuilding","1.docs\u002F3.building\u002F1.index",[91,94,99,104,109,114,119,124,129,134,139,144],{"title":92,"path":88,"stem":89,"icon":93},"Building topologies","i-lucide-blocks",{"title":95,"path":96,"stem":97,"icon":98},"Error handling and DLQ","\u002Fdocs\u002Fbuilding\u002Ferror-handling-dlq","1.docs\u002F3.building\u002F10.error-handling-dlq","i-lucide-circle-x",{"title":100,"path":101,"stem":102,"icon":103},"State stores","\u002Fdocs\u002Fbuilding\u002Fstate-stores","1.docs\u002F3.building\u002F11.state-stores","i-lucide-database",{"title":105,"path":106,"stem":107,"icon":108},"Testing topologies","\u002Fdocs\u002Fbuilding\u002Ftesting","1.docs\u002F3.building\u002F12.testing","i-lucide-flask-conical",{"title":110,"path":111,"stem":112,"icon":113},"Sources and sinks","\u002Fdocs\u002Fbuilding\u002Fstreams-builder","1.docs\u002F3.building\u002F2.streams-builder","i-lucide-import",{"title":115,"path":116,"stem":117,"icon":118},"KStream and KTable operations","\u002Fdocs\u002Fbuilding\u002Fkstream-ktable","1.docs\u002F3.building\u002F3.kstream-ktable","i-lucide-waypoints",{"title":120,"path":121,"stem":122,"icon":123},"Aggregations","\u002Fdocs\u002Fbuilding\u002Faggregations","1.docs\u002F3.building\u002F4.aggregations","i-lucide-sigma",{"title":125,"path":126,"stem":127,"icon":128},"Windowing","\u002Fdocs\u002Fbuilding\u002Fwindowing","1.docs\u002F3.building\u002F5.windowing","i-lucide-calendar-clock",{"title":130,"path":131,"stem":132,"icon":133},"Joins","\u002Fdocs\u002Fbuilding\u002Fjoins","1.docs\u002F3.building\u002F6.joins","i-lucide-git-merge",{"title":135,"path":136,"stem":137,"icon":138},"The Processor API","\u002Fdocs\u002Fbuilding\u002Fprocessor-api","1.docs\u002F3.building\u002F7.processor-api","i-lucide-cpu",{"title":140,"path":141,"stem":142,"icon":143},"Scheduled sources","\u002Fdocs\u002Fbuilding\u002Fscheduled-sources","1.docs\u002F3.building\u002F8.scheduled-sources","i-lucide-timer",{"title":145,"path":146,"stem":147,"icon":148},"Serdes and Avro","\u002Fdocs\u002Fbuilding\u002Fserdes","1.docs\u002F3.building\u002F9.serdes","i-lucide-binary",{"title":150,"path":151,"stem":152,"children":153,"icon":75},"Configuration","\u002Fdocs\u002Fconfiguration","1.docs\u002F4.configuration\u002F1.index",[154,156,161,166,171],{"title":155,"path":151,"stem":152,"icon":75},"How configuration works",{"title":157,"path":158,"stem":159,"icon":160},"Engine configuration (:core)","\u002Fdocs\u002Fconfiguration\u002Fcore-config","1.docs\u002F4.configuration\u002F2.core-config","i-lucide-settings-2",{"title":162,"path":163,"stem":164,"icon":165},"Runtime configuration (:runtime)","\u002Fdocs\u002Fconfiguration\u002Fruntime-config","1.docs\u002F4.configuration\u002F3.runtime-config","i-lucide-server-cog",{"title":167,"path":168,"stem":169,"icon":170},"Defaults, adaptivity, and presets","\u002Fdocs\u002Fconfiguration\u002Fdefaults-and-presets","1.docs\u002F4.configuration\u002F4.defaults-and-presets","i-lucide-gauge",{"title":172,"path":173,"stem":174,"icon":175},"Kafka client configuration","\u002Fdocs\u002Fconfiguration\u002Fkafka-client-config","1.docs\u002F4.configuration\u002F5.kafka-client-config","i-lucide-plug",{"title":177,"path":178,"stem":179,"children":180,"icon":183},"Running in Production","\u002Fdocs\u002Fruntime","1.docs\u002F5.runtime\u002F1.index",[181,184,189,194,199,204,209,214],{"title":182,"path":178,"stem":179,"icon":183},"The runtime","i-lucide-server",{"title":185,"path":186,"stem":187,"icon":188},"The REST API","\u002Fdocs\u002Fruntime\u002Frest-api","1.docs\u002F5.runtime\u002F2.rest-api","i-lucide-globe",{"title":190,"path":191,"stem":192,"icon":193},"Health checks","\u002Fdocs\u002Fruntime\u002Fhealth-checks","1.docs\u002F5.runtime\u002F3.health-checks","i-lucide-heart-pulse",{"title":195,"path":196,"stem":197,"icon":198},"Metrics","\u002Fdocs\u002Fruntime\u002Fmetrics","1.docs\u002F5.runtime\u002F4.metrics","i-lucide-activity",{"title":200,"path":201,"stem":202,"icon":203},"Pause and resume","\u002Fdocs\u002Fruntime\u002Fpause-unpause","1.docs\u002F5.runtime\u002F5.pause-unpause","i-lucide-pause",{"title":205,"path":206,"stem":207,"icon":208},"Plugins and lifecycle hooks","\u002Fdocs\u002Fruntime\u002Fplugins","1.docs\u002F5.runtime\u002F6.plugins","i-lucide-puzzle",{"title":210,"path":211,"stem":212,"icon":213},"Docker images","\u002Fdocs\u002Fruntime\u002Fdocker","1.docs\u002F5.runtime\u002F7.docker","i-lucide-container",{"title":215,"path":216,"stem":217,"icon":218},"GraalVM native image","\u002Fdocs\u002Fruntime\u002Fnative-image","1.docs\u002F5.runtime\u002F8.native-image","i-lucide-zap",{"title":220,"path":221,"stem":222,"children":223,"icon":226},"Deploying & Operating","\u002Fdocs\u002Foperating","1.docs\u002F6.operating\u002F1.index",[224,227,232,237,242,247,252],{"title":225,"path":221,"stem":222,"icon":226},"Deploying and operating","i-lucide-life-buoy",{"title":228,"path":229,"stem":230,"icon":231},"Running on Kubernetes","\u002Fdocs\u002Foperating\u002Fkubernetes","1.docs\u002F6.operating\u002F2.kubernetes","i-lucide-ship",{"title":233,"path":234,"stem":235,"icon":236},"High availability","\u002Fdocs\u002Foperating\u002Fhigh-availability","1.docs\u002F6.operating\u002F3.high-availability","i-lucide-copy",{"title":238,"path":239,"stem":240,"icon":241},"Liveness and readiness probes","\u002Fdocs\u002Foperating\u002Fprobes","1.docs\u002F6.operating\u002F4.probes","i-lucide-stethoscope",{"title":243,"path":244,"stem":245,"icon":246},"Observability","\u002Fdocs\u002Foperating\u002Fobservability","1.docs\u002F6.operating\u002F5.observability","i-lucide-telescope",{"title":248,"path":249,"stem":250,"icon":251},"Tuning under load","\u002Fdocs\u002Foperating\u002Ftuning","1.docs\u002F6.operating\u002F6.tuning","i-lucide-sliders",{"title":253,"path":254,"stem":255,"icon":256},"Production checklist","\u002Fdocs\u002Foperating\u002Fproduction-checklist","1.docs\u002F6.operating\u002F7.production-checklist","i-lucide-clipboard-check",{"title":258,"path":259,"stem":260,"children":261,"icon":85},"Migrating from Kafka Streams","\u002Fdocs\u002Fmigration","1.docs\u002F7.migration\u002F1.index",[262,263,268],{"title":258,"path":259,"stem":260,"icon":85},{"title":264,"path":265,"stem":266,"icon":267},"Migration without carrying state","\u002Fdocs\u002Fmigration\u002Fwithout-data-migration","1.docs\u002F7.migration\u002F2.without-data-migration","i-lucide-sparkles",{"title":269,"path":270,"stem":271,"icon":272},"Migration carrying state","\u002Fdocs\u002Fmigration\u002Fwith-data-migration","1.docs\u002F7.migration\u002F3.with-data-migration","i-lucide-database-backup",{"title":274,"path":275,"stem":276,"children":277,"icon":279},"Reference","\u002Fdocs\u002Freference","1.docs\u002F8.reference\u002F1.index",[278,280,285,290,295,300,305,309],{"title":274,"path":275,"stem":276,"icon":279},"i-lucide-list",{"title":281,"path":282,"stem":283,"icon":284},"Configuration reference","\u002Fdocs\u002Freference\u002Fconfiguration-reference","1.docs\u002F8.reference\u002F2.configuration-reference","i-lucide-table",{"title":286,"path":287,"stem":288,"icon":289},"REST API reference","\u002Fdocs\u002Freference\u002Frest-api-reference","1.docs\u002F8.reference\u002F3.rest-api-reference","i-lucide-network",{"title":291,"path":292,"stem":293,"icon":294},"Gradle plugin reference","\u002Fdocs\u002Freference\u002Fgradle-plugin-reference","1.docs\u002F8.reference\u002F4.gradle-plugin-reference","i-lucide-box",{"title":296,"path":297,"stem":298,"icon":299},"Maven reference","\u002Fdocs\u002Freference\u002Fmaven-reference","1.docs\u002F8.reference\u002F5.maven-reference","i-simple-icons-apachemaven",{"title":301,"path":302,"stem":303,"icon":304},"Kafka Streams compatibility matrix","\u002Fdocs\u002Freference\u002Fks-compatibility-matrix","1.docs\u002F8.reference\u002F6.ks-compatibility-matrix","i-lucide-table-2",{"title":306,"path":307,"stem":308,"icon":170},"Metrics reference","\u002Fdocs\u002Freference\u002Fmetrics-reference","1.docs\u002F8.reference\u002F7.metrics-reference",{"title":310,"path":311,"stem":312,"icon":313},"Glossary","\u002Fdocs\u002Freference\u002Fglossary","1.docs\u002F8.reference\u002F8.glossary","i-lucide-book-a",{"id":315,"title":281,"body":316,"description":3693,"extension":3694,"meta":3695,"navigation":3696,"pageType":3697,"path":282,"seo":3698,"stem":283,"__hash__":3699},"docs\u002F1.docs\u002F8.reference\u002F2.configuration-reference.md",{"type":317,"value":318,"toc":3666},"minimark",[319,337,353,369,374,423,436,440,443,655,661,665,670,742,746,752,926,932,936,945,1192,1206,1210,1215,1301,1305,1310,1379,1383,1386,1648,1652,1658,1738,1742,1748,1832,1836,1841,1915,1919,1924,2007,2011,2016,2082,2086,2092,2195,2199,2279,2283,2298,2375,2379,2384,2489,2503,2507,2516,2785,2789,2795,2901,2905,2910,3028,3032,3044,3205,3209,3214,3265,3268,3274,3329,3393,3397,3403,3632,3636,3662],[320,321,322,323,327,328,331,332,336],"p",{},"Every StoatFlow application is configured from a single ",[324,325,326],"code",{},"application.yaml"," (loaded by ",[324,329,330],{},"StoatFlowRuntime.fromConfig(...)","), plus environment-variable and system-property overrides. This page is a ",[333,334,335],"strong",{},"curated"," reference of the keys you are most likely to set, grouped by area, each with its type, default, and a one-line description.",[338,339,342],"callout",{"color":340,"icon":341},"info","i-lucide-file-json",[320,343,344,345,348,349,352],{},"The ",[333,346,347],{},"authoritative, always-current"," list of every key — including bound constraints, enums, and examples — is the JSON Schema shipped in the runtime artifact: ",[324,350,351],{},"runtime\u002Fsrc\u002Fmain\u002Fresources\u002Fschemas\u002Fstoatflow-config-schema.json",". IDEs (VS Code with the Red Hat YAML extension, IntelliJ) pick it up automatically for autocompletion and validation. This page omits a handful of advanced, fine-grained tuning knobs; the schema lists them all.",[320,354,355,356,359,360,364,365,368],{},"For the configuration model — the four override layers, env-var naming, and how ",[324,357,358],{},"stoatflow.*"," maps onto the core engine — see ",[361,362,363],"a",{"href":73},"Configuration model",". For Kafka client passthrough, see ",[361,366,367],{"href":173},"Kafka client config",".",[370,371,373],"h2",{"id":372},"how-to-read-this-page","How to read this page",[375,376,377,400,406,416],"ul",{},[378,379,380,383,384,387,388,391,392,395,396,399],"li",{},[333,381,382],{},"Key"," — the YAML path under ",[324,385,386],{},"stoatflow:"," or ",[324,389,390],{},"runtime:",". Nest by the dots (",[324,393,394],{},"commit-barrier.interval-ms"," lives under ",[324,397,398],{},"stoatflow.commit-barrier.interval-ms",").",[378,401,402,405],{},[333,403,404],{},"Type"," — YAML scalar type or enum value set.",[378,407,408,411,412,415],{},[333,409,410],{},"Default"," — the value used when the key is omitted. ",[324,413,414],{},"—"," means no default (the value must be set, or it is null\u002Funset).",[378,417,418,419,422],{},"Defaults shown as expressions (e.g. ",[324,420,421],{},"max(2, CPU cores)",") are resolved at startup from the host.",[338,424,427],{"color":425,"icon":426},"warning","i-lucide-shield",[320,428,429,430,433,434,368],{},"Secrets (the license key, Kafka SASL passwords, Schema Registry credentials) should be supplied via environment-variable interpolation (",[324,431,432],{},"${STOATFLOW_LICENSE_KEY}",") — never hard-coded in committed YAML. See ",[361,435,23],{"href":24},[370,437,439],{"id":438},"stoatflow-top-level","stoatflow — top level",[320,441,442],{},"The required and most common engine keys.",[444,445,446,462],"table",{},[447,448,449],"thead",{},[450,451,452,455,457,459],"tr",{},[453,454,382],"th",{},[453,456,404],{},[453,458,410],{},[453,460,461],{},"Description",[463,464,465,482,499,523,538,552,566,580,594,611,629],"tbody",{},[450,466,467,473,476,479],{},[468,469,470],"td",{},[324,471,472],{},"application-id",[468,474,475],{},"string",[468,477,478],{},"— (required)",[468,480,481],{},"Unique application identifier; used for the consumer group and transactional id.",[450,483,484,489,491,496],{},[468,485,486],{},[324,487,488],{},"bootstrap-servers",[468,490,475],{},[468,492,493],{},[324,494,495],{},"localhost:9092",[468,497,498],{},"Kafka bootstrap servers (comma-separated).",[450,500,501,506,516,520],{},[468,502,503],{},[324,504,505],{},"processing-guarantee",[468,507,508,509,512,513],{},"enum ",[324,510,511],{},"EXACTLY_ONCE"," | ",[324,514,515],{},"AT_LEAST_ONCE",[468,517,518],{},[324,519,511],{},[468,521,522],{},"Commit protocol. Exactly-once uses Kafka transactions; at-least-once uses non-transactional commit (lower latency, duplicates possible on crash recovery).",[450,524,525,530,533,535],{},[468,526,527],{},[324,528,529],{},"default-key-serde",[468,531,532],{},"string (FQCN)",[468,534,414],{},[468,536,537],{},"Fully qualified class name of the default key Serde when none is given explicitly.",[450,539,540,545,547,549],{},[468,541,542],{},[324,543,544],{},"default-value-serde",[468,546,532],{},[468,548,414],{},[468,550,551],{},"Fully qualified class name of the default value Serde when none is given explicitly.",[450,553,554,559,561,563],{},[468,555,556],{},[324,557,558],{},"schema-registry-url",[468,560,475],{},[468,562,414],{},[468,564,565],{},"Confluent Schema Registry URL. When set, propagated to serdes and enables the Schema Registry health check.",[450,567,568,573,575,577],{},[468,569,570],{},[324,571,572],{},"deserialization-exception-handler",[468,574,532],{},[468,576,414],{},[468,578,579],{},"Handler class deciding CONTINUE vs FAIL on deserialization errors.",[450,581,582,587,589,591],{},[468,583,584],{},[324,585,586],{},"production-exception-handler",[468,588,532],{},[468,590,414],{},[468,592,593],{},"Handler class for serialization and send errors.",[450,595,596,601,603,605],{},[468,597,598],{},[324,599,600],{},"processing-exception-handler",[468,602,532],{},[468,604,414],{},[468,606,607,608,368],{},"Handler class for exceptions thrown by ",[324,609,610],{},"process()",[450,612,613,618,620,622],{},[468,614,615],{},[324,616,617],{},"rocks-db-config-setter",[468,619,532],{},[468,621,414],{},[468,623,624,625,628],{},"Custom ",[324,626,627],{},"RocksDBConfigSetter"," for advanced per-store RocksDB tuning.",[450,630,631,636,643,648],{},[468,632,633],{},[324,634,635],{},"application-server",[468,637,638,639,642],{},"string (",[324,640,641],{},"host:port",")",[468,644,645],{},[324,646,647],{},"localhost:\u003Chttp.port>",[468,649,650,651,654],{},"Advertised host:port for interactive-query metadata (KS ",[324,652,653],{},"application.server","). Single instance: identifies this instance as the active host for all stores.",[320,656,657,658,660],{},"See ",[361,659,95],{"href":96}," for the built-in exception handler classes.",[370,662,664],{"id":663},"stoatflowlanes","stoatflow.lanes",[320,666,667,668,368],{},"Key-affinity lane parallelism. See ",[361,669,57],{"href":58},[444,671,672,684],{},[447,673,674],{},[450,675,676,678,680,682],{},[453,677,382],{},[453,679,404],{},[453,681,410],{},[453,683,461],{},[463,685,686,703,720],{},[450,687,688,693,696,700],{},[468,689,690],{},[324,691,692],{},"lanes.count",[468,694,695],{},"integer",[468,697,698],{},[324,699,421],{},[468,701,702],{},"Number of key-affinity lanes (parallel processing units).",[450,704,705,710,712,717],{},[468,706,707],{},[324,708,709],{},"lanes.queue-capacity",[468,711,695],{},[468,713,714],{},[324,715,716],{},"300",[468,718,719],{},"Capacity of each lane's queue; controls backpressure.",[450,721,722,727,735,739],{},[468,723,724],{},[324,725,726],{},"lanes.thread-type",[468,728,508,729,512,732],{},[324,730,731],{},"VIRTUAL",[324,733,734],{},"PLATFORM",[468,736,737],{},[324,738,731],{},[468,740,741],{},"Lane thread type. Virtual (Project Loom) by default; platform threads available for the JNI RocksDB backend.",[370,743,745],{"id":744},"stoatflowcommit-barrier","stoatflow.commit-barrier",[320,747,748,749,368],{},"Commit-barrier cadence and the bounds the engine self-tunes within. The interval between barriers is adaptive at runtime; you set the seed and the floor\u002Fceiling. See ",[361,750,751],{"href":53},"Exactly-once",[444,753,754,766],{},[447,755,756],{},[450,757,758,760,762,764],{},[453,759,382],{},[453,761,404],{},[453,763,410],{},[453,765,461],{},[463,767,768,784,801,818,850,868,883,904],{},[450,769,770,774,776,781],{},[468,771,772],{},[324,773,394],{},[468,775,695],{},[468,777,778],{},[324,779,780],{},"500",[468,782,783],{},"Seed interval between commit barriers; the initial value before adaptive scheduling takes over.",[450,785,786,791,793,798],{},[468,787,788],{},[324,789,790],{},"commit-barrier.min-interval-ms",[468,792,695],{},[468,794,795],{},[324,796,797],{},"150",[468,799,800],{},"Lower bound on the barrier-to-barrier interval.",[450,802,803,808,810,815],{},[468,804,805],{},[324,806,807],{},"commit-barrier.max-interval-ms",[468,809,695],{},[468,811,812],{},[324,813,814],{},"5000",[468,816,817],{},"Upper bound on the barrier-to-barrier interval.",[450,819,820,825,827,832],{},[468,821,822],{},[324,823,824],{},"commit-barrier.timeout-ms",[468,826,695],{},[468,828,829],{},[324,830,831],{},"60000",[468,833,834,835,838,839,842,843,846,847,368],{},"Timeout for barrier completion. Bounds the commit critical path and cascades to the producer's ",[324,836,837],{},"transaction.timeout.ms",", ",[324,840,841],{},"max.block.ms",", and ",[324,844,845],{},"delivery.timeout.ms",". Must be greater than ",[324,848,849],{},"interval-ms",[450,851,852,857,860,865],{},[468,853,854],{},[324,855,856],{},"commit-barrier.dedicated-commit-thread",[468,858,859],{},"boolean",[468,861,862],{},[324,863,864],{},"true",[468,866,867],{},"Run commits on a dedicated thread so a lane is not stalled during the Kafka transaction commit and state flush.",[450,869,870,875,877,880],{},[468,871,872],{},[324,873,874],{},"commit-barrier.max-epoch-records",[468,876,695],{},[468,878,879],{},"— (no cap)",[468,881,882],{},"Optional hard upper bound on records committed per epoch. Unset means the engine sizes epochs adaptively within the interval bounds above.",[450,884,885,890,892,897],{},[468,886,887],{},[324,888,889],{},"commit-barrier.max-engine-restarts",[468,891,695],{},[468,893,894],{},[324,895,896],{},"5",[468,898,899,900,903],{},"Max fault-triggered in-place engine restarts within the rolling window below before the instance escalates to a terminal shutdown. ",[324,901,902],{},"0"," disables in-place restart recovery.",[450,905,906,911,913,919],{},[468,907,908],{},[324,909,910],{},"commit-barrier.engine-restart-window-ms",[468,912,695],{},[468,914,915,918],{},[324,916,917],{},"300000"," (5 min)",[468,920,921,922,925],{},"Rolling window over which fault-triggered engine restarts are counted. Bounds a recurring fault to ",[324,923,924],{},"max-engine-restarts"," restarts per window instead of looping.",[338,927,929],{"color":340,"icon":928},"i-lucide-info",[320,930,931],{},"The schema exposes additional fine-grained commit-barrier tuning factors (smoothing and growth parameters for the adaptive epoch sizer). These rarely need changing — leave them at their defaults unless directed by support. They are listed in full in the JSON schema.",[370,933,935],{"id":934},"stoatflowstate","stoatflow.state",[320,937,938,939,941,942,368],{},"State-store storage, caching, and restoration. See ",[361,940,100],{"href":101}," and ",[361,943,944],{"href":270},"Migration (with data)",[444,946,947,959],{},[447,948,949],{},[450,950,951,953,955,957],{},[453,952,382],{},[453,954,404],{},[453,956,410],{},[453,958,461],{},[463,960,961,978,997,1013,1030,1047,1064,1080,1097,1122,1148,1173],{},[450,962,963,968,970,975],{},[468,964,965],{},[324,966,967],{},"state.dir",[468,969,475],{},[468,971,972],{},[324,973,974],{},"${java.io.tmpdir}\u002Fstoatflow",[468,976,977],{},"Directory for state-store data. Put it on fast local storage (SSD); in Kubernetes, on a persistent volume.",[450,979,980,985,988,994],{},[468,981,982],{},[324,983,984],{},"state.uncommitted-max-bytes",[468,986,987],{},"integer (bytes)",[468,989,990,993],{},[324,991,992],{},"268435456"," (256 MiB)",[468,995,996],{},"Global cap on uncommitted state bytes across all stores; exceeding it triggers an early commit barrier.",[450,998,999,1004,1006,1010],{},[468,1000,1001],{},[324,1002,1003],{},"state.restoration-enabled",[468,1005,859],{},[468,1007,1008],{},[324,1009,864],{},[468,1011,1012],{},"Restore state from changelog topics on startup when local state is missing.",[450,1014,1015,1020,1022,1027],{},[468,1016,1017],{},[324,1018,1019],{},"state.restoration-pool-size",[468,1021,695],{},[468,1023,1024],{},[324,1025,1026],{},"CPU cores × 2",[468,1028,1029],{},"Restoration worker pool size; each worker uses its own consumer for parallel fetch.",[450,1031,1032,1037,1039,1044],{},[468,1033,1034],{},[324,1035,1036],{},"state.restoration-batch-size",[468,1038,695],{},[468,1040,1041],{},[324,1042,1043],{},"20000",[468,1045,1046],{},"Records per RocksDB write batch during restoration.",[450,1048,1049,1054,1056,1061],{},[468,1050,1051],{},[324,1052,1053],{},"state.sst-restoration-enabled",[468,1055,859],{},[468,1057,1058],{},[324,1059,1060],{},"false",[468,1062,1063],{},"Opt-in SST-file ingestion for full cold-start KV restoration (bypasses memtable\u002FL0).",[450,1065,1066,1071,1073,1077],{},[468,1067,1068],{},[324,1069,1070],{},"state.parallel-store-commits",[468,1072,859],{},[468,1074,1075],{},[324,1076,864],{},[468,1078,1079],{},"Commit multiple stores in parallel at barrier time.",[450,1081,1082,1087,1089,1094],{},[468,1083,1084],{},[324,1085,1086],{},"state.parallel-store-commit-threads",[468,1088,695],{},[468,1090,1091],{},[324,1092,1093],{},"CPU cores",[468,1095,1096],{},"Max platform threads for parallel store commits (used only with 2+ transactional stores).",[450,1098,1099,1104,1106,1112],{},[468,1100,1101],{},[324,1102,1103],{},"state.cleanup-delay-ms",[468,1105,695],{},[468,1107,1108,1111],{},[324,1109,1110],{},"600000"," (10 min)",[468,1113,1114,1115,1117,1118,1121],{},"Delay before deleting RocksDB directories for stores no longer in the topology. ",[324,1116,902],{}," = immediate, ",[324,1119,1120],{},"-1"," = never delete (detect + warn only).",[450,1123,1124,1129,1132,1137],{},[468,1125,1126],{},[324,1127,1128],{},"state.cleanup-dir-max-age-ms",[468,1130,1131],{},"integer (ms)",[468,1133,1134,1136],{},[324,1135,1120],{}," (disabled)",[468,1138,1139,1140,1143,1144,1147],{},"Age threshold for purging local per-store state directories untouched for at least this long at startup (KIP-1259); they are rebuilt from the changelog. Set ≥ the changelog's ",[324,1141,1142],{},"delete.retention.ms",". Distinct from ",[324,1145,1146],{},"cleanup-delay-ms"," (orphaned-store cleanup).",[450,1149,1150,1155,1157,1162],{},[468,1151,1152],{},[324,1153,1154],{},"state.segment-checkpoint-records",[468,1156,695],{},[468,1158,1159],{},[324,1160,1161],{},"100000",[468,1163,1164,1165,1168,1169,1172],{},"Periodic checkpoint cadence for segmented window\u002Fsession stores, by record count. These stores run with the WAL off and become durable only on ",[324,1166,1167],{},"close()",", so a checkpoint (flush dirty segments, then the offsets) bounds how much of the changelog an ungraceful restart — or a hot-standby promotion — has to re-apply. Whichever-first with ",[324,1170,1171],{},"state.segment-checkpoint-ms",". Deliberately coarse to limit SST\u002Fcompaction churn.",[450,1174,1175,1179,1181,1187],{},[468,1176,1177],{},[324,1178,1171],{},[468,1180,1131],{},[468,1182,1183,1186],{},[324,1184,1185],{},"30000"," (30 s)",[468,1188,1189,1190,368],{},"The same checkpoint cadence by wall-clock time; whichever-first with ",[324,1191,1154],{},[320,1193,1194,1195,838,1198,1201,1202,1205],{},"Advanced SST knobs (",[324,1196,1197],{},"state.sst-buffer-max-bytes",[324,1199,1200],{},"state.sst-flush-interval-files",") and ",[324,1203,1204],{},"state.flush-min-entries-per-chunk"," are in the schema.",[370,1207,1209],{"id":1208},"stoatflowchangelog","stoatflow.changelog",[320,1211,1212,1213,368],{},"Changelog topics that back state stores. See ",[361,1214,100],{"href":101},[444,1216,1217,1229],{},[447,1218,1219],{},[450,1220,1221,1223,1225,1227],{},[453,1222,382],{},[453,1224,404],{},[453,1226,410],{},[453,1228,461],{},[463,1230,1231,1247,1267,1284],{},[450,1232,1233,1238,1240,1244],{},[468,1234,1235],{},[324,1236,1237],{},"changelog.enabled",[468,1239,859],{},[468,1241,1242],{},[324,1243,864],{},[468,1245,1246],{},"Write state mutations to Kafka changelog topics within the transaction.",[450,1248,1249,1254,1256,1260],{},[468,1250,1251],{},[324,1252,1253],{},"changelog.create-topics-if-not-exist",[468,1255,859],{},[468,1257,1258],{},[324,1259,864],{},[468,1261,1262,1263,1266],{},"Auto-create changelog topics (with ",[324,1264,1265],{},"cleanup.policy=compact",") when missing.",[450,1268,1269,1274,1276,1281],{},[468,1270,1271],{},[324,1272,1273],{},"changelog.replication-factor",[468,1275,695],{},[468,1277,1278,1280],{},[324,1279,1120],{}," (broker default)",[468,1282,1283],{},"Replication factor for auto-created changelog topics.",[450,1285,1286,1291,1293,1298],{},[468,1287,1288],{},[324,1289,1290],{},"changelog.num-partitions",[468,1292,695],{},[468,1294,1295],{},[324,1296,1297],{},"1",[468,1299,1300],{},"Partition count for auto-created changelog topics (single instance: 1 is usually sufficient).",[370,1302,1304],{"id":1303},"stoatflowwatermark","stoatflow.watermark",[320,1306,1307,1308,368],{},"Event-time watermark generation. See ",[361,1309,67],{"href":68},[444,1311,1312,1324],{},[447,1313,1314],{},[450,1315,1316,1318,1320,1322],{},[453,1317,382],{},[453,1319,404],{},[453,1321,410],{},[453,1323,461],{},[463,1325,1326,1343,1362],{},[450,1327,1328,1333,1335,1340],{},[468,1329,1330],{},[324,1331,1332],{},"watermark.max-out-of-orderness-ms",[468,1334,695],{},[468,1336,1337],{},[324,1338,1339],{},"10000",[468,1341,1342],{},"Allowed out-of-orderness before an event is considered late.",[450,1344,1345,1350,1352,1356],{},[468,1346,1347],{},[324,1348,1349],{},"watermark.idleness-timeout-ms",[468,1351,695],{},[468,1353,1354,918],{},[324,1355,917],{},[468,1357,1358,1359,1361],{},"Partitions idle for this long are excluded from the global watermark. ",[324,1360,902],{}," disables.",[450,1363,1364,1369,1371,1376],{},[468,1365,1366],{},[324,1367,1368],{},"watermark.auto-interval-ms",[468,1370,695],{},[468,1372,1373],{},[324,1374,1375],{},"200",[468,1377,1378],{},"Periodic watermark emission interval.",[370,1380,1382],{"id":1381},"stoatflowprocessing","stoatflow.processing",[320,1384,1385],{},"Processing behavior. The keys below are the public, commonly-set ones; the schema additionally exposes a number of low-level dispatch\u002Fyield tuning knobs that should normally be left at defaults.",[444,1387,1388,1400],{},[447,1389,1390],{},[450,1391,1392,1394,1396,1398],{},[453,1393,382],{},[453,1395,404],{},[453,1397,410],{},[453,1399,461],{},[463,1401,1402,1431,1457,1477,1498,1535,1568,1595,1611,1628],{},[450,1403,1404,1409,1411,1415],{},[468,1405,1406],{},[324,1407,1408],{},"processing.mdc-enabled",[468,1410,859],{},[468,1412,1413],{},[324,1414,1060],{},[468,1416,1417,1418,838,1421,838,1424,838,1427,1430],{},"Populate logging MDC keys (",[324,1419,1420],{},"laneId",[324,1422,1423],{},"sourceTopic",[324,1425,1426],{},"sourcePartition",[324,1428,1429],{},"sourceOffset",") during processing.",[450,1432,1433,1438,1440,1444],{},[468,1434,1435],{},[324,1436,1437],{},"processing.max-task-idle-ms",[468,1439,695],{},[468,1441,1442],{},[324,1443,902],{},[468,1445,1446,1447,1449,1450,1452,1453,1456],{},"Wait time for empty partition buffers to preserve cross-partition timestamp order. ",[324,1448,1120],{}," = process immediately, ",[324,1451,902],{}," = wait only while broker has lag, ",[324,1454,1455],{},">0"," = extra wait.",[450,1458,1459,1464,1466,1471],{},[468,1460,1461],{},[324,1462,1463],{},"processing.buffered-records-per-partition",[468,1465,695],{},[468,1467,1468],{},[324,1469,1470],{},"2000",[468,1472,1473,1474,399],{},"Max records buffered per partition before pausing consumption (must be ≥ ",[324,1475,1476],{},"max.poll.records",[450,1478,1479,1484,1486,1491],{},[468,1480,1481],{},[324,1482,1483],{},"processing.consumer-poll-timeout-ms",[468,1485,695],{},[468,1487,1488],{},[324,1489,1490],{},"20",[468,1492,1493,1494,1497],{},"Consumer ",[324,1495,1496],{},"poll()"," fallback timeout.",[450,1499,1500,1505,1516,1520],{},[468,1501,1502],{},[324,1503,1504],{},"processing.dispatch-mode",[468,1506,508,1507,512,1510,512,1513],{},[324,1508,1509],{},"AUTO",[324,1511,1512],{},"DIRECT",[324,1514,1515],{},"LANE",[468,1517,1518],{},[324,1519,1515],{},[468,1521,1522,1523,1525,1526,1528,1529,1531,1532,1534],{},"Record dispatch mode. ",[324,1524,1515],{}," routes via key-affinity lanes; ",[324,1527,1509],{}," may pick ",[324,1530,1512],{}," for simple stateless topologies; ",[324,1533,1512],{}," is experimental.",[450,1536,1537,1542,1552,1556],{},[468,1538,1539],{},[324,1540,1541],{},"processing.parallel-deser-mode",[468,1543,508,1544,512,1546,512,1549],{},[324,1545,1509],{},[324,1547,1548],{},"ON",[324,1550,1551],{},"OFF",[468,1553,1554],{},[324,1555,1509],{},[468,1557,1558,1559,1561,1562,1564,1565,1567],{},"Parallel deserialization. ",[324,1560,1509],{}," enables it when per-record cost is high enough; ",[324,1563,1548],{},"\u002F",[324,1566,1551],{}," force it.",[450,1569,1570,1575,1585,1589],{},[468,1571,1572],{},[324,1573,1574],{},"processing.timestamp-coordination-mode",[468,1576,508,1577,512,1579,512,1582],{},[324,1578,1509],{},[324,1580,1581],{},"ENABLED",[324,1583,1584],{},"DISABLED",[468,1586,1587],{},[324,1588,1509],{},[468,1590,1591,1592,1594],{},"Event-time coordination. ",[324,1593,1509],{}," derives from topology traits; override only for debugging.",[450,1596,1597,1602,1604,1608],{},[468,1598,1599],{},[324,1600,1601],{},"processing.timestamp-ordered-dispatch",[468,1603,859],{},[468,1605,1606],{},[324,1607,864],{},[468,1609,1610],{},"Dispatch records in global timestamp order across partitions.",[450,1612,1613,1618,1620,1625],{},[468,1614,1615],{},[324,1616,1617],{},"processing.wall-clock-advance-interval-ms",[468,1619,695],{},[468,1621,1622],{},[324,1623,1624],{},"10",[468,1626,1627],{},"Cadence for wall-clock punctuators and scheduled sources.",[450,1629,1630,1635,1637,1641],{},[468,1631,1632],{},[324,1633,1634],{},"processing.state-transition-history-size",[468,1636,695],{},[468,1638,1639],{},[324,1640,1490],{},[468,1642,1643,1644,1647],{},"Number of past app-state transitions retained for the ",[324,1645,1646],{},"\u002Fstate"," endpoint.",[370,1649,1651],{"id":1650},"stoatflowvalidation","stoatflow.validation",[320,1653,1654,1655,368],{},"Startup and single-instance safety checks. See ",[361,1656,1657],{"href":83},"How StoatFlow differs from KS",[444,1659,1660,1672],{},[447,1661,1662],{},[450,1663,1664,1666,1668,1670],{},[453,1665,382],{},[453,1667,404],{},[453,1669,410],{},[453,1671,461],{},[463,1673,1674,1690,1706,1722],{},[450,1675,1676,1681,1683,1687],{},[468,1677,1678],{},[324,1679,1680],{},"validation.ensure-explicit-naming",[468,1682,859],{},[468,1684,1685],{},[324,1686,864],{},[468,1688,1689],{},"Fail startup if any topology operation uses an auto-generated name (KIP-1111).",[450,1691,1692,1697,1699,1703],{},[468,1693,1694],{},[324,1695,1696],{},"validation.validate-complete-assignment",[468,1698,859],{},[468,1700,1701],{},[324,1702,864],{},[468,1704,1705],{},"Wait for and verify that all source-topic partitions are assigned at startup.",[450,1707,1708,1713,1715,1719],{},[468,1709,1710],{},[324,1711,1712],{},"validation.partition-assignment-timeout-ms",[468,1714,695],{},[468,1716,1717],{},[324,1718,831],{},[468,1720,1721],{},"Timeout to wait for complete partition assignment after subscribe.",[450,1723,1724,1729,1731,1735],{},[468,1725,1726],{},[324,1727,1728],{},"validation.pre-flight-consumer-group-check",[468,1730,859],{},[468,1732,1733],{},[324,1734,1060],{},[468,1736,1737],{},"Check for active consumer-group members before starting (prevents accidental duplicate instances).",[370,1739,1741],{"id":1740},"stoatflowshutdown","stoatflow.shutdown",[320,1743,1744,1745,368],{},"Graceful shutdown behavior. See ",[361,1746,1747],{"href":239},"Probes",[444,1749,1750,1762],{},[447,1751,1752],{},[450,1753,1754,1756,1758,1760],{},[453,1755,382],{},[453,1757,404],{},[453,1759,410],{},[453,1761,461],{},[463,1763,1764,1781,1797,1813],{},[450,1765,1766,1771,1773,1778],{},[468,1767,1768],{},[324,1769,1770],{},"shutdown.timeout-ms",[468,1772,695],{},[468,1774,1775],{},[324,1776,1777],{},"25000",[468,1779,1780],{},"Timeout for graceful shutdown; lets in-flight barriers complete.",[450,1782,1783,1788,1790,1794],{},[468,1784,1785],{},[324,1786,1787],{},"shutdown.leave-group-on-close",[468,1789,859],{},[468,1791,1792],{},[324,1793,1060],{},[468,1795,1796],{},"Whether the consumer sends a LeaveGroup on close. Disabled (with static membership) gives faster restart reassignment.",[450,1798,1799,1804,1806,1810],{},[468,1800,1801],{},[324,1802,1803],{},"shutdown.hard-exit-on-shutdown-hang",[468,1805,859],{},[468,1807,1808],{},[324,1809,864],{},[468,1811,1812],{},"If graceful shutdown stalls past its budget, force a clean process exit so Kubernetes restarts the pod.",[450,1814,1815,1820,1822,1827],{},[468,1816,1817],{},[324,1818,1819],{},"shutdown.hard-exit-budget-ms",[468,1821,695],{},[468,1823,1824],{},[324,1825,1826],{},"2 × shutdown.timeout-ms",[468,1828,1829,1830,368],{},"Budget before the hard-exit fallback fires. Must be ≥ ",[324,1831,1770],{},[370,1833,1835],{"id":1834},"stoatflowcommit-stall","stoatflow.commit-stall",[320,1837,1838,1839,368],{},"Commit-pipeline freeze detection. These bounds also drive the liveness probe's stall check. See ",[361,1840,1747],{"href":239},[444,1842,1843,1855],{},[447,1844,1845],{},[450,1846,1847,1849,1851,1853],{},[453,1848,382],{},[453,1850,404],{},[453,1852,410],{},[453,1854,461],{},[463,1856,1857,1883,1899],{},[450,1858,1859,1864,1866,1871],{},[468,1860,1861],{},[324,1862,1863],{},"commit-stall.threshold-ms",[468,1865,695],{},[468,1867,1868],{},[324,1869,1870],{},"45000",[468,1872,1873,1874,1877,1878,1880,1881,1361],{},"If commit work stalls longer than this, a thread dump is captured, graceful shutdown begins, and ",[324,1875,1876],{},"\u002Fhealth\u002Flive"," returns DOWN. Must be less than ",[324,1879,824],{},". ",[324,1882,902],{},[450,1884,1885,1890,1892,1896],{},[468,1886,1887],{},[324,1888,1889],{},"commit-stall.poll-interval-ms",[468,1891,695],{},[468,1893,1894],{},[324,1895,814],{},[468,1897,1898],{},"How often the stall check runs.",[450,1900,1901,1906,1908,1912],{},[468,1902,1903],{},[324,1904,1905],{},"commit-stall.dump-enabled",[468,1907,859],{},[468,1909,1910],{},[324,1911,864],{},[468,1913,1914],{},"Emit a thread dump to logs when a stall is detected.",[370,1916,1918],{"id":1917},"stoatflowrocks-db","stoatflow.rocks-db",[320,1920,1921,1922,368],{},"RocksDB preset and backend. See ",[361,1923,100],{"href":101},[444,1925,1926,1938],{},[447,1927,1928],{},[450,1929,1930,1932,1934,1936],{},[453,1931,382],{},[453,1933,404],{},[453,1935,410],{},[453,1937,461],{},[463,1939,1940,1974],{},[450,1941,1942,1947,1958,1962],{},[468,1943,1944],{},[324,1945,1946],{},"rocks-db.preset",[468,1948,508,1949,512,1952,512,1955],{},[324,1950,1951],{},"DEFAULT",[324,1953,1954],{},"LOW_MEMORY",[324,1956,1957],{},"HIGH_PERFORMANCE",[468,1959,1960],{},[324,1961,1951],{},[468,1963,1964,1965,1967,1968,1970,1971,1973],{},"Memory preset. ",[324,1966,1951],{}," ≈ 256 MB, ",[324,1969,1954],{}," ≈ 64 MB, ",[324,1972,1957],{}," ≈ 1 GB.",[450,1975,1976,1981,1991,1995],{},[468,1977,1978],{},[324,1979,1980],{},"rocks-db.backend",[468,1982,508,1983,512,1985,512,1988],{},[324,1984,1509],{},[324,1986,1987],{},"FFM",[324,1989,1990],{},"JNI",[468,1992,1993],{},[324,1994,1509],{},[468,1996,1997,1998,2000,2001,2003,2004,2006],{},"RocksDB binding. ",[324,1999,1509],{}," picks the faster path per runtime — FFM on the JVM, JNI under a GraalVM native image. ",[324,2002,1987],{}," has lower per-call overhead on HotSpot; ",[324,2005,1990],{}," uses the rocksdbjni bindings.",[370,2008,2010],{"id":2009},"stoatflowcaching","stoatflow.caching",[320,2012,2013,2014,368],{},"Downstream emission suppression for KTables. See ",[361,2015,120],{"href":121},[444,2017,2018,2030],{},[447,2019,2020],{},[450,2021,2022,2024,2026,2028],{},[453,2023,382],{},[453,2025,404],{},[453,2027,410],{},[453,2029,461],{},[463,2031,2032,2048,2066],{},[450,2033,2034,2039,2041,2045],{},[468,2035,2036],{},[324,2037,2038],{},"caching.emission-suppression-enabled",[468,2040,859],{},[468,2042,2043],{},[324,2044,864],{},[468,2046,2047],{},"Compact multiple writes to the same key within a barrier interval, emitting only the final value.",[450,2049,2050,2055,2057,2063],{},[468,2051,2052],{},[324,2053,2054],{},"caching.max-entries",[468,2056,695],{},[468,2058,2059,2062],{},[324,2060,2061],{},"2147483647"," (unbounded)",[468,2064,2065],{},"Per-store cached-entry cap before an early barrier. Unbounded by default so it never bites high-cardinality workloads — bytes are the default lever; set a finite value for a count-based bound.",[450,2067,2068,2073,2075,2079],{},[468,2069,2070],{},[324,2071,2072],{},"caching.max-estimated-bytes",[468,2074,987],{},[468,2076,2077,993],{},[324,2078,992],{},[468,2080,2081],{},"Max estimated cached bytes per store before an early barrier.",[370,2083,2085],{"id":2084},"stoatflowtimer-backend","stoatflow.timer-backend",[320,2087,2088,2089,368],{},"Timer storage backend for the Processor API. See ",[361,2090,2091],{"href":136},"Processor API",[444,2093,2094,2106],{},[447,2095,2096],{},[450,2097,2098,2100,2102,2104],{},[453,2099,382],{},[453,2101,404],{},[453,2103,410],{},[453,2105,461],{},[463,2107,2108,2141,2157,2176],{},[450,2109,2110,2115,2126,2130],{},[468,2111,2112],{},[324,2113,2114],{},"timer-backend.type",[468,2116,508,2117,512,2120,512,2123],{},[324,2118,2119],{},"HEAP",[324,2121,2122],{},"PERSISTENT",[324,2124,2125],{},"HYBRID",[468,2127,2128],{},[324,2129,2125],{},[468,2131,2132,2134,2135,2137,2138,2140],{},[324,2133,2119],{}," = in-memory (fast, unbounded), ",[324,2136,2122],{}," = RocksDB only (memory-bounded), ",[324,2139,2125],{}," = heap cache + RocksDB.",[450,2142,2143,2148,2150,2154],{},[468,2144,2145],{},[324,2146,2147],{},"timer-backend.changelog-enabled",[468,2149,859],{},[468,2151,2152],{},[324,2153,864],{},[468,2155,2156],{},"Log timer mutations to a Kafka changelog for durability (applies to all types).",[450,2158,2159,2164,2166,2170],{},[468,2160,2161],{},[324,2162,2163],{},"timer-backend.cache-horizon-ms",[468,2165,695],{},[468,2167,2168],{},[324,2169,831],{},[468,2171,2172,2173,368],{},"HYBRID only: how far ahead timers are cached in the heap. Must be > ",[324,2174,2175],{},"load-interval-ms",[450,2177,2178,2183,2185,2189],{},[468,2179,2180],{},[324,2181,2182],{},"timer-backend.load-interval-ms",[468,2184,695],{},[468,2186,2187],{},[324,2188,1339],{},[468,2190,2191,2192,368],{},"HYBRID only: how often the loader pulls upcoming timers from RocksDB. Must be \u003C ",[324,2193,2194],{},"cache-horizon-ms",[370,2196,2198],{"id":2197},"stoatflowktable-stoatflowfk-join-stoatflowdsl","stoatflow.ktable \u002F stoatflow.fk-join \u002F stoatflow.dsl",[444,2200,2201,2213],{},[447,2202,2203],{},[450,2204,2205,2207,2209,2211],{},[453,2206,382],{},[453,2208,404],{},[453,2210,410],{},[453,2212,461],{},[463,2214,2215,2231,2247],{},[450,2216,2217,2222,2224,2228],{},[468,2218,2219],{},[324,2220,2221],{},"ktable.auto-reuse-source-topics",[468,2223,859],{},[468,2225,2226],{},[324,2227,864],{},[468,2229,2230],{},"Reuse compacted KTable source topics for restoration instead of separate changelog topics.",[450,2232,2233,2238,2240,2244],{},[468,2234,2235],{},[324,2236,2237],{},"fk-join.use-reverse-index-cache",[468,2239,859],{},[468,2241,2242],{},[324,2243,864],{},[468,2245,2246],{},"Maintain an in-memory reverse index for O(1) FK-join right-side lookups (disable to save heap on very large FK tables).",[450,2248,2249,2254,2261,2265],{},[468,2250,2251],{},[324,2252,2253],{},"dsl.store-format",[468,2255,508,2256,512,2258],{},[324,2257,1951],{},[324,2259,2260],{},"HEADERS",[468,2262,2263],{},[324,2264,1951],{},[468,2266,2267,2268,2270,2271,2274,2275,2278],{},"Global default on-disk format for DSL-materialized stores (KIP-1285). ",[324,2269,2260],{}," makes DSL aggregations persist record headers (KIP-1271). Per-store ",[324,2272,2273],{},"Materialized.withRecordHeaders()"," \u002F ",[324,2276,2277],{},"withoutRecordHeaders()"," always wins.",[370,2280,2282],{"id":2281},"stoatflowkafka","stoatflow.kafka",[320,2284,2285,2286,838,2289,838,2292,2295,2296,368],{},"Kafka client passthrough. Values under these maps are merged on top of StoatFlow's framework defaults; forced overrides (e.g. ",[324,2287,2288],{},"bootstrap.servers",[324,2290,2291],{},"group.id",[324,2293,2294],{},"enable.auto.commit=false",") cannot be changed. Full resolution order in ",[361,2297,367],{"href":173},[444,2299,2300,2312],{},[447,2301,2302],{},[450,2303,2304,2306,2308,2310],{},[453,2305,382],{},[453,2307,404],{},[453,2309,410],{},[453,2311,461],{},[463,2313,2314,2337,2359],{},[450,2315,2316,2321,2324,2329],{},[468,2317,2318],{},[324,2319,2320],{},"kafka.consumer",[468,2322,2323],{},"map\u003Cstring,string>",[468,2325,2326],{},[324,2327,2328],{},"{}",[468,2330,2331,2332,838,2335,399],{},"Additional consumer properties (e.g. ",[324,2333,2334],{},"auto.offset.reset",[324,2336,1476],{},[450,2338,2339,2344,2346,2350],{},[468,2340,2341],{},[324,2342,2343],{},"kafka.producer",[468,2345,2323],{},[468,2347,2348],{},[324,2349,2328],{},[468,2351,2352,2353,838,2356,399],{},"Additional producer properties (e.g. ",[324,2354,2355],{},"compression.type",[324,2357,2358],{},"linger.ms",[450,2360,2361,2366,2368,2372],{},[468,2362,2363],{},[324,2364,2365],{},"kafka.restoration-consumer",[468,2367,2323],{},[468,2369,2370],{},[324,2371,2328],{},[468,2373,2374],{},"Overrides for the restoration consumer only.",[370,2376,2378],{"id":2377},"stoatflowlicense","stoatflow.license",[320,2380,2381,2382,368],{},"Runtime license. See ",[361,2383,23],{"href":24},[444,2385,2386,2398],{},[447,2387,2388],{},[450,2389,2390,2392,2394,2396],{},[453,2391,382],{},[453,2393,404],{},[453,2395,410],{},[453,2397,461],{},[463,2399,2400,2417,2442,2456,2473],{},[450,2401,2402,2407,2409,2411],{},[468,2403,2404],{},[324,2405,2406],{},"license.key",[468,2408,475],{},[468,2410,414],{},[468,2412,2413,2414,2416],{},"License key string. Use ",[324,2415,432],{}," interpolation; do not hard-code.",[450,2418,2419,2424,2426,2428],{},[468,2420,2421],{},[324,2422,2423],{},"license.file",[468,2425,475],{},[468,2427,414],{},[468,2429,2430,2431,2434,2435,2438,2439,2441],{},"Path to a ",[324,2432,2433],{},"chmod 600"," file holding the key on one line. Mutually exclusive with ",[324,2436,2437],{},"key"," (",[324,2440,2437],{}," wins).",[450,2443,2444,2449,2451,2453],{},[468,2445,2446],{},[324,2447,2448],{},"license.environment",[468,2450,475],{},[468,2452,414],{},[468,2454,2455],{},"Deployment environment label feeding the machine fingerprint. Required for the Production tier.",[450,2457,2458,2463,2465,2470],{},[468,2459,2460],{},[324,2461,2462],{},"license.cache-dir",[468,2464,475],{},[468,2466,2467],{},[324,2468,2469],{},"~\u002F.stoatflow\u002Flicense-cache\u002F",[468,2471,2472],{},"Offline-cache directory. In Kubernetes, mount on a persistent volume so it survives restarts.",[450,2474,2475,2480,2482,2486],{},[468,2476,2477],{},[324,2478,2479],{},"license.verbose-banner",[468,2481,859],{},[468,2483,2484],{},[324,2485,1060],{},[468,2487,2488],{},"Include the customer name in the startup banner.",[338,2490,2492],{"color":340,"icon":2491},"i-lucide-key",[320,2493,2494,2495,2498,2499,2502],{},"License env vars and ",[324,2496,2497],{},"-D"," system properties (",[324,2500,2501],{},"STOATFLOW_LICENSE_*",") take precedence over these YAML values.",[370,2504,2506],{"id":2505},"stoatflowha","stoatflow.ha",[320,2508,2509,2510,2513,2514,368],{},"Opt-in hot-standby high availability. With ",[324,2511,2512],{},"mode: off"," (default) the application is a single instance. See ",[361,2515,233],{"href":234},[444,2517,2518,2530],{},[447,2519,2520],{},[450,2521,2522,2524,2526,2528],{},[453,2523,382],{},[453,2525,404],{},[453,2527,410],{},[453,2529,461],{},[463,2531,2532,2556,2578,2595,2618,2638,2654,2673,2690,2708,2724,2749,2769],{},[450,2533,2534,2539,2542,2547],{},[468,2535,2536],{},[324,2537,2538],{},"ha.mode",[468,2540,2541],{},"enum",[468,2543,2544],{},[324,2545,2546],{},"off",[468,2548,2549,2551,2552,2555],{},[324,2550,2546],{}," (single instance) or ",[324,2553,2554],{},"active-standby"," (hot-standby cluster: one active + one or more warm standbys).",[450,2557,2558,2563,2565,2575],{},[468,2559,2560],{},[324,2561,2562],{},"ha.pod-id",[468,2564,475],{},[468,2566,2567,2570,2571,2574],{},[324,2568,2569],{},"POD_NAME"," → ",[324,2572,2573],{},"HOSTNAME"," → hostname",[468,2576,2577],{},"Stable per-pod identity distinguishing the peers.",[450,2579,2580,2585,2587,2592],{},[468,2581,2582],{},[324,2583,2584],{},"ha.coordination-topic",[468,2586,475],{},[468,2588,2589],{},[324,2590,2591],{},"__stoatflow_\u003CapplicationId>_ha",[468,2593,2594],{},"Single-partition, compacted, auto-created topic the cluster coordinates through (heartbeats + the promotion token).",[450,2596,2597,2602,2604,2608],{},[468,2598,2599],{},[324,2600,2601],{},"ha.desired-standbys",[468,2603,695],{},[468,2605,2606],{},[324,2607,1297],{},[468,2609,2610,2611,2613,2614,2617],{},"Caught-up standby spares the readiness gate protects. ",[324,2612,1297],{}," is the classic active\u002Fpassive pair; raise it (with ",[324,2615,2616],{},"replicas",") for more redundancy. Drives the redundancy floor on rolling deploys.",[450,2619,2620,2625,2627,2632],{},[468,2621,2622],{},[324,2623,2624],{},"ha.max-standbys",[468,2626,695],{},[468,2628,2629],{},[324,2630,2631],{},"3",[468,2633,2634,2635,368],{},"Ceiling on standbys, bounding changelog fan-out (each standby is one more changelog reader). Total instances ≤ ",[324,2636,2637],{},"max-standbys + 1",[450,2639,2640,2645,2647,2651],{},[468,2641,2642],{},[324,2643,2644],{},"ha.failover-priority",[468,2646,695],{},[468,2648,2649],{},[324,2650,902],{},[468,2652,2653],{},"Per-pod tie-break hint ordering candidates within the equal-lag bucket (higher wins). Never overrides lag or the hash floor.",[450,2655,2656,2661,2663,2667],{},[468,2657,2658],{},[324,2659,2660],{},"ha.promotion-settle-window-ms",[468,2662,695],{},[468,2664,2665],{},[324,2666,780],{},[468,2668,2669,2670,368],{},"After claiming the promotion token, how long the winner confirms it is the sole claimant before fencing (single-promoter guarantee). Bounded ",[324,2671,2672],{},"1..ha.staleness-threshold-ms",[450,2674,2675,2680,2682,2687],{},[468,2676,2677],{},[324,2678,2679],{},"ha.heartbeat-ms",[468,2681,695],{},[468,2683,2684],{},[324,2685,2686],{},"1000",[468,2688,2689],{},"How often each pod publishes its liveness and role.",[450,2691,2692,2697,2699,2703],{},[468,2693,2694],{},[324,2695,2696],{},"ha.staleness-threshold-ms",[468,2698,695],{},[468,2700,2701],{},[324,2702,814],{},[468,2704,2705,2706,368],{},"Gap without a peer heartbeat before it's considered stale. Must be ≥ ",[324,2707,2679],{},[450,2709,2710,2715,2717,2721],{},[468,2711,2712],{},[324,2713,2714],{},"ha.staleness-misses",[468,2716,695],{},[468,2718,2719],{},[324,2720,2631],{},[468,2722,2723],{},"Consecutive missed checks before a standby is elected to promote (debounce).",[450,2725,2726,2731,2733,2738],{},[468,2727,2728],{},[324,2729,2730],{},"ha.acceptable-recovery-lag",[468,2732,695],{},[468,2734,2735],{},[324,2736,2737],{},"50000",[468,2739,2740,2741,2744,2745,2748],{},"Total committed-changelog lag (records, summed across all changelog partitions) at\u002Fbelow which a standby is caught up (",[324,2742,2743],{},"READY_STANDBY",") and promotion-eligible without the grace fallback. A single total sum, not per-task like KS's ",[324,2746,2747],{},"acceptable.recovery.lag"," (10000). Correctness never depends on it (restore-before-process does); mostly a raise-me lever.",[450,2750,2751,2756,2758,2762],{},[468,2752,2753],{},[324,2754,2755],{},"ha.promotion-grace-ms",[468,2757,695],{},[468,2759,2760],{},[324,2761,814],{},[468,2763,2764,2765,2768],{},"Grace window after which the least-behind standby auto-promotes when no standby is within ",[324,2766,2767],{},"acceptable-recovery-lag"," (availability-first; eligibility re-checked continuously).",[450,2770,2771,2776,2778,2782],{},[468,2772,2773],{},[324,2774,2775],{},"ha.promotion-restore-no-progress-timeout-ms",[468,2777,695],{},[468,2779,2780],{},[324,2781,831],{},[468,2783,2784],{},"Progress-aware deadline for restore-before-process — fails only on a window with zero records applied (genuinely stuck), then self-terminates → K8s restart. Not the commit-path barrier timeout.",[370,2786,2788],{"id":2787},"runtimehttp","runtime.http",[320,2790,2791,2792,368],{},"The built-in HTTP server. See ",[361,2793,2794],{"href":186},"REST API",[444,2796,2797,2809],{},[447,2798,2799],{},[450,2800,2801,2803,2805,2807],{},[453,2802,382],{},[453,2804,404],{},[453,2806,410],{},[453,2808,461],{},[463,2810,2811,2827,2844,2861,2878],{},[450,2812,2813,2818,2820,2824],{},[468,2814,2815],{},[324,2816,2817],{},"runtime.http.enabled",[468,2819,859],{},[468,2821,2822],{},[324,2823,864],{},[468,2825,2826],{},"Enable the HTTP server (health, metrics, info, topology, control endpoints).",[450,2828,2829,2834,2836,2841],{},[468,2830,2831],{},[324,2832,2833],{},"runtime.http.port",[468,2835,695],{},[468,2837,2838],{},[324,2839,2840],{},"8080",[468,2842,2843],{},"Port to bind.",[450,2845,2846,2851,2853,2858],{},[468,2847,2848],{},[324,2849,2850],{},"runtime.http.host",[468,2852,475],{},[468,2854,2855],{},[324,2856,2857],{},"0.0.0.0",[468,2859,2860],{},"Bind address.",[450,2862,2863,2868,2870,2875],{},[468,2864,2865],{},[324,2866,2867],{},"runtime.http.backlog",[468,2869,695],{},[468,2871,2872],{},[324,2873,2874],{},"50",[468,2876,2877],{},"Max pending connections in the socket backlog.",[450,2879,2880,2885,2887,2891],{},[468,2881,2882],{},[324,2883,2884],{},"runtime.http.debug.enabled",[468,2886,859],{},[468,2888,2889],{},[324,2890,864],{},[468,2892,2893,2894,941,2897,2900],{},"Register the ",[324,2895,2896],{},"\u002Fdebug\u002Fthreads",[324,2898,2899],{},"\u002Fdebug\u002Fbarriers"," diagnostic endpoints. Disable to reduce attack surface in hardened deployments.",[370,2902,2904],{"id":2903},"runtimemetrics","runtime.metrics",[320,2906,2907,2908,368],{},"Micrometer \u002F Prometheus metrics. See ",[361,2909,195],{"href":196},[444,2911,2912,2924],{},[447,2913,2914],{},[450,2915,2916,2918,2920,2922],{},[453,2917,382],{},[453,2919,404],{},[453,2921,410],{},[453,2923,461],{},[463,2925,2926,2946,2963,2990,3012],{},[450,2927,2928,2933,2935,2939],{},[468,2929,2930],{},[324,2931,2932],{},"runtime.metrics.enabled",[468,2934,859],{},[468,2936,2937],{},[324,2938,864],{},[468,2940,2941,2942,2945],{},"Enable metrics collection and the ",[324,2943,2944],{},"\u002Fmetrics"," Prometheus endpoint.",[450,2947,2948,2953,2955,2960],{},[468,2949,2950],{},[324,2951,2952],{},"runtime.metrics.prefix",[468,2954,475],{},[468,2956,2957],{},[324,2958,2959],{},"stoatflow",[468,2961,2962],{},"Prefix for all metric names.",[450,2964,2965,2970,2980,2984],{},[468,2966,2967],{},[324,2968,2969],{},"runtime.metrics.recording-level",[468,2971,508,2972,512,2974,512,2977],{},[324,2973,340],{},[324,2975,2976],{},"debug",[324,2978,2979],{},"trace",[468,2981,2982],{},[324,2983,340],{},[468,2985,2986,2987,2989],{},"Metric detail level. ",[324,2988,340],{}," is production-safe; higher levels add cardinality\u002Foverhead.",[450,2991,2992,2997,2999,3003],{},[468,2993,2994],{},[324,2995,2996],{},"runtime.metrics.common-tags",[468,2998,2323],{},[468,3000,3001],{},[324,3002,2328],{},[468,3004,3005,3006,838,3009,399],{},"Tags applied to all metrics (e.g. ",[324,3007,3008],{},"env",[324,3010,3011],{},"region",[450,3013,3014,3019,3021,3025],{},[468,3015,3016],{},[324,3017,3018],{},"runtime.metrics.bind-jvm-metrics",[468,3020,859],{},[468,3022,3023],{},[324,3024,864],{},[468,3026,3027],{},"Bind JVM metrics (memory, GC, threads).",[370,3029,3031],{"id":3030},"runtimeendpoints","runtime.endpoints",[320,3033,3034,3035,941,3038,3041,3042,368],{},"Visibility of the ",[324,3036,3037],{},"\u002Finfo",[324,3039,3040],{},"\u002Fconfig"," endpoints. See ",[361,3043,2794],{"href":186},[444,3045,3046,3058],{},[447,3047,3048],{},[450,3049,3050,3052,3054,3056],{},[453,3051,382],{},[453,3053,404],{},[453,3055,410],{},[453,3057,461],{},[463,3059,3060,3079,3097,3115,3133,3151,3169,3187],{},[450,3061,3062,3067,3069,3073],{},[468,3063,3064],{},[324,3065,3066],{},"runtime.endpoints.config.enabled",[468,3068,859],{},[468,3070,3071],{},[324,3072,864],{},[468,3074,3075,3076,3078],{},"Enable the ",[324,3077,3040],{}," endpoint (merged config with sensitive values masked).",[450,3080,3081,3086,3088,3092],{},[468,3082,3083],{},[324,3084,3085],{},"runtime.endpoints.info.show-app",[468,3087,859],{},[468,3089,3090],{},[324,3091,864],{},[468,3093,3094,3095,368],{},"Include application info (applicationId) in ",[324,3096,3037],{},[450,3098,3099,3104,3106,3110],{},[468,3100,3101],{},[324,3102,3103],{},"runtime.endpoints.info.show-java",[468,3105,859],{},[468,3107,3108],{},[324,3109,864],{},[468,3111,3112,3113,368],{},"Include Java runtime info in ",[324,3114,3037],{},[450,3116,3117,3122,3124,3128],{},[468,3118,3119],{},[324,3120,3121],{},"runtime.endpoints.info.show-kafka",[468,3123,859],{},[468,3125,3126],{},[324,3127,864],{},[468,3129,3130,3131,368],{},"Include Kafka config (bootstrap servers) in ",[324,3132,3037],{},[450,3134,3135,3140,3142,3146],{},[468,3136,3137],{},[324,3138,3139],{},"runtime.endpoints.info.show-uptime",[468,3141,859],{},[468,3143,3144],{},[324,3145,864],{},[468,3147,3148,3149,368],{},"Include uptime in ",[324,3150,3037],{},[450,3152,3153,3158,3160,3164],{},[468,3154,3155],{},[324,3156,3157],{},"runtime.endpoints.info.show-state",[468,3159,859],{},[468,3161,3162],{},[324,3163,864],{},[468,3165,3166,3167,368],{},"Include state + transition history in ",[324,3168,3037],{},[450,3170,3171,3176,3178,3182],{},[468,3172,3173],{},[324,3174,3175],{},"runtime.endpoints.info.show-watermarks",[468,3177,859],{},[468,3179,3180],{},[324,3181,864],{},[468,3183,3184,3185,368],{},"Include watermark info in ",[324,3186,3037],{},[450,3188,3189,3194,3196,3200],{},[468,3190,3191],{},[324,3192,3193],{},"runtime.endpoints.info.show-endpoints",[468,3195,859],{},[468,3197,3198],{},[324,3199,864],{},[468,3201,3202,3203,368],{},"Include the list of available endpoints in ",[324,3204,3037],{},[370,3206,3208],{"id":3207},"runtimehealth","runtime.health",[320,3210,3211,3212,368],{},"Health-check timeouts. See ",[361,3213,190],{"href":191},[444,3215,3216,3228],{},[447,3217,3218],{},[450,3219,3220,3222,3224,3226],{},[453,3221,382],{},[453,3223,404],{},[453,3225,410],{},[453,3227,461],{},[463,3229,3230,3246],{},[450,3231,3232,3237,3239,3243],{},[468,3233,3234],{},[324,3235,3236],{},"runtime.health.kafka-broker.timeout-ms",[468,3238,695],{},[468,3240,3241],{},[324,3242,1470],{},[468,3244,3245],{},"Timeout for the Kafka broker connectivity check.",[450,3247,3248,3253,3255,3259],{},[468,3249,3250],{},[324,3251,3252],{},"runtime.health.schema-registry.timeout-ms",[468,3254,695],{},[468,3256,3257],{},[324,3258,814],{},[468,3260,3261,3262,3264],{},"Timeout for the Schema Registry check (auto-enabled when ",[324,3263,558],{}," is set).",[370,3266,3267],{"id":3267},"logging",[320,3269,3270,3271,399],{},"Per-package log levels applied at startup (overrides ",[324,3272,3273],{},"logback.xml",[444,3275,3276,3288],{},[447,3277,3278],{},[450,3279,3280,3282,3284,3286],{},[453,3281,382],{},[453,3283,404],{},[453,3285,410],{},[453,3287,461],{},[463,3289,3290],{},[450,3291,3292,3297,3300,3304],{},[468,3293,3294],{},[324,3295,3296],{},"logging.level",[468,3298,3299],{},"map\u003Cstring, enum>",[468,3301,3302],{},[324,3303,2328],{},[468,3305,3306,3307,1564,3310,1564,3313,1564,3316,1564,3319,1564,3322,3324,3325,3328],{},"Map of logger name → level (",[324,3308,3309],{},"TRACE",[324,3311,3312],{},"DEBUG",[324,3314,3315],{},"INFO",[324,3317,3318],{},"WARN",[324,3320,3321],{},"ERROR",[324,3323,1551],{},"). Use ",[324,3326,3327],{},"ROOT"," for the root logger.",[3330,3331,3336],"pre",{"className":3332,"code":3333,"language":3334,"meta":3335,"style":3335},"language-yaml shiki shiki-themes vitesse-light","logging:\n  level:\n    ROOT: INFO\n    io.stoatflow: DEBUG\n    org.apache.kafka: WARN\n","yaml","",[324,3337,3338,3350,3358,3371,3382],{"__ignoreMap":3335},[3339,3340,3343,3346],"span",{"class":3341,"line":3342},"line",1,[3339,3344,3267],{"class":3345},"su6XF",[3339,3347,3349],{"class":3348},"sYZai",":\n",[3339,3351,3353,3356],{"class":3341,"line":3352},2,[3339,3354,3355],{"class":3345},"  level",[3339,3357,3349],{"class":3348},[3339,3359,3361,3364,3367],{"class":3341,"line":3360},3,[3339,3362,3363],{"class":3345},"    ROOT",[3339,3365,3366],{"class":3348},":",[3339,3368,3370],{"class":3369},"spphp"," INFO\n",[3339,3372,3374,3377,3379],{"class":3341,"line":3373},4,[3339,3375,3376],{"class":3345},"    io.stoatflow",[3339,3378,3366],{"class":3348},[3339,3380,3381],{"class":3369}," DEBUG\n",[3339,3383,3385,3388,3390],{"class":3341,"line":3384},5,[3339,3386,3387],{"class":3345},"    org.apache.kafka",[3339,3389,3366],{"class":3348},[3339,3391,3392],{"class":3369}," WARN\n",[370,3394,3396],{"id":3395},"example","Example",[320,3398,3399,3400,3402],{},"A representative ",[324,3401,326],{}," touching the common keys:",[3330,3404,3406],{"className":3332,"code":3405,"language":3334,"meta":3335,"style":3335},"stoatflow:\n  application-id: order-processor\n  bootstrap-servers: ${KAFKA_BOOTSTRAP_SERVERS:-localhost:9092}\n  processing-guarantee: EXACTLY_ONCE\n\n  license:\n    key: ${STOATFLOW_LICENSE_KEY}\n    environment: ${DEPLOY_ENV:-dev}\n\n  lanes:\n    count: 16\n\n  state:\n    dir: \u002Fvar\u002Flib\u002Fstoatflow\u002Fstate\n\n  rocks-db:\n    preset: DEFAULT\n\nruntime:\n  http:\n    enabled: true\n    port: ${HTTP_PORT:-8080}\n  metrics:\n    enabled: true\n    common-tags:\n      env: ${DEPLOY_ENV:-dev}\n",[324,3407,3408,3414,3424,3434,3444,3450,3458,3469,3480,3485,3493,3505,3510,3518,3529,3534,3542,3553,3558,3566,3574,3586,3597,3605,3614,3622],{"__ignoreMap":3335},[3339,3409,3410,3412],{"class":3341,"line":3342},[3339,3411,2959],{"class":3345},[3339,3413,3349],{"class":3348},[3339,3415,3416,3419,3421],{"class":3341,"line":3352},[3339,3417,3418],{"class":3345},"  application-id",[3339,3420,3366],{"class":3348},[3339,3422,3423],{"class":3369}," order-processor\n",[3339,3425,3426,3429,3431],{"class":3341,"line":3360},[3339,3427,3428],{"class":3345},"  bootstrap-servers",[3339,3430,3366],{"class":3348},[3339,3432,3433],{"class":3369}," ${KAFKA_BOOTSTRAP_SERVERS:-localhost:9092}\n",[3339,3435,3436,3439,3441],{"class":3341,"line":3373},[3339,3437,3438],{"class":3345},"  processing-guarantee",[3339,3440,3366],{"class":3348},[3339,3442,3443],{"class":3369}," EXACTLY_ONCE\n",[3339,3445,3446],{"class":3341,"line":3384},[3339,3447,3449],{"emptyLinePlaceholder":3448},true,"\n",[3339,3451,3453,3456],{"class":3341,"line":3452},6,[3339,3454,3455],{"class":3345},"  license",[3339,3457,3349],{"class":3348},[3339,3459,3461,3464,3466],{"class":3341,"line":3460},7,[3339,3462,3463],{"class":3345},"    key",[3339,3465,3366],{"class":3348},[3339,3467,3468],{"class":3369}," ${STOATFLOW_LICENSE_KEY}\n",[3339,3470,3472,3475,3477],{"class":3341,"line":3471},8,[3339,3473,3474],{"class":3345},"    environment",[3339,3476,3366],{"class":3348},[3339,3478,3479],{"class":3369}," ${DEPLOY_ENV:-dev}\n",[3339,3481,3483],{"class":3341,"line":3482},9,[3339,3484,3449],{"emptyLinePlaceholder":3448},[3339,3486,3488,3491],{"class":3341,"line":3487},10,[3339,3489,3490],{"class":3345},"  lanes",[3339,3492,3349],{"class":3348},[3339,3494,3496,3499,3501],{"class":3341,"line":3495},11,[3339,3497,3498],{"class":3345},"    count",[3339,3500,3366],{"class":3348},[3339,3502,3504],{"class":3503},"s-TwI"," 16\n",[3339,3506,3508],{"class":3341,"line":3507},12,[3339,3509,3449],{"emptyLinePlaceholder":3448},[3339,3511,3513,3516],{"class":3341,"line":3512},13,[3339,3514,3515],{"class":3345},"  state",[3339,3517,3349],{"class":3348},[3339,3519,3521,3524,3526],{"class":3341,"line":3520},14,[3339,3522,3523],{"class":3345},"    dir",[3339,3525,3366],{"class":3348},[3339,3527,3528],{"class":3369}," \u002Fvar\u002Flib\u002Fstoatflow\u002Fstate\n",[3339,3530,3532],{"class":3341,"line":3531},15,[3339,3533,3449],{"emptyLinePlaceholder":3448},[3339,3535,3537,3540],{"class":3341,"line":3536},16,[3339,3538,3539],{"class":3345},"  rocks-db",[3339,3541,3349],{"class":3348},[3339,3543,3545,3548,3550],{"class":3341,"line":3544},17,[3339,3546,3547],{"class":3345},"    preset",[3339,3549,3366],{"class":3348},[3339,3551,3552],{"class":3369}," DEFAULT\n",[3339,3554,3556],{"class":3341,"line":3555},18,[3339,3557,3449],{"emptyLinePlaceholder":3448},[3339,3559,3561,3564],{"class":3341,"line":3560},19,[3339,3562,3563],{"class":3345},"runtime",[3339,3565,3349],{"class":3348},[3339,3567,3569,3572],{"class":3341,"line":3568},20,[3339,3570,3571],{"class":3345},"  http",[3339,3573,3349],{"class":3348},[3339,3575,3577,3580,3582],{"class":3341,"line":3576},21,[3339,3578,3579],{"class":3345},"    enabled",[3339,3581,3366],{"class":3348},[3339,3583,3585],{"class":3584},"sbBg2"," true\n",[3339,3587,3589,3592,3594],{"class":3341,"line":3588},22,[3339,3590,3591],{"class":3345},"    port",[3339,3593,3366],{"class":3348},[3339,3595,3596],{"class":3369}," ${HTTP_PORT:-8080}\n",[3339,3598,3600,3603],{"class":3341,"line":3599},23,[3339,3601,3602],{"class":3345},"  metrics",[3339,3604,3349],{"class":3348},[3339,3606,3608,3610,3612],{"class":3341,"line":3607},24,[3339,3609,3579],{"class":3345},[3339,3611,3366],{"class":3348},[3339,3613,3585],{"class":3584},[3339,3615,3617,3620],{"class":3341,"line":3616},25,[3339,3618,3619],{"class":3345},"    common-tags",[3339,3621,3349],{"class":3348},[3339,3623,3625,3628,3630],{"class":3341,"line":3624},26,[3339,3626,3627],{"class":3345},"      env",[3339,3629,3366],{"class":3348},[3339,3631,3479],{"class":3369},[370,3633,3635],{"id":3634},"related","Related",[3637,3638,3639,3645,3650,3656],"path-cards",{},[3640,3641,3642],"path-card",{"icon":50,"title":363,"to":73},[320,3643,3644],{},"Override layers, env-var naming, and YAML-to-engine mapping.",[3640,3646,3647],{"icon":75,"title":367,"to":173},[320,3648,3649],{},"Consumer\u002Fproducer passthrough, framework defaults, forced overrides.",[3640,3651,3653],{"icon":36,"title":3652,"to":168},"Defaults and presets",[320,3654,3655],{},"What StoatFlow sets out of the box and the RocksDB presets.",[3640,3657,3659],{"icon":170,"title":3658,"to":249},"Tuning",[320,3660,3661],{},"Which knobs to turn for throughput, latency, and memory.",[3663,3664,3665],"style",{},"html pre.shiki code .su6XF, html code.shiki .su6XF{--shiki-default:#998418}html pre.shiki code .sYZai, html code.shiki .sYZai{--shiki-default:#999999}html pre.shiki code .spphp, html code.shiki .spphp{--shiki-default:#B56959}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .s-TwI, html code.shiki .s-TwI{--shiki-default:#2F798A}html pre.shiki code .sbBg2, html code.shiki .sbBg2{--shiki-default:#1E754F}",{"title":3335,"searchDepth":3352,"depth":3352,"links":3667},[3668,3669,3670,3671,3672,3673,3674,3675,3676,3677,3678,3679,3680,3681,3682,3683,3684,3685,3686,3687,3688,3689,3690,3691,3692],{"id":372,"depth":3352,"text":373},{"id":438,"depth":3352,"text":439},{"id":663,"depth":3352,"text":664},{"id":744,"depth":3352,"text":745},{"id":934,"depth":3352,"text":935},{"id":1208,"depth":3352,"text":1209},{"id":1303,"depth":3352,"text":1304},{"id":1381,"depth":3352,"text":1382},{"id":1650,"depth":3352,"text":1651},{"id":1740,"depth":3352,"text":1741},{"id":1834,"depth":3352,"text":1835},{"id":1917,"depth":3352,"text":1918},{"id":2009,"depth":3352,"text":2010},{"id":2084,"depth":3352,"text":2085},{"id":2197,"depth":3352,"text":2198},{"id":2281,"depth":3352,"text":2282},{"id":2377,"depth":3352,"text":2378},{"id":2505,"depth":3352,"text":2506},{"id":2787,"depth":3352,"text":2788},{"id":2903,"depth":3352,"text":2904},{"id":3030,"depth":3352,"text":3031},{"id":3207,"depth":3352,"text":3208},{"id":3267,"depth":3352,"text":3267},{"id":3395,"depth":3352,"text":3396},{"id":3634,"depth":3352,"text":3635},"Curated reference of the StoatFlow configuration keys — stoatflow.* (engine) and runtime.* (HTTP, metrics, health) — with type, default, and a one-line description per key.","md",{},{"icon":284},"reference",{"title":281,"description":3693},"aX2rJwYOBpxePofezNoYCuCl38rfrxrJSLck-q1GeEQ",[3701,3703],{"title":274,"path":275,"stem":276,"description":3702,"icon":279,"children":-1},"Lookup material for StoatFlow — configuration keys, REST API, the Gradle plugin and Maven build references, the Kafka Streams compatibility matrix, the metrics catalogue, and the glossary.",{"title":286,"path":287,"stem":288,"description":3704,"icon":289,"children":-1},"Every HTTP endpoint the StoatFlow runtime exposes — path, method, purpose, response shape, content negotiation, status codes, and gating.",1783713364170]