Skip to content

Annotation Processing and Transport

The annotation processor (AP) runs per module, but runtime mapping is global. The processor must resolve the full mapping, then filter to the current module.

Resolution flow (per module)

  1. Load pipeline.runtime.yaml if present.
  2. Build the global step and synthetic index from annotations/aspects.
  3. Resolve placement for each step/synthetic:
    • explicit mapping
    • otherwise defaults (if validation: auto)
  4. Filter the resolved set to the current module.
  5. Generate server and client artifacts for the module.

Transport and client wiring

  • Each module belongs to a runtime.
  • Transport is configured globally in pipeline.yaml and applies to the whole pipeline.
  • Cross-module calls use the pipeline transport (gRPC or REST).
  • Calls within a module use direct in-process wiring (current behavior).

Monolith layout

  • Logical placement resolves all services/plugins to one module.
  • Client wiring is generated as in-process for that single-module target.
  • This becomes a real monolith runtime only if the Maven/build topology is also monolithic.
  • Transport settings remain relevant only for external exposure (if any).

Pipeline-runtime layout

  • Steps within the same pipeline must resolve to a single runtime.
  • The orchestrator remains a separate runtime (current default scaffolding behavior).
  • As with monolith, this is logical placement first; physical deploy units depend on build topology.

Backward compatibility

If the mapping file is not present or validation: auto with no explicit placements, the processor must behave exactly as it does today.