vidocq-runtime-core is the Vidocq Runtime runtime engine. It orchestrates the boot sequence, reads the extension index produced at build time, instantiates the bootstrap class generated by Class-File API, and coordinates startup phases.

Coordinates

Artefact

io.vidocq.runtime:vidocq-runtime-core:0.1.0-SNAPSHOT

JPMS module

io.vidocq.runtime.core

Source

vidocq-runtime-core/src/main/java/io/vidocq/runtime/core/

Responsibilities

  • Read META-INF/vidocq/extensions.list produced by the APT processor.

  • Load the RuntimeBootstrap class synthesised by the Maven plugin.

  • Run boot phases in order:

    1. Config — MicroProfile Config resolution.

    2. Extensions init — invoke RUNTIME_INIT recorders.

    3. CDI start — delegate to Vauban (Vauban.bootstrap()).

    4. Transport bind — delegate to Chappe via vidocq-runtime-chappe-webserver-extension.

    5. Routes register — delegate to Cassini, Foy and Mansart depending on active extensions.

  • Manage the shutdown cycle — SIGTERM propagates in reverse order, virtual threads drain cleanly.

Entry point

package io.example;

public class App {
    public static void main(String[] args) {
        io.vidocq.runtime.Vidocq.main(args);
    }
}

Vidocq.main is a simple facade. User code does not need a @SpringBootApplication nor an application class — the boot sequence is fully driven by the APT index.

Lifecycle hooks

An extension can subscribe to phases through the SPI:

@BuildStep
ApplicationStartBuildItem onStart(SomeExtensionContext ctx) {
    // contribute a build step triggered at RUNTIME_INIT
    return new ApplicationStartBuildItem();
}

ApplicationStartBuildItem and ApplicationStopBuildItem are SymbolicBuildItem types — no payload, only a marker semantic.

Threading

Boot itself is intentionally sequential on a platform thread (easier diagnosis, readable stack traces). The only virtual threads created during boot are:

  • the Chappe HTTP I/O pool (one VT per inbound connection);

  • the Mansart JDBC housekeeping pool;

  • StructuredTaskScope instances opened by extensions that need them (typically vidocq-runtime-health-extension for periodic checks).

Next steps

  • Internals — detailed sequence with diagram

  • SPI — interfaces consumed by core