org.springframework.boot
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/.gitkeep b/cameleer-server-app/src/main/java/com/cameleer/server/app/.gitkeep
similarity index 100%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/.gitkeep
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/.gitkeep
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/Cameleer3ServerApplication.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/Cameleer3ServerApplication.java
similarity index 53%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/Cameleer3ServerApplication.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/Cameleer3ServerApplication.java
index 1232f754..9f0f04aa 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/Cameleer3ServerApplication.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/Cameleer3ServerApplication.java
@@ -1,7 +1,7 @@
-package com.cameleer3.server.app;
+package com.cameleer.server.app;
-import com.cameleer3.server.app.config.AgentRegistryConfig;
-import com.cameleer3.server.app.config.IngestionConfig;
+import com.cameleer.server.app.config.AgentRegistryConfig;
+import com.cameleer.server.app.config.IngestionConfig;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
@@ -9,20 +9,20 @@ import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
/**
- * Main entry point for the Cameleer3 Server application.
+ * Main entry point for the Cameleer Server application.
*
- * Scans {@code com.cameleer3.server.app} and {@code com.cameleer3.server.core} packages.
+ * Scans {@code com.cameleer.server.app} and {@code com.cameleer.server.core} packages.
*/
@SpringBootApplication(scanBasePackages = {
- "com.cameleer3.server.app",
- "com.cameleer3.server.core"
+ "com.cameleer.server.app",
+ "com.cameleer.server.core"
})
@EnableAsync
@EnableScheduling
@EnableConfigurationProperties({IngestionConfig.class, AgentRegistryConfig.class})
-public class Cameleer3ServerApplication {
+public class CameleerServerApplication {
public static void main(String[] args) {
- SpringApplication.run(Cameleer3ServerApplication.class, args);
+ SpringApplication.run(CameleerServerApplication.class, args);
}
}
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/agent/AgentLifecycleMonitor.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/agent/AgentLifecycleMonitor.java
similarity index 90%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/agent/AgentLifecycleMonitor.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/agent/AgentLifecycleMonitor.java
index d2cec6c6..4abb88da 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/agent/AgentLifecycleMonitor.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/agent/AgentLifecycleMonitor.java
@@ -1,10 +1,10 @@
-package com.cameleer3.server.app.agent;
+package com.cameleer.server.app.agent;
-import com.cameleer3.server.app.metrics.ServerMetrics;
-import com.cameleer3.server.core.agent.AgentEventService;
-import com.cameleer3.server.core.agent.AgentInfo;
-import com.cameleer3.server.core.agent.AgentRegistryService;
-import com.cameleer3.server.core.agent.AgentState;
+import com.cameleer.server.app.metrics.ServerMetrics;
+import com.cameleer.server.core.agent.AgentEventService;
+import com.cameleer.server.core.agent.AgentInfo;
+import com.cameleer.server.core.agent.AgentRegistryService;
+import com.cameleer.server.core.agent.AgentState;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.scheduling.annotation.Scheduled;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/agent/SseConnectionManager.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/agent/SseConnectionManager.java
similarity index 95%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/agent/SseConnectionManager.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/agent/SseConnectionManager.java
index 1ffcdba3..ff38dd2c 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/agent/SseConnectionManager.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/agent/SseConnectionManager.java
@@ -1,9 +1,9 @@
-package com.cameleer3.server.app.agent;
+package com.cameleer.server.app.agent;
-import com.cameleer3.server.app.config.AgentRegistryConfig;
-import com.cameleer3.server.core.agent.AgentCommand;
-import com.cameleer3.server.core.agent.AgentEventListener;
-import com.cameleer3.server.core.agent.AgentRegistryService;
+import com.cameleer.server.app.config.AgentRegistryConfig;
+import com.cameleer.server.core.agent.AgentCommand;
+import com.cameleer.server.core.agent.AgentEventListener;
+import com.cameleer.server.core.agent.AgentRegistryService;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import jakarta.annotation.PostConstruct;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/agent/SsePayloadSigner.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/agent/SsePayloadSigner.java
similarity index 96%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/agent/SsePayloadSigner.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/agent/SsePayloadSigner.java
index e08f124e..61c644d9 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/agent/SsePayloadSigner.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/agent/SsePayloadSigner.java
@@ -1,6 +1,6 @@
-package com.cameleer3.server.app.agent;
+package com.cameleer.server.app.agent;
-import com.cameleer3.server.core.security.Ed25519SigningService;
+import com.cameleer.server.core.security.Ed25519SigningService;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/analytics/UsageFlushScheduler.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/analytics/UsageFlushScheduler.java
similarity index 86%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/analytics/UsageFlushScheduler.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/analytics/UsageFlushScheduler.java
index d7a81023..a5d474b3 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/analytics/UsageFlushScheduler.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/analytics/UsageFlushScheduler.java
@@ -1,6 +1,6 @@
-package com.cameleer3.server.app.analytics;
+package com.cameleer.server.app.analytics;
-import com.cameleer3.server.app.storage.ClickHouseUsageTracker;
+import com.cameleer.server.app.storage.ClickHouseUsageTracker;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.scheduling.annotation.Scheduled;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/analytics/UsageTrackingInterceptor.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/analytics/UsageTrackingInterceptor.java
similarity index 93%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/analytics/UsageTrackingInterceptor.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/analytics/UsageTrackingInterceptor.java
index 894b1f1d..15c915f8 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/analytics/UsageTrackingInterceptor.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/analytics/UsageTrackingInterceptor.java
@@ -1,7 +1,7 @@
-package com.cameleer3.server.app.analytics;
+package com.cameleer.server.app.analytics;
-import com.cameleer3.server.core.analytics.UsageEvent;
-import com.cameleer3.server.core.analytics.UsageTracker;
+import com.cameleer.server.core.analytics.UsageEvent;
+import com.cameleer.server.core.analytics.UsageTracker;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.security.core.Authentication;
@@ -28,7 +28,7 @@ public class UsageTrackingInterceptor implements HandlerInterceptor {
"/[0-9a-f]{32,64}(?=/|$)", Pattern.CASE_INSENSITIVE);
private static final Pattern NUMERIC_ID = Pattern.compile(
"(?<=/)(\\d{2,})(?=/|$)");
- // Agent instance IDs like "cameleer3-sample-598867949d-g7nt4-1"
+ // Agent instance IDs like "cameleer-sample-598867949d-g7nt4-1"
private static final Pattern INSTANCE_ID = Pattern.compile(
"(?<=/agents/)[^/]+(?=/)", Pattern.CASE_INSENSITIVE);
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/AgentRegistryBeanConfig.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/config/AgentRegistryBeanConfig.java
similarity index 76%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/AgentRegistryBeanConfig.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/config/AgentRegistryBeanConfig.java
index 1b46e6a1..aeda9f9e 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/AgentRegistryBeanConfig.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/config/AgentRegistryBeanConfig.java
@@ -1,9 +1,9 @@
-package com.cameleer3.server.app.config;
+package com.cameleer.server.app.config;
-import com.cameleer3.server.core.agent.AgentEventRepository;
-import com.cameleer3.server.core.agent.AgentEventService;
-import com.cameleer3.server.core.agent.AgentRegistryService;
-import com.cameleer3.server.core.agent.RouteStateRegistry;
+import com.cameleer.server.core.agent.AgentEventRepository;
+import com.cameleer.server.core.agent.AgentEventService;
+import com.cameleer.server.core.agent.AgentRegistryService;
+import com.cameleer.server.core.agent.RouteStateRegistry;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/AgentRegistryConfig.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/config/AgentRegistryConfig.java
similarity index 97%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/AgentRegistryConfig.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/config/AgentRegistryConfig.java
index 84553962..09607f8b 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/AgentRegistryConfig.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/config/AgentRegistryConfig.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.app.config;
+package com.cameleer.server.app.config;
import org.springframework.boot.context.properties.ConfigurationProperties;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/ClickHouseConfig.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/config/ClickHouseConfig.java
similarity index 97%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/ClickHouseConfig.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/config/ClickHouseConfig.java
index 9aafc450..03f76d31 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/ClickHouseConfig.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/config/ClickHouseConfig.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.app.config;
+package com.cameleer.server.app.config;
import com.zaxxer.hikari.HikariDataSource;
import org.springframework.beans.factory.annotation.Qualifier;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/ClickHouseProperties.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/config/ClickHouseProperties.java
similarity index 95%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/ClickHouseProperties.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/config/ClickHouseProperties.java
index 82290d78..79eba5a6 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/ClickHouseProperties.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/config/ClickHouseProperties.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.app.config;
+package com.cameleer.server.app.config;
import org.springframework.boot.context.properties.ConfigurationProperties;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/ClickHouseSchemaInitializer.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/config/ClickHouseSchemaInitializer.java
similarity index 98%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/ClickHouseSchemaInitializer.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/config/ClickHouseSchemaInitializer.java
index 85171872..125d6485 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/ClickHouseSchemaInitializer.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/config/ClickHouseSchemaInitializer.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.app.config;
+package com.cameleer.server.app.config;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/DiagramBeanConfig.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/config/DiagramBeanConfig.java
similarity index 66%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/DiagramBeanConfig.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/config/DiagramBeanConfig.java
index 1d847215..3a0ee798 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/DiagramBeanConfig.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/config/DiagramBeanConfig.java
@@ -1,7 +1,7 @@
-package com.cameleer3.server.app.config;
+package com.cameleer.server.app.config;
-import com.cameleer3.server.app.diagram.ElkDiagramRenderer;
-import com.cameleer3.server.core.diagram.DiagramRenderer;
+import com.cameleer.server.app.diagram.ElkDiagramRenderer;
+import com.cameleer.server.core.diagram.DiagramRenderer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/IngestionBeanConfig.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/config/IngestionBeanConfig.java
similarity index 70%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/IngestionBeanConfig.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/config/IngestionBeanConfig.java
index 8f30536b..776b2d3e 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/IngestionBeanConfig.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/config/IngestionBeanConfig.java
@@ -1,10 +1,10 @@
-package com.cameleer3.server.app.config;
+package com.cameleer.server.app.config;
-import com.cameleer3.server.core.ingestion.BufferedLogEntry;
-import com.cameleer3.server.core.ingestion.ChunkAccumulator;
-import com.cameleer3.server.core.ingestion.MergedExecution;
-import com.cameleer3.server.core.ingestion.WriteBuffer;
-import com.cameleer3.server.core.storage.model.MetricsSnapshot;
+import com.cameleer.server.core.ingestion.BufferedLogEntry;
+import com.cameleer.server.core.ingestion.ChunkAccumulator;
+import com.cameleer.server.core.ingestion.MergedExecution;
+import com.cameleer.server.core.ingestion.WriteBuffer;
+import com.cameleer.server.core.storage.model.MetricsSnapshot;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@@ -12,7 +12,7 @@ import org.springframework.context.annotation.Configuration;
* Creates write buffer beans for the ingestion pipeline.
*
* Each {@link WriteBuffer} instance is shared between the
- * {@link com.cameleer3.server.core.ingestion.IngestionService} (producer side)
+ * {@link com.cameleer.server.core.ingestion.IngestionService} (producer side)
* and the flush scheduler (consumer side).
*/
@Configuration
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/IngestionConfig.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/config/IngestionConfig.java
similarity index 96%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/IngestionConfig.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/config/IngestionConfig.java
index 428209a4..84f52e43 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/IngestionConfig.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/config/IngestionConfig.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.app.config;
+package com.cameleer.server.app.config;
import org.springframework.boot.context.properties.ConfigurationProperties;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/LicenseBeanConfig.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/config/LicenseBeanConfig.java
similarity index 90%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/LicenseBeanConfig.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/config/LicenseBeanConfig.java
index e0cbc7a1..41717c88 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/LicenseBeanConfig.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/config/LicenseBeanConfig.java
@@ -1,8 +1,8 @@
-package com.cameleer3.server.app.config;
+package com.cameleer.server.app.config;
-import com.cameleer3.server.core.license.LicenseGate;
-import com.cameleer3.server.core.license.LicenseInfo;
-import com.cameleer3.server.core.license.LicenseValidator;
+import com.cameleer.server.core.license.LicenseGate;
+import com.cameleer.server.core.license.LicenseInfo;
+import com.cameleer.server.core.license.LicenseValidator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/OpenApiConfig.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/config/OpenApiConfig.java
similarity index 96%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/OpenApiConfig.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/config/OpenApiConfig.java
index a1547f41..7bd95ace 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/OpenApiConfig.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/config/OpenApiConfig.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.app.config;
+package com.cameleer.server.app.config;
import io.swagger.v3.oas.annotations.enums.SecuritySchemeType;
import io.swagger.v3.oas.annotations.security.SecurityScheme;
@@ -40,7 +40,7 @@ public class OpenApiConfig {
@Bean
public OpenAPI openAPI() {
return new OpenAPI()
- .info(new Info().title("Cameleer3 Server API").version("1.0"))
+ .info(new Info().title("Cameleer Server API").version("1.0"))
.addSecurityItem(new SecurityRequirement().addList("bearer"))
.servers(List.of(new Server().url("/api/v1").description("Relative")));
}
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/RbacBeanConfig.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/config/RbacBeanConfig.java
similarity index 74%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/RbacBeanConfig.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/config/RbacBeanConfig.java
index 3cd5b0f1..a1e20383 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/RbacBeanConfig.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/config/RbacBeanConfig.java
@@ -1,8 +1,8 @@
-package com.cameleer3.server.app.config;
+package com.cameleer.server.app.config;
-import com.cameleer3.server.app.storage.PostgresClaimMappingRepository;
-import com.cameleer3.server.core.rbac.ClaimMappingRepository;
-import com.cameleer3.server.core.rbac.ClaimMappingService;
+import com.cameleer.server.app.storage.PostgresClaimMappingRepository;
+import com.cameleer.server.core.rbac.ClaimMappingRepository;
+import com.cameleer.server.core.rbac.ClaimMappingService;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.core.JdbcTemplate;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/RuntimeBeanConfig.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/config/RuntimeBeanConfig.java
similarity index 76%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/RuntimeBeanConfig.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/config/RuntimeBeanConfig.java
index 52778922..4de4e48c 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/RuntimeBeanConfig.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/config/RuntimeBeanConfig.java
@@ -1,16 +1,16 @@
-package com.cameleer3.server.app.config;
+package com.cameleer.server.app.config;
-import com.cameleer3.server.app.storage.PostgresAppRepository;
-import com.cameleer3.server.app.storage.PostgresAppVersionRepository;
-import com.cameleer3.server.app.storage.PostgresDeploymentRepository;
-import com.cameleer3.server.app.storage.PostgresEnvironmentRepository;
-import com.cameleer3.server.core.runtime.AppRepository;
-import com.cameleer3.server.core.runtime.AppService;
-import com.cameleer3.server.core.runtime.AppVersionRepository;
-import com.cameleer3.server.core.runtime.DeploymentRepository;
-import com.cameleer3.server.core.runtime.DeploymentService;
-import com.cameleer3.server.core.runtime.EnvironmentRepository;
-import com.cameleer3.server.core.runtime.EnvironmentService;
+import com.cameleer.server.app.storage.PostgresAppRepository;
+import com.cameleer.server.app.storage.PostgresAppVersionRepository;
+import com.cameleer.server.app.storage.PostgresDeploymentRepository;
+import com.cameleer.server.app.storage.PostgresEnvironmentRepository;
+import com.cameleer.server.core.runtime.AppRepository;
+import com.cameleer.server.core.runtime.AppService;
+import com.cameleer.server.core.runtime.AppVersionRepository;
+import com.cameleer.server.core.runtime.DeploymentRepository;
+import com.cameleer.server.core.runtime.DeploymentService;
+import com.cameleer.server.core.runtime.EnvironmentRepository;
+import com.cameleer.server.core.runtime.EnvironmentService;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/SearchBeanConfig.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/config/SearchBeanConfig.java
similarity index 64%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/SearchBeanConfig.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/config/SearchBeanConfig.java
index e722f0a8..c42917e5 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/SearchBeanConfig.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/config/SearchBeanConfig.java
@@ -1,8 +1,8 @@
-package com.cameleer3.server.app.config;
+package com.cameleer.server.app.config;
-import com.cameleer3.server.core.search.SearchService;
-import com.cameleer3.server.core.storage.SearchIndex;
-import com.cameleer3.server.core.storage.StatsStore;
+import com.cameleer.server.core.search.SearchService;
+import com.cameleer.server.core.storage.SearchIndex;
+import com.cameleer.server.core.storage.StatsStore;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/ServerCapabilitiesHealthIndicator.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/config/ServerCapabilitiesHealthIndicator.java
similarity index 93%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/ServerCapabilitiesHealthIndicator.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/config/ServerCapabilitiesHealthIndicator.java
index 1ddd454b..b8d275b6 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/ServerCapabilitiesHealthIndicator.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/config/ServerCapabilitiesHealthIndicator.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.app.config;
+package com.cameleer.server.app.config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.actuate.health.Health;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/StorageBeanConfig.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/config/StorageBeanConfig.java
similarity index 76%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/StorageBeanConfig.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/config/StorageBeanConfig.java
index e203db2b..943f5534 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/StorageBeanConfig.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/config/StorageBeanConfig.java
@@ -1,32 +1,32 @@
-package com.cameleer3.server.app.config;
+package com.cameleer.server.app.config;
-import com.cameleer3.server.app.metrics.ServerMetrics;
-import com.cameleer3.server.app.search.ClickHouseLogStore;
-import com.cameleer3.server.app.storage.ClickHouseAgentEventRepository;
-import com.cameleer3.server.app.storage.ClickHouseUsageTracker;
-import com.cameleer3.server.app.storage.ClickHouseDiagramStore;
-import com.cameleer3.server.app.storage.ClickHouseMetricsQueryStore;
-import com.cameleer3.server.app.storage.ClickHouseMetricsStore;
-import com.cameleer3.server.app.storage.ClickHouseStatsStore;
-import com.cameleer3.server.core.admin.AuditRepository;
-import com.cameleer3.server.core.admin.AuditService;
-import com.cameleer3.server.core.agent.AgentEventRepository;
-import com.cameleer3.server.core.agent.AgentInfo;
-import com.cameleer3.server.core.agent.AgentRegistryService;
-import com.cameleer3.server.core.detail.DetailService;
-import com.cameleer3.server.core.indexing.SearchIndexer;
-import com.cameleer3.server.app.ingestion.ExecutionFlushScheduler;
-import com.cameleer3.server.app.search.ClickHouseSearchIndex;
-import com.cameleer3.server.app.storage.ClickHouseExecutionStore;
-import com.cameleer3.server.core.ingestion.BufferedLogEntry;
-import com.cameleer3.server.core.ingestion.ChunkAccumulator;
-import com.cameleer3.server.core.ingestion.IngestionService;
-import com.cameleer3.server.core.ingestion.MergedExecution;
-import com.cameleer3.server.core.ingestion.WriteBuffer;
-import com.cameleer3.server.core.storage.*;
-import com.cameleer3.server.core.storage.LogIndex;
-import com.cameleer3.server.core.storage.StatsStore;
-import com.cameleer3.server.core.storage.model.MetricsSnapshot;
+import com.cameleer.server.app.metrics.ServerMetrics;
+import com.cameleer.server.app.search.ClickHouseLogStore;
+import com.cameleer.server.app.storage.ClickHouseAgentEventRepository;
+import com.cameleer.server.app.storage.ClickHouseUsageTracker;
+import com.cameleer.server.app.storage.ClickHouseDiagramStore;
+import com.cameleer.server.app.storage.ClickHouseMetricsQueryStore;
+import com.cameleer.server.app.storage.ClickHouseMetricsStore;
+import com.cameleer.server.app.storage.ClickHouseStatsStore;
+import com.cameleer.server.core.admin.AuditRepository;
+import com.cameleer.server.core.admin.AuditService;
+import com.cameleer.server.core.agent.AgentEventRepository;
+import com.cameleer.server.core.agent.AgentInfo;
+import com.cameleer.server.core.agent.AgentRegistryService;
+import com.cameleer.server.core.detail.DetailService;
+import com.cameleer.server.core.indexing.SearchIndexer;
+import com.cameleer.server.app.ingestion.ExecutionFlushScheduler;
+import com.cameleer.server.app.search.ClickHouseSearchIndex;
+import com.cameleer.server.app.storage.ClickHouseExecutionStore;
+import com.cameleer.server.core.ingestion.BufferedLogEntry;
+import com.cameleer.server.core.ingestion.ChunkAccumulator;
+import com.cameleer.server.core.ingestion.IngestionService;
+import com.cameleer.server.core.ingestion.MergedExecution;
+import com.cameleer.server.core.ingestion.WriteBuffer;
+import com.cameleer.server.core.storage.*;
+import com.cameleer.server.core.storage.LogIndex;
+import com.cameleer.server.core.storage.StatsStore;
+import com.cameleer.server.core.storage.model.MetricsSnapshot;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
@@ -170,18 +170,18 @@ public class StorageBeanConfig {
TenantProperties tenantProperties,
@Qualifier("clickHouseJdbcTemplate") JdbcTemplate clickHouseJdbc) {
return new ClickHouseUsageTracker(tenantProperties.getId(), clickHouseJdbc,
- new com.cameleer3.server.core.ingestion.WriteBuffer<>(5000));
+ new com.cameleer.server.core.ingestion.WriteBuffer<>(5000));
}
@Bean
- public com.cameleer3.server.app.analytics.UsageTrackingInterceptor usageTrackingInterceptor(
+ public com.cameleer.server.app.analytics.UsageTrackingInterceptor usageTrackingInterceptor(
ClickHouseUsageTracker usageTracker) {
- return new com.cameleer3.server.app.analytics.UsageTrackingInterceptor(usageTracker);
+ return new com.cameleer.server.app.analytics.UsageTrackingInterceptor(usageTracker);
}
@Bean
- public com.cameleer3.server.app.analytics.UsageFlushScheduler usageFlushScheduler(
+ public com.cameleer.server.app.analytics.UsageFlushScheduler usageFlushScheduler(
ClickHouseUsageTracker usageTracker) {
- return new com.cameleer3.server.app.analytics.UsageFlushScheduler(usageTracker);
+ return new com.cameleer.server.app.analytics.UsageFlushScheduler(usageTracker);
}
}
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/TenantProperties.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/config/TenantProperties.java
similarity index 90%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/TenantProperties.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/config/TenantProperties.java
index 31752e62..476cfb70 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/TenantProperties.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/config/TenantProperties.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.app.config;
+package com.cameleer.server.app.config;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/WebConfig.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/config/WebConfig.java
similarity index 90%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/WebConfig.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/config/WebConfig.java
index 160dbe54..b99820d6 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/WebConfig.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/config/WebConfig.java
@@ -1,8 +1,8 @@
-package com.cameleer3.server.app.config;
+package com.cameleer.server.app.config;
-import com.cameleer3.server.app.analytics.UsageTrackingInterceptor;
-import com.cameleer3.server.app.interceptor.AuditInterceptor;
-import com.cameleer3.server.app.interceptor.ProtocolVersionInterceptor;
+import com.cameleer.server.app.analytics.UsageTrackingInterceptor;
+import com.cameleer.server.app.interceptor.AuditInterceptor;
+import com.cameleer.server.app.interceptor.ProtocolVersionInterceptor;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/AgentCommandController.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/AgentCommandController.java
similarity index 93%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/AgentCommandController.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/controller/AgentCommandController.java
index 336e7bc1..5f219f32 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/AgentCommandController.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/AgentCommandController.java
@@ -1,23 +1,23 @@
-package com.cameleer3.server.app.controller;
+package com.cameleer.server.app.controller;
-import com.cameleer3.server.app.agent.SseConnectionManager;
-import com.cameleer3.server.app.dto.CommandAckRequest;
-import com.cameleer3.server.app.dto.CommandBroadcastResponse;
-import com.cameleer3.server.app.dto.CommandGroupResponse;
-import com.cameleer3.server.app.dto.CommandRequest;
-import com.cameleer3.server.app.dto.CommandSingleResponse;
-import com.cameleer3.server.app.dto.ReplayRequest;
-import com.cameleer3.server.app.dto.ReplayResponse;
-import com.cameleer3.server.core.admin.AuditCategory;
-import com.cameleer3.server.core.admin.AuditResult;
-import com.cameleer3.server.core.admin.AuditService;
-import com.cameleer3.server.core.agent.AgentCommand;
-import com.cameleer3.server.core.agent.AgentEventService;
-import com.cameleer3.server.core.agent.AgentInfo;
-import com.cameleer3.server.core.agent.AgentRegistryService;
-import com.cameleer3.server.core.agent.AgentState;
-import com.cameleer3.server.core.agent.CommandReply;
-import com.cameleer3.server.core.agent.CommandType;
+import com.cameleer.server.app.agent.SseConnectionManager;
+import com.cameleer.server.app.dto.CommandAckRequest;
+import com.cameleer.server.app.dto.CommandBroadcastResponse;
+import com.cameleer.server.app.dto.CommandGroupResponse;
+import com.cameleer.server.app.dto.CommandRequest;
+import com.cameleer.server.app.dto.CommandSingleResponse;
+import com.cameleer.server.app.dto.ReplayRequest;
+import com.cameleer.server.app.dto.ReplayResponse;
+import com.cameleer.server.core.admin.AuditCategory;
+import com.cameleer.server.core.admin.AuditResult;
+import com.cameleer.server.core.admin.AuditService;
+import com.cameleer.server.core.agent.AgentCommand;
+import com.cameleer.server.core.agent.AgentEventService;
+import com.cameleer.server.core.agent.AgentInfo;
+import com.cameleer.server.core.agent.AgentRegistryService;
+import com.cameleer.server.core.agent.AgentState;
+import com.cameleer.server.core.agent.CommandReply;
+import com.cameleer.server.core.agent.CommandType;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import jakarta.servlet.http.HttpServletRequest;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/AgentEventsController.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/AgentEventsController.java
similarity index 92%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/AgentEventsController.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/controller/AgentEventsController.java
index 9bf542ad..36214d7a 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/AgentEventsController.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/AgentEventsController.java
@@ -1,7 +1,7 @@
-package com.cameleer3.server.app.controller;
+package com.cameleer.server.app.controller;
-import com.cameleer3.server.app.dto.AgentEventResponse;
-import com.cameleer3.server.core.agent.AgentEventService;
+import com.cameleer.server.app.dto.AgentEventResponse;
+import com.cameleer.server.core.agent.AgentEventService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.tags.Tag;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/AgentMetricsController.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/AgentMetricsController.java
similarity index 86%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/AgentMetricsController.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/controller/AgentMetricsController.java
index 5b1d4752..640afde6 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/AgentMetricsController.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/AgentMetricsController.java
@@ -1,9 +1,9 @@
-package com.cameleer3.server.app.controller;
+package com.cameleer.server.app.controller;
-import com.cameleer3.server.app.dto.AgentMetricsResponse;
-import com.cameleer3.server.app.dto.MetricBucket;
-import com.cameleer3.server.core.storage.MetricsQueryStore;
-import com.cameleer3.server.core.storage.model.MetricTimeSeries;
+import com.cameleer.server.app.dto.AgentMetricsResponse;
+import com.cameleer.server.app.dto.MetricBucket;
+import com.cameleer.server.core.storage.MetricsQueryStore;
+import com.cameleer.server.core.storage.model.MetricTimeSeries;
import org.springframework.web.bind.annotation.*;
import java.time.Instant;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/AgentRegistrationController.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/AgentRegistrationController.java
similarity index 93%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/AgentRegistrationController.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/controller/AgentRegistrationController.java
index e4017fdd..78798efd 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/AgentRegistrationController.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/AgentRegistrationController.java
@@ -1,26 +1,26 @@
-package com.cameleer3.server.app.controller;
+package com.cameleer.server.app.controller;
-import com.cameleer3.server.app.config.AgentRegistryConfig;
-import com.cameleer3.server.app.dto.AgentInstanceResponse;
-import com.cameleer3.server.app.dto.AgentRefreshRequest;
-import com.cameleer3.server.app.dto.AgentRefreshResponse;
-import com.cameleer3.server.app.dto.AgentRegistrationRequest;
-import com.cameleer3.server.app.dto.AgentRegistrationResponse;
-import com.cameleer3.server.app.dto.ErrorResponse;
-import com.cameleer3.common.model.HeartbeatRequest;
-import com.cameleer3.server.app.security.BootstrapTokenValidator;
-import com.cameleer3.server.app.security.JwtAuthenticationFilter;
-import com.cameleer3.server.core.admin.AuditCategory;
-import com.cameleer3.server.core.admin.AuditResult;
-import com.cameleer3.server.core.admin.AuditService;
-import com.cameleer3.server.core.agent.AgentEventService;
-import com.cameleer3.server.core.agent.AgentInfo;
-import com.cameleer3.server.core.agent.AgentRegistryService;
-import com.cameleer3.server.core.agent.AgentState;
-import com.cameleer3.server.core.agent.RouteStateRegistry;
-import com.cameleer3.server.core.security.Ed25519SigningService;
-import com.cameleer3.server.core.security.InvalidTokenException;
-import com.cameleer3.server.core.security.JwtService;
+import com.cameleer.server.app.config.AgentRegistryConfig;
+import com.cameleer.server.app.dto.AgentInstanceResponse;
+import com.cameleer.server.app.dto.AgentRefreshRequest;
+import com.cameleer.server.app.dto.AgentRefreshResponse;
+import com.cameleer.server.app.dto.AgentRegistrationRequest;
+import com.cameleer.server.app.dto.AgentRegistrationResponse;
+import com.cameleer.server.app.dto.ErrorResponse;
+import com.cameleer.common.model.HeartbeatRequest;
+import com.cameleer.server.app.security.BootstrapTokenValidator;
+import com.cameleer.server.app.security.JwtAuthenticationFilter;
+import com.cameleer.server.core.admin.AuditCategory;
+import com.cameleer.server.core.admin.AuditResult;
+import com.cameleer.server.core.admin.AuditService;
+import com.cameleer.server.core.agent.AgentEventService;
+import com.cameleer.server.core.agent.AgentInfo;
+import com.cameleer.server.core.agent.AgentRegistryService;
+import com.cameleer.server.core.agent.AgentState;
+import com.cameleer.server.core.agent.RouteStateRegistry;
+import com.cameleer.server.core.security.Ed25519SigningService;
+import com.cameleer.server.core.security.InvalidTokenException;
+import com.cameleer.server.core.security.JwtService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.media.Schema;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/AgentSseController.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/AgentSseController.java
similarity index 91%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/AgentSseController.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/controller/AgentSseController.java
index 94dd0735..d92c4fe7 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/AgentSseController.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/AgentSseController.java
@@ -1,10 +1,10 @@
-package com.cameleer3.server.app.controller;
+package com.cameleer.server.app.controller;
-import com.cameleer3.server.app.agent.SseConnectionManager;
-import com.cameleer3.server.app.security.JwtAuthenticationFilter;
-import com.cameleer3.server.core.agent.AgentInfo;
-import com.cameleer3.server.core.agent.AgentRegistryService;
-import com.cameleer3.server.core.security.JwtService;
+import com.cameleer.server.app.agent.SseConnectionManager;
+import com.cameleer.server.app.security.JwtAuthenticationFilter;
+import com.cameleer.server.core.agent.AgentInfo;
+import com.cameleer.server.core.agent.AgentRegistryService;
+import com.cameleer.server.core.security.JwtService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/ApiExceptionHandler.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/ApiExceptionHandler.java
similarity index 88%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/ApiExceptionHandler.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/controller/ApiExceptionHandler.java
index 5585f279..aba52b29 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/ApiExceptionHandler.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/ApiExceptionHandler.java
@@ -1,6 +1,6 @@
-package com.cameleer3.server.app.controller;
+package com.cameleer.server.app.controller;
-import com.cameleer3.server.app.dto.ErrorResponse;
+import com.cameleer.server.app.dto.ErrorResponse;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/AppController.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/AppController.java
similarity index 96%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/AppController.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/controller/AppController.java
index 559d32a4..3b3c778a 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/AppController.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/AppController.java
@@ -1,9 +1,9 @@
-package com.cameleer3.server.app.controller;
+package com.cameleer.server.app.controller;
-import com.cameleer3.server.core.runtime.App;
-import com.cameleer3.server.core.runtime.AppService;
-import com.cameleer3.server.core.runtime.AppVersion;
-import com.cameleer3.server.core.runtime.RuntimeType;
+import com.cameleer.server.core.runtime.App;
+import com.cameleer.server.core.runtime.AppService;
+import com.cameleer.server.core.runtime.AppVersion;
+import com.cameleer.server.core.runtime.RuntimeType;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.tags.Tag;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/AppSettingsController.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/AppSettingsController.java
similarity index 89%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/AppSettingsController.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/controller/AppSettingsController.java
index 4d5ee267..7c71b5bf 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/AppSettingsController.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/AppSettingsController.java
@@ -1,11 +1,11 @@
-package com.cameleer3.server.app.controller;
+package com.cameleer.server.app.controller;
-import com.cameleer3.server.app.dto.AppSettingsRequest;
-import com.cameleer3.server.core.admin.AppSettings;
-import com.cameleer3.server.core.admin.AppSettingsRepository;
-import com.cameleer3.server.core.admin.AuditCategory;
-import com.cameleer3.server.core.admin.AuditResult;
-import com.cameleer3.server.core.admin.AuditService;
+import com.cameleer.server.app.dto.AppSettingsRequest;
+import com.cameleer.server.core.admin.AppSettings;
+import com.cameleer.server.core.admin.AppSettingsRepository;
+import com.cameleer.server.core.admin.AuditCategory;
+import com.cameleer.server.core.admin.AuditResult;
+import com.cameleer.server.core.admin.AuditService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletRequest;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/ApplicationConfigController.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/ApplicationConfigController.java
similarity index 92%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/ApplicationConfigController.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/controller/ApplicationConfigController.java
index 29242404..503b40bb 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/ApplicationConfigController.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/ApplicationConfigController.java
@@ -1,24 +1,24 @@
-package com.cameleer3.server.app.controller;
+package com.cameleer.server.app.controller;
-import com.cameleer3.common.model.ApplicationConfig;
-import com.cameleer3.server.app.dto.AppConfigResponse;
-import com.cameleer3.server.app.dto.CommandGroupResponse;
-import com.cameleer3.server.app.dto.ConfigUpdateResponse;
-import com.cameleer3.server.app.dto.TestExpressionRequest;
-import com.cameleer3.server.app.dto.TestExpressionResponse;
-import com.cameleer3.server.app.storage.PostgresApplicationConfigRepository;
-import com.cameleer3.server.core.admin.AuditCategory;
-import com.cameleer3.server.core.admin.AuditResult;
-import com.cameleer3.server.core.admin.AuditService;
-import com.cameleer3.server.core.admin.SensitiveKeysConfig;
-import com.cameleer3.server.core.admin.SensitiveKeysMerger;
-import com.cameleer3.server.core.admin.SensitiveKeysRepository;
-import com.cameleer3.server.core.agent.AgentInfo;
-import com.cameleer3.server.core.agent.AgentRegistryService;
-import com.cameleer3.server.core.agent.AgentState;
-import com.cameleer3.server.core.agent.CommandReply;
-import com.cameleer3.server.core.agent.CommandType;
-import com.cameleer3.server.core.storage.DiagramStore;
+import com.cameleer.common.model.ApplicationConfig;
+import com.cameleer.server.app.dto.AppConfigResponse;
+import com.cameleer.server.app.dto.CommandGroupResponse;
+import com.cameleer.server.app.dto.ConfigUpdateResponse;
+import com.cameleer.server.app.dto.TestExpressionRequest;
+import com.cameleer.server.app.dto.TestExpressionResponse;
+import com.cameleer.server.app.storage.PostgresApplicationConfigRepository;
+import com.cameleer.server.core.admin.AuditCategory;
+import com.cameleer.server.core.admin.AuditResult;
+import com.cameleer.server.core.admin.AuditService;
+import com.cameleer.server.core.admin.SensitiveKeysConfig;
+import com.cameleer.server.core.admin.SensitiveKeysMerger;
+import com.cameleer.server.core.admin.SensitiveKeysRepository;
+import com.cameleer.server.core.agent.AgentInfo;
+import com.cameleer.server.core.agent.AgentRegistryService;
+import com.cameleer.server.core.agent.AgentState;
+import com.cameleer.server.core.agent.CommandReply;
+import com.cameleer.server.core.agent.CommandType;
+import com.cameleer.server.core.storage.DiagramStore;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import io.swagger.v3.oas.annotations.Operation;
@@ -203,7 +203,7 @@ public class ApplicationConfigController {
/**
* Extracts sensitiveKeys from ApplicationConfig via JsonNode to avoid compile-time
- * dependency on getSensitiveKeys() which may not be in the published cameleer3-common jar yet.
+ * dependency on getSensitiveKeys() which may not be in the published cameleer-common jar yet.
*/
private List extractSensitiveKeys(ApplicationConfig config) {
try {
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/AuditLogController.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/AuditLogController.java
similarity index 86%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/AuditLogController.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/controller/AuditLogController.java
index 92bcb7ac..edf01d48 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/AuditLogController.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/AuditLogController.java
@@ -1,12 +1,12 @@
-package com.cameleer3.server.app.controller;
+package com.cameleer.server.app.controller;
-import com.cameleer3.server.app.dto.AuditLogPageResponse;
-import com.cameleer3.server.core.admin.AuditCategory;
-import com.cameleer3.server.core.admin.AuditRepository;
-import com.cameleer3.server.core.admin.AuditRepository.AuditPage;
-import com.cameleer3.server.core.admin.AuditRepository.AuditQuery;
-import com.cameleer3.server.core.admin.AuditResult;
-import com.cameleer3.server.core.admin.AuditService;
+import com.cameleer.server.app.dto.AuditLogPageResponse;
+import com.cameleer.server.core.admin.AuditCategory;
+import com.cameleer.server.core.admin.AuditRepository;
+import com.cameleer.server.core.admin.AuditRepository.AuditPage;
+import com.cameleer.server.core.admin.AuditRepository.AuditQuery;
+import com.cameleer.server.core.admin.AuditResult;
+import com.cameleer.server.core.admin.AuditService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletRequest;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/CatalogController.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/CatalogController.java
similarity index 96%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/CatalogController.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/controller/CatalogController.java
index 09b4a134..8c0b2c1e 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/CatalogController.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/CatalogController.java
@@ -1,16 +1,16 @@
-package com.cameleer3.server.app.controller;
+package com.cameleer.server.app.controller;
-import com.cameleer3.server.app.config.TenantProperties;
-import com.cameleer3.server.app.dto.AgentSummary;
-import com.cameleer3.server.app.dto.CatalogApp;
-import com.cameleer3.server.app.dto.RouteSummary;
-import com.cameleer3.common.graph.RouteGraph;
-import com.cameleer3.server.core.agent.AgentInfo;
-import com.cameleer3.server.core.agent.AgentRegistryService;
-import com.cameleer3.server.core.agent.AgentState;
-import com.cameleer3.server.core.agent.RouteStateRegistry;
-import com.cameleer3.server.core.runtime.*;
-import com.cameleer3.server.core.storage.DiagramStore;
+import com.cameleer.server.app.config.TenantProperties;
+import com.cameleer.server.app.dto.AgentSummary;
+import com.cameleer.server.app.dto.CatalogApp;
+import com.cameleer.server.app.dto.RouteSummary;
+import com.cameleer.common.graph.RouteGraph;
+import com.cameleer.server.core.agent.AgentInfo;
+import com.cameleer.server.core.agent.AgentRegistryService;
+import com.cameleer.server.core.agent.AgentState;
+import com.cameleer.server.core.agent.RouteStateRegistry;
+import com.cameleer.server.core.runtime.*;
+import com.cameleer.server.core.storage.DiagramStore;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.tags.Tag;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/ChunkIngestionController.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/ChunkIngestionController.java
similarity index 94%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/ChunkIngestionController.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/controller/ChunkIngestionController.java
index 221c8026..a6571f9a 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/ChunkIngestionController.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/ChunkIngestionController.java
@@ -1,7 +1,7 @@
-package com.cameleer3.server.app.controller;
+package com.cameleer.server.app.controller;
-import com.cameleer3.server.core.ingestion.ChunkAccumulator;
-import com.cameleer3.common.model.ExecutionChunk;
+import com.cameleer.server.core.ingestion.ChunkAccumulator;
+import com.cameleer.common.model.ExecutionChunk;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/ClaimMappingAdminController.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/ClaimMappingAdminController.java
similarity index 96%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/ClaimMappingAdminController.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/controller/ClaimMappingAdminController.java
index 5003b04d..8543e46a 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/ClaimMappingAdminController.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/ClaimMappingAdminController.java
@@ -1,8 +1,8 @@
-package com.cameleer3.server.app.controller;
+package com.cameleer.server.app.controller;
-import com.cameleer3.server.core.rbac.ClaimMappingRepository;
-import com.cameleer3.server.core.rbac.ClaimMappingRule;
-import com.cameleer3.server.core.rbac.ClaimMappingService;
+import com.cameleer.server.core.rbac.ClaimMappingRepository;
+import com.cameleer.server.core.rbac.ClaimMappingRule;
+import com.cameleer.server.core.rbac.ClaimMappingService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.http.ResponseEntity;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/ClickHouseAdminController.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/ClickHouseAdminController.java
similarity index 94%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/ClickHouseAdminController.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/controller/ClickHouseAdminController.java
index 69cbccd5..1cc0e793 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/ClickHouseAdminController.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/ClickHouseAdminController.java
@@ -1,11 +1,11 @@
-package com.cameleer3.server.app.controller;
+package com.cameleer.server.app.controller;
-import com.cameleer3.server.app.dto.ClickHousePerformanceResponse;
-import com.cameleer3.server.app.dto.ClickHouseQueryInfo;
-import com.cameleer3.server.app.dto.ClickHouseStatusResponse;
-import com.cameleer3.server.app.dto.ClickHouseTableInfo;
-import com.cameleer3.server.app.dto.IndexerPipelineResponse;
-import com.cameleer3.server.core.indexing.SearchIndexerStats;
+import com.cameleer.server.app.dto.ClickHousePerformanceResponse;
+import com.cameleer.server.app.dto.ClickHouseQueryInfo;
+import com.cameleer.server.app.dto.ClickHouseStatusResponse;
+import com.cameleer.server.app.dto.ClickHouseTableInfo;
+import com.cameleer.server.app.dto.IndexerPipelineResponse;
+import com.cameleer.server.core.indexing.SearchIndexerStats;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.beans.factory.annotation.Qualifier;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/DatabaseAdminController.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/DatabaseAdminController.java
similarity index 93%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/DatabaseAdminController.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/controller/DatabaseAdminController.java
index b8b3eec8..4e2132b7 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/DatabaseAdminController.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/DatabaseAdminController.java
@@ -1,12 +1,12 @@
-package com.cameleer3.server.app.controller;
+package com.cameleer.server.app.controller;
-import com.cameleer3.server.app.dto.ActiveQueryResponse;
-import com.cameleer3.server.app.dto.ConnectionPoolResponse;
-import com.cameleer3.server.app.dto.DatabaseStatusResponse;
-import com.cameleer3.server.app.dto.TableSizeResponse;
-import com.cameleer3.server.core.admin.AuditCategory;
-import com.cameleer3.server.core.admin.AuditResult;
-import com.cameleer3.server.core.admin.AuditService;
+import com.cameleer.server.app.dto.ActiveQueryResponse;
+import com.cameleer.server.app.dto.ConnectionPoolResponse;
+import com.cameleer.server.app.dto.DatabaseStatusResponse;
+import com.cameleer.server.app.dto.TableSizeResponse;
+import com.cameleer.server.core.admin.AuditCategory;
+import com.cameleer.server.core.admin.AuditResult;
+import com.cameleer.server.core.admin.AuditService;
import com.zaxxer.hikari.HikariDataSource;
import com.zaxxer.hikari.HikariPoolMXBean;
import io.swagger.v3.oas.annotations.Operation;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/DeploymentController.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/DeploymentController.java
similarity index 97%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/DeploymentController.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/controller/DeploymentController.java
index 83e6fbcd..4f7a49ee 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/DeploymentController.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/DeploymentController.java
@@ -1,7 +1,7 @@
-package com.cameleer3.server.app.controller;
+package com.cameleer.server.app.controller;
-import com.cameleer3.server.app.runtime.DeploymentExecutor;
-import com.cameleer3.server.core.runtime.*;
+import com.cameleer.server.app.runtime.DeploymentExecutor;
+import com.cameleer.server.core.runtime.*;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.tags.Tag;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/DetailController.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/DetailController.java
similarity index 93%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/DetailController.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/controller/DetailController.java
index b2d198e4..ce357486 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/DetailController.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/DetailController.java
@@ -1,9 +1,9 @@
-package com.cameleer3.server.app.controller;
+package com.cameleer.server.app.controller;
-import com.cameleer3.server.core.detail.DetailService;
-import com.cameleer3.server.core.detail.ExecutionDetail;
-import com.cameleer3.server.core.storage.ExecutionStore;
-import com.cameleer3.server.core.storage.ExecutionStore.ProcessorRecord;
+import com.cameleer.server.core.detail.DetailService;
+import com.cameleer.server.core.detail.ExecutionDetail;
+import com.cameleer.server.core.storage.ExecutionStore;
+import com.cameleer.server.core.storage.ExecutionStore.ProcessorRecord;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.tags.Tag;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/DiagramController.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/DiagramController.java
similarity index 90%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/DiagramController.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/controller/DiagramController.java
index 3a447d30..14fb263a 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/DiagramController.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/DiagramController.java
@@ -1,10 +1,10 @@
-package com.cameleer3.server.app.controller;
+package com.cameleer.server.app.controller;
-import com.cameleer3.common.graph.RouteGraph;
-import com.cameleer3.server.core.agent.AgentInfo;
-import com.cameleer3.server.core.agent.AgentRegistryService;
-import com.cameleer3.server.core.ingestion.IngestionService;
-import com.cameleer3.server.core.ingestion.TaggedDiagram;
+import com.cameleer.common.graph.RouteGraph;
+import com.cameleer.server.core.agent.AgentInfo;
+import com.cameleer.server.core.agent.AgentRegistryService;
+import com.cameleer.server.core.ingestion.IngestionService;
+import com.cameleer.server.core.ingestion.TaggedDiagram;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/DiagramRenderController.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/DiagramRenderController.java
similarity index 93%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/DiagramRenderController.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/controller/DiagramRenderController.java
index ee64d282..0213155e 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/DiagramRenderController.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/DiagramRenderController.java
@@ -1,11 +1,11 @@
-package com.cameleer3.server.app.controller;
+package com.cameleer.server.app.controller;
-import com.cameleer3.common.graph.RouteGraph;
-import com.cameleer3.server.core.agent.AgentInfo;
-import com.cameleer3.server.core.agent.AgentRegistryService;
-import com.cameleer3.server.core.diagram.DiagramLayout;
-import com.cameleer3.server.core.diagram.DiagramRenderer;
-import com.cameleer3.server.core.storage.DiagramStore;
+import com.cameleer.common.graph.RouteGraph;
+import com.cameleer.server.core.agent.AgentInfo;
+import com.cameleer.server.core.agent.AgentRegistryService;
+import com.cameleer.server.core.diagram.DiagramLayout;
+import com.cameleer.server.core.diagram.DiagramRenderer;
+import com.cameleer.server.core.storage.DiagramStore;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.media.Schema;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/EnvironmentAdminController.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/EnvironmentAdminController.java
similarity index 97%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/EnvironmentAdminController.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/controller/EnvironmentAdminController.java
index d3546ec7..fbc57832 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/EnvironmentAdminController.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/EnvironmentAdminController.java
@@ -1,8 +1,8 @@
-package com.cameleer3.server.app.controller;
+package com.cameleer.server.app.controller;
-import com.cameleer3.server.core.runtime.Environment;
-import com.cameleer3.server.core.runtime.EnvironmentService;
-import com.cameleer3.server.core.runtime.RuntimeType;
+import com.cameleer.server.core.runtime.Environment;
+import com.cameleer.server.core.runtime.EnvironmentService;
+import com.cameleer.server.core.runtime.RuntimeType;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.tags.Tag;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/EventIngestionController.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/EventIngestionController.java
similarity index 93%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/EventIngestionController.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/controller/EventIngestionController.java
index 9a620ade..87de2d17 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/EventIngestionController.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/EventIngestionController.java
@@ -1,10 +1,10 @@
-package com.cameleer3.server.app.controller;
+package com.cameleer.server.app.controller;
-import com.cameleer3.common.model.AgentEvent;
-import com.cameleer3.server.core.agent.AgentEventService;
-import com.cameleer3.server.core.agent.AgentInfo;
-import com.cameleer3.server.core.agent.AgentRegistryService;
-import com.cameleer3.server.core.agent.RouteStateRegistry;
+import com.cameleer.common.model.AgentEvent;
+import com.cameleer.server.core.agent.AgentEventService;
+import com.cameleer.server.core.agent.AgentInfo;
+import com.cameleer.server.core.agent.AgentRegistryService;
+import com.cameleer.server.core.agent.RouteStateRegistry;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import io.swagger.v3.oas.annotations.Operation;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/ExecutionController.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/ExecutionController.java
similarity index 91%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/ExecutionController.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/controller/ExecutionController.java
index 9bf09a15..64294981 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/ExecutionController.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/ExecutionController.java
@@ -1,10 +1,10 @@
-package com.cameleer3.server.app.controller;
+package com.cameleer.server.app.controller;
-import com.cameleer3.common.model.RouteExecution;
-import com.cameleer3.server.core.agent.AgentInfo;
-import com.cameleer3.server.core.agent.AgentRegistryService;
-import com.cameleer3.server.core.ingestion.ChunkAccumulator;
-import com.cameleer3.server.core.ingestion.IngestionService;
+import com.cameleer.common.model.RouteExecution;
+import com.cameleer.server.core.agent.AgentInfo;
+import com.cameleer.server.core.agent.AgentRegistryService;
+import com.cameleer.server.core.ingestion.ChunkAccumulator;
+import com.cameleer.server.core.ingestion.IngestionService;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/GroupAdminController.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/GroupAdminController.java
similarity index 94%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/GroupAdminController.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/controller/GroupAdminController.java
index 045eb40e..9bd4b5ee 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/GroupAdminController.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/GroupAdminController.java
@@ -1,13 +1,13 @@
-package com.cameleer3.server.app.controller;
+package com.cameleer.server.app.controller;
-import com.cameleer3.server.core.admin.AuditCategory;
-import com.cameleer3.server.core.admin.AuditResult;
-import com.cameleer3.server.core.admin.AuditService;
-import com.cameleer3.server.core.rbac.GroupDetail;
-import com.cameleer3.server.core.rbac.GroupRepository;
-import com.cameleer3.server.core.rbac.GroupSummary;
-import com.cameleer3.server.core.rbac.RbacService;
-import com.cameleer3.server.core.rbac.SystemRole;
+import com.cameleer.server.core.admin.AuditCategory;
+import com.cameleer.server.core.admin.AuditResult;
+import com.cameleer.server.core.admin.AuditService;
+import com.cameleer.server.core.rbac.GroupDetail;
+import com.cameleer.server.core.rbac.GroupRepository;
+import com.cameleer.server.core.rbac.GroupSummary;
+import com.cameleer.server.core.rbac.RbacService;
+import com.cameleer.server.core.rbac.SystemRole;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.tags.Tag;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/LicenseAdminController.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/LicenseAdminController.java
similarity index 89%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/LicenseAdminController.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/controller/LicenseAdminController.java
index 2ecffd0e..05557017 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/LicenseAdminController.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/LicenseAdminController.java
@@ -1,8 +1,8 @@
-package com.cameleer3.server.app.controller;
+package com.cameleer.server.app.controller;
-import com.cameleer3.server.core.license.LicenseGate;
-import com.cameleer3.server.core.license.LicenseInfo;
-import com.cameleer3.server.core.license.LicenseValidator;
+import com.cameleer.server.core.license.LicenseGate;
+import com.cameleer.server.core.license.LicenseInfo;
+import com.cameleer.server.core.license.LicenseValidator;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.beans.factory.annotation.Value;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/LogIngestionController.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/LogIngestionController.java
similarity index 90%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/LogIngestionController.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/controller/LogIngestionController.java
index 073b9cd9..5690e937 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/LogIngestionController.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/LogIngestionController.java
@@ -1,18 +1,18 @@
-package com.cameleer3.server.app.controller;
+package com.cameleer.server.app.controller;
-import com.cameleer3.common.model.LogEntry;
-import com.cameleer3.server.app.metrics.ServerMetrics;
-import com.cameleer3.server.app.security.JwtAuthenticationFilter;
-import com.cameleer3.server.core.ingestion.BufferedLogEntry;
+import com.cameleer.common.model.LogEntry;
+import com.cameleer.server.app.metrics.ServerMetrics;
+import com.cameleer.server.app.security.JwtAuthenticationFilter;
+import com.cameleer.server.core.ingestion.BufferedLogEntry;
import java.util.List;
-import com.cameleer3.server.core.ingestion.WriteBuffer;
-import com.cameleer3.server.core.agent.AgentInfo;
-import com.cameleer3.server.core.agent.AgentRegistryService;
-import com.cameleer3.server.core.security.JwtService.JwtValidationResult;
+import com.cameleer.server.core.ingestion.WriteBuffer;
+import com.cameleer.server.core.agent.AgentInfo;
+import com.cameleer.server.core.agent.AgentRegistryService;
+import com.cameleer.server.core.security.JwtService.JwtValidationResult;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.tags.Tag;
-import com.cameleer3.server.app.config.TenantProperties;
+import com.cameleer.server.app.config.TenantProperties;
import jakarta.servlet.http.HttpServletRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/LogQueryController.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/LogQueryController.java
similarity index 91%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/LogQueryController.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/controller/LogQueryController.java
index 46ff9100..1fb6890e 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/LogQueryController.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/LogQueryController.java
@@ -1,10 +1,10 @@
-package com.cameleer3.server.app.controller;
+package com.cameleer.server.app.controller;
-import com.cameleer3.server.app.dto.LogEntryResponse;
-import com.cameleer3.server.app.dto.LogSearchPageResponse;
-import com.cameleer3.server.core.search.LogSearchRequest;
-import com.cameleer3.server.core.search.LogSearchResponse;
-import com.cameleer3.server.core.storage.LogIndex;
+import com.cameleer.server.app.dto.LogEntryResponse;
+import com.cameleer.server.app.dto.LogSearchPageResponse;
+import com.cameleer.server.core.search.LogSearchRequest;
+import com.cameleer.server.core.search.LogSearchResponse;
+import com.cameleer.server.core.storage.LogIndex;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.http.ResponseEntity;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/MetricsController.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/MetricsController.java
similarity index 94%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/MetricsController.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/controller/MetricsController.java
index 203cb56d..f3c969d8 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/MetricsController.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/MetricsController.java
@@ -1,7 +1,7 @@
-package com.cameleer3.server.app.controller;
+package com.cameleer.server.app.controller;
-import com.cameleer3.server.core.ingestion.IngestionService;
-import com.cameleer3.server.core.storage.model.MetricsSnapshot;
+import com.cameleer.server.core.ingestion.IngestionService;
+import com.cameleer.server.core.storage.model.MetricsSnapshot;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/OidcConfigAdminController.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/OidcConfigAdminController.java
similarity index 92%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/OidcConfigAdminController.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/controller/OidcConfigAdminController.java
index 4eb7a427..a82c61d0 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/OidcConfigAdminController.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/OidcConfigAdminController.java
@@ -1,15 +1,15 @@
-package com.cameleer3.server.app.controller;
+package com.cameleer.server.app.controller;
-import com.cameleer3.server.app.dto.ErrorResponse;
-import com.cameleer3.server.app.dto.OidcAdminConfigRequest;
-import com.cameleer3.server.app.dto.OidcAdminConfigResponse;
-import com.cameleer3.server.app.dto.OidcTestResult;
-import com.cameleer3.server.app.security.OidcTokenExchanger;
-import com.cameleer3.server.core.admin.AuditCategory;
-import com.cameleer3.server.core.admin.AuditResult;
-import com.cameleer3.server.core.admin.AuditService;
-import com.cameleer3.server.core.security.OidcConfig;
-import com.cameleer3.server.core.security.OidcConfigRepository;
+import com.cameleer.server.app.dto.ErrorResponse;
+import com.cameleer.server.app.dto.OidcAdminConfigRequest;
+import com.cameleer.server.app.dto.OidcAdminConfigResponse;
+import com.cameleer.server.app.dto.OidcTestResult;
+import com.cameleer.server.app.security.OidcTokenExchanger;
+import com.cameleer.server.core.admin.AuditCategory;
+import com.cameleer.server.core.admin.AuditResult;
+import com.cameleer.server.core.admin.AuditService;
+import com.cameleer.server.core.security.OidcConfig;
+import com.cameleer.server.core.security.OidcConfigRepository;
import jakarta.servlet.http.HttpServletRequest;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.media.Content;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/RbacStatsController.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/RbacStatsController.java
similarity index 88%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/RbacStatsController.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/controller/RbacStatsController.java
index cd325d15..844dff77 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/RbacStatsController.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/RbacStatsController.java
@@ -1,7 +1,7 @@
-package com.cameleer3.server.app.controller;
+package com.cameleer.server.app.controller;
-import com.cameleer3.server.core.rbac.RbacService;
-import com.cameleer3.server.core.rbac.RbacStats;
+import com.cameleer.server.core.rbac.RbacService;
+import com.cameleer.server.core.rbac.RbacStats;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.tags.Tag;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/RoleAdminController.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/RoleAdminController.java
similarity index 93%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/RoleAdminController.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/controller/RoleAdminController.java
index cf365812..ec627220 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/RoleAdminController.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/RoleAdminController.java
@@ -1,11 +1,11 @@
-package com.cameleer3.server.app.controller;
+package com.cameleer.server.app.controller;
-import com.cameleer3.server.core.admin.AuditCategory;
-import com.cameleer3.server.core.admin.AuditResult;
-import com.cameleer3.server.core.admin.AuditService;
-import com.cameleer3.server.core.rbac.RoleDetail;
-import com.cameleer3.server.core.rbac.RoleRepository;
-import com.cameleer3.server.core.rbac.SystemRole;
+import com.cameleer.server.core.admin.AuditCategory;
+import com.cameleer.server.core.admin.AuditResult;
+import com.cameleer.server.core.admin.AuditService;
+import com.cameleer.server.core.rbac.RoleDetail;
+import com.cameleer.server.core.rbac.RoleRepository;
+import com.cameleer.server.core.rbac.SystemRole;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.tags.Tag;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/RouteCatalogController.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/RouteCatalogController.java
similarity index 94%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/RouteCatalogController.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/controller/RouteCatalogController.java
index 52cc8c14..847900b2 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/RouteCatalogController.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/RouteCatalogController.java
@@ -1,15 +1,15 @@
-package com.cameleer3.server.app.controller;
+package com.cameleer.server.app.controller;
-import com.cameleer3.server.app.dto.AgentSummary;
-import com.cameleer3.server.app.dto.AppCatalogEntry;
-import com.cameleer3.server.app.dto.RouteSummary;
-import com.cameleer3.common.graph.RouteGraph;
-import com.cameleer3.server.core.agent.AgentInfo;
-import com.cameleer3.server.core.agent.AgentRegistryService;
-import com.cameleer3.server.core.agent.AgentState;
-import com.cameleer3.server.core.agent.RouteStateRegistry;
-import com.cameleer3.server.core.storage.DiagramStore;
-import com.cameleer3.server.core.storage.StatsStore;
+import com.cameleer.server.app.dto.AgentSummary;
+import com.cameleer.server.app.dto.AppCatalogEntry;
+import com.cameleer.server.app.dto.RouteSummary;
+import com.cameleer.common.graph.RouteGraph;
+import com.cameleer.server.core.agent.AgentInfo;
+import com.cameleer.server.core.agent.AgentRegistryService;
+import com.cameleer.server.core.agent.AgentState;
+import com.cameleer.server.core.agent.RouteStateRegistry;
+import com.cameleer.server.core.storage.DiagramStore;
+import com.cameleer.server.core.storage.StatsStore;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.tags.Tag;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/RouteMetricsController.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/RouteMetricsController.java
similarity index 97%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/RouteMetricsController.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/controller/RouteMetricsController.java
index e4aa23b8..2dc552df 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/RouteMetricsController.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/RouteMetricsController.java
@@ -1,10 +1,10 @@
-package com.cameleer3.server.app.controller;
+package com.cameleer.server.app.controller;
-import com.cameleer3.server.app.dto.ProcessorMetrics;
-import com.cameleer3.server.app.dto.RouteMetrics;
-import com.cameleer3.server.core.admin.AppSettings;
-import com.cameleer3.server.core.admin.AppSettingsRepository;
-import com.cameleer3.server.core.storage.StatsStore;
+import com.cameleer.server.app.dto.ProcessorMetrics;
+import com.cameleer.server.app.dto.RouteMetrics;
+import com.cameleer.server.core.admin.AppSettings;
+import com.cameleer.server.core.admin.AppSettingsRepository;
+import com.cameleer.server.core.storage.StatsStore;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.tags.Tag;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/SearchController.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/SearchController.java
similarity index 93%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/SearchController.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/controller/SearchController.java
index 63780723..3f235eaa 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/SearchController.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/SearchController.java
@@ -1,17 +1,17 @@
-package com.cameleer3.server.app.controller;
+package com.cameleer.server.app.controller;
-import com.cameleer3.server.core.admin.AppSettings;
-import com.cameleer3.server.core.admin.AppSettingsRepository;
-import com.cameleer3.server.core.agent.AgentInfo;
-import com.cameleer3.server.core.agent.AgentRegistryService;
-import com.cameleer3.server.core.search.ExecutionStats;
-import com.cameleer3.server.core.search.ExecutionSummary;
-import com.cameleer3.server.core.search.SearchRequest;
-import com.cameleer3.server.core.search.SearchResult;
-import com.cameleer3.server.core.search.SearchService;
-import com.cameleer3.server.core.search.StatsTimeseries;
-import com.cameleer3.server.core.search.TopError;
-import com.cameleer3.server.core.storage.StatsStore;
+import com.cameleer.server.core.admin.AppSettings;
+import com.cameleer.server.core.admin.AppSettingsRepository;
+import com.cameleer.server.core.agent.AgentInfo;
+import com.cameleer.server.core.agent.AgentRegistryService;
+import com.cameleer.server.core.search.ExecutionStats;
+import com.cameleer.server.core.search.ExecutionSummary;
+import com.cameleer.server.core.search.SearchRequest;
+import com.cameleer.server.core.search.SearchResult;
+import com.cameleer.server.core.search.SearchService;
+import com.cameleer.server.core.search.StatsTimeseries;
+import com.cameleer.server.core.search.TopError;
+import com.cameleer.server.core.storage.StatsStore;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.http.ResponseEntity;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/SensitiveKeysAdminController.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/SensitiveKeysAdminController.java
similarity index 91%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/SensitiveKeysAdminController.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/controller/SensitiveKeysAdminController.java
index 06728e3f..6c05c87e 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/SensitiveKeysAdminController.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/SensitiveKeysAdminController.java
@@ -1,19 +1,19 @@
-package com.cameleer3.server.app.controller;
+package com.cameleer.server.app.controller;
-import com.cameleer3.common.model.ApplicationConfig;
-import com.cameleer3.server.app.dto.CommandGroupResponse;
-import com.cameleer3.server.app.dto.SensitiveKeysRequest;
-import com.cameleer3.server.app.dto.SensitiveKeysResponse;
-import com.cameleer3.server.app.storage.PostgresApplicationConfigRepository;
-import com.cameleer3.server.core.admin.AuditCategory;
-import com.cameleer3.server.core.admin.AuditResult;
-import com.cameleer3.server.core.admin.AuditService;
-import com.cameleer3.server.core.admin.SensitiveKeysConfig;
-import com.cameleer3.server.core.admin.SensitiveKeysMerger;
-import com.cameleer3.server.core.admin.SensitiveKeysRepository;
-import com.cameleer3.server.core.agent.AgentRegistryService;
-import com.cameleer3.server.core.agent.CommandReply;
-import com.cameleer3.server.core.agent.CommandType;
+import com.cameleer.common.model.ApplicationConfig;
+import com.cameleer.server.app.dto.CommandGroupResponse;
+import com.cameleer.server.app.dto.SensitiveKeysRequest;
+import com.cameleer.server.app.dto.SensitiveKeysResponse;
+import com.cameleer.server.app.storage.PostgresApplicationConfigRepository;
+import com.cameleer.server.core.admin.AuditCategory;
+import com.cameleer.server.core.admin.AuditResult;
+import com.cameleer.server.core.admin.AuditService;
+import com.cameleer.server.core.admin.SensitiveKeysConfig;
+import com.cameleer.server.core.admin.SensitiveKeysMerger;
+import com.cameleer.server.core.admin.SensitiveKeysRepository;
+import com.cameleer.server.core.agent.AgentRegistryService;
+import com.cameleer.server.core.agent.CommandReply;
+import com.cameleer.server.core.agent.CommandType;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.JsonNode;
@@ -116,7 +116,7 @@ public class SensitiveKeysAdminController {
* agents apply it as a partial config update.
*
* Per-app keys are read via JsonNode rather than ApplicationConfig.getSensitiveKeys()
- * to remain compatible with older published versions of cameleer3-common that may
+ * to remain compatible with older published versions of cameleer-common that may
* not yet include that field accessor.
*/
private CommandGroupResponse fanOutToAllAgents(List globalKeys) {
@@ -198,7 +198,7 @@ public class SensitiveKeysAdminController {
/**
* Extracts the sensitiveKeys list from an ApplicationConfig by round-tripping through
* JsonNode. This avoids a compile-time dependency on ApplicationConfig.getSensitiveKeys()
- * which may not be present in older published versions of cameleer3-common.
+ * which may not be present in older published versions of cameleer-common.
*/
private List extractSensitiveKeys(ApplicationConfig config) {
try {
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/ThresholdAdminController.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/ThresholdAdminController.java
similarity index 86%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/ThresholdAdminController.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/controller/ThresholdAdminController.java
index 56b34cac..8793305a 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/ThresholdAdminController.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/ThresholdAdminController.java
@@ -1,11 +1,11 @@
-package com.cameleer3.server.app.controller;
+package com.cameleer.server.app.controller;
-import com.cameleer3.server.app.dto.ThresholdConfigRequest;
-import com.cameleer3.server.core.admin.AuditCategory;
-import com.cameleer3.server.core.admin.AuditResult;
-import com.cameleer3.server.core.admin.AuditService;
-import com.cameleer3.server.core.admin.ThresholdConfig;
-import com.cameleer3.server.core.admin.ThresholdRepository;
+import com.cameleer.server.app.dto.ThresholdConfigRequest;
+import com.cameleer.server.core.admin.AuditCategory;
+import com.cameleer.server.core.admin.AuditResult;
+import com.cameleer.server.core.admin.AuditService;
+import com.cameleer.server.core.admin.ThresholdConfig;
+import com.cameleer.server.core.admin.ThresholdRepository;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletRequest;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/UsageAnalyticsController.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/UsageAnalyticsController.java
similarity index 92%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/UsageAnalyticsController.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/controller/UsageAnalyticsController.java
index 104cdb52..f101b57e 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/UsageAnalyticsController.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/UsageAnalyticsController.java
@@ -1,7 +1,7 @@
-package com.cameleer3.server.app.controller;
+package com.cameleer.server.app.controller;
-import com.cameleer3.server.app.storage.ClickHouseUsageTracker;
-import com.cameleer3.server.core.analytics.UsageStats;
+import com.cameleer.server.app.storage.ClickHouseUsageTracker;
+import com.cameleer.server.core.analytics.UsageStats;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/UserAdminController.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/UserAdminController.java
similarity index 94%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/UserAdminController.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/controller/UserAdminController.java
index 4fa57c40..501e4522 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/UserAdminController.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/controller/UserAdminController.java
@@ -1,15 +1,15 @@
-package com.cameleer3.server.app.controller;
+package com.cameleer.server.app.controller;
-import com.cameleer3.server.app.dto.SetPasswordRequest;
-import com.cameleer3.server.core.admin.AuditCategory;
-import com.cameleer3.server.core.admin.AuditResult;
-import com.cameleer3.server.core.admin.AuditService;
-import com.cameleer3.server.core.rbac.RbacService;
-import com.cameleer3.server.core.rbac.SystemRole;
-import com.cameleer3.server.core.rbac.UserDetail;
-import com.cameleer3.server.core.security.PasswordPolicyValidator;
-import com.cameleer3.server.core.security.UserInfo;
-import com.cameleer3.server.core.security.UserRepository;
+import com.cameleer.server.app.dto.SetPasswordRequest;
+import com.cameleer.server.core.admin.AuditCategory;
+import com.cameleer.server.core.admin.AuditResult;
+import com.cameleer.server.core.admin.AuditService;
+import com.cameleer.server.core.rbac.RbacService;
+import com.cameleer.server.core.rbac.SystemRole;
+import com.cameleer.server.core.rbac.UserDetail;
+import com.cameleer.server.core.security.PasswordPolicyValidator;
+import com.cameleer.server.core.security.UserInfo;
+import com.cameleer.server.core.security.UserRepository;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.tags.Tag;
@@ -28,7 +28,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.server.ResponseStatusException;
-import com.cameleer3.server.app.security.SecurityProperties;
+import com.cameleer.server.app.security.SecurityProperties;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import java.time.Instant;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/diagram/ElkDiagramRenderer.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/diagram/ElkDiagramRenderer.java
similarity index 99%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/diagram/ElkDiagramRenderer.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/diagram/ElkDiagramRenderer.java
index 6c846f97..c60c6bea 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/diagram/ElkDiagramRenderer.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/diagram/ElkDiagramRenderer.java
@@ -1,13 +1,13 @@
-package com.cameleer3.server.app.diagram;
+package com.cameleer.server.app.diagram;
-import com.cameleer3.common.graph.NodeType;
-import com.cameleer3.common.graph.RouteEdge;
-import com.cameleer3.common.graph.RouteGraph;
-import com.cameleer3.common.graph.RouteNode;
-import com.cameleer3.server.core.diagram.DiagramLayout;
-import com.cameleer3.server.core.diagram.DiagramRenderer;
-import com.cameleer3.server.core.diagram.PositionedEdge;
-import com.cameleer3.server.core.diagram.PositionedNode;
+import com.cameleer.common.graph.NodeType;
+import com.cameleer.common.graph.RouteEdge;
+import com.cameleer.common.graph.RouteGraph;
+import com.cameleer.common.graph.RouteNode;
+import com.cameleer.server.core.diagram.DiagramLayout;
+import com.cameleer.server.core.diagram.DiagramRenderer;
+import com.cameleer.server.core.diagram.PositionedEdge;
+import com.cameleer.server.core.diagram.PositionedNode;
import org.eclipse.elk.alg.layered.options.LayeredMetaDataProvider;
import org.eclipse.elk.alg.layered.options.NodePlacementStrategy;
import org.eclipse.elk.core.RecursiveGraphLayoutEngine;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/ActiveQueryResponse.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/ActiveQueryResponse.java
similarity index 92%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/ActiveQueryResponse.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/dto/ActiveQueryResponse.java
index 39046869..8c752af7 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/ActiveQueryResponse.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/ActiveQueryResponse.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.app.dto;
+package com.cameleer.server.app.dto;
import io.swagger.v3.oas.annotations.media.Schema;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/AgentEventResponse.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/AgentEventResponse.java
similarity index 87%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/AgentEventResponse.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/dto/AgentEventResponse.java
index 7a56b29d..be8803c7 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/AgentEventResponse.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/AgentEventResponse.java
@@ -1,6 +1,6 @@
-package com.cameleer3.server.app.dto;
+package com.cameleer.server.app.dto;
-import com.cameleer3.server.core.agent.AgentEventRecord;
+import com.cameleer.server.core.agent.AgentEventRecord;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/AgentInstanceResponse.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/AgentInstanceResponse.java
similarity index 95%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/AgentInstanceResponse.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/dto/AgentInstanceResponse.java
index 0bc85a6f..c30846b5 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/AgentInstanceResponse.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/AgentInstanceResponse.java
@@ -1,6 +1,6 @@
-package com.cameleer3.server.app.dto;
+package com.cameleer.server.app.dto;
-import com.cameleer3.server.core.agent.AgentInfo;
+import com.cameleer.server.core.agent.AgentInfo;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/AgentMetricsResponse.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/AgentMetricsResponse.java
similarity index 83%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/AgentMetricsResponse.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/dto/AgentMetricsResponse.java
index 3f3465e2..a98f1f9f 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/AgentMetricsResponse.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/AgentMetricsResponse.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.app.dto;
+package com.cameleer.server.app.dto;
import java.util.List;
import java.util.Map;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/AgentRefreshRequest.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/AgentRefreshRequest.java
similarity index 85%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/AgentRefreshRequest.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/dto/AgentRefreshRequest.java
index 29fce1eb..1414572d 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/AgentRefreshRequest.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/AgentRefreshRequest.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.app.dto;
+package com.cameleer.server.app.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/AgentRefreshResponse.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/AgentRefreshResponse.java
similarity index 87%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/AgentRefreshResponse.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/dto/AgentRefreshResponse.java
index 70b16476..0870440b 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/AgentRefreshResponse.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/AgentRefreshResponse.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.app.dto;
+package com.cameleer.server.app.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/AgentRegistrationRequest.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/AgentRegistrationRequest.java
similarity index 92%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/AgentRegistrationRequest.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/dto/AgentRegistrationRequest.java
index 0e4569bc..1e1ba1f9 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/AgentRegistrationRequest.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/AgentRegistrationRequest.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.app.dto;
+package com.cameleer.server.app.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/AgentRegistrationResponse.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/AgentRegistrationResponse.java
similarity index 92%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/AgentRegistrationResponse.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/dto/AgentRegistrationResponse.java
index 498fc430..be518152 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/AgentRegistrationResponse.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/AgentRegistrationResponse.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.app.dto;
+package com.cameleer.server.app.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/AgentSummary.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/AgentSummary.java
similarity index 89%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/AgentSummary.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/dto/AgentSummary.java
index 89e88a95..a20b1a40 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/AgentSummary.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/AgentSummary.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.app.dto;
+package com.cameleer.server.app.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/AppCatalogEntry.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/AppCatalogEntry.java
similarity index 92%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/AppCatalogEntry.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/dto/AppCatalogEntry.java
index 4393be78..a4baf93d 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/AppCatalogEntry.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/AppCatalogEntry.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.app.dto;
+package com.cameleer.server.app.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/AppConfigResponse.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/AppConfigResponse.java
similarity index 74%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/AppConfigResponse.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/dto/AppConfigResponse.java
index b1898f1a..1c60c9f5 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/AppConfigResponse.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/AppConfigResponse.java
@@ -1,6 +1,6 @@
-package com.cameleer3.server.app.dto;
+package com.cameleer.server.app.dto;
-import com.cameleer3.common.model.ApplicationConfig;
+import com.cameleer.common.model.ApplicationConfig;
import java.util.List;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/AppSettingsRequest.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/AppSettingsRequest.java
similarity index 95%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/AppSettingsRequest.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/dto/AppSettingsRequest.java
index 630b8b16..47846288 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/AppSettingsRequest.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/AppSettingsRequest.java
@@ -1,6 +1,6 @@
-package com.cameleer3.server.app.dto;
+package com.cameleer.server.app.dto;
-import com.cameleer3.server.core.admin.AppSettings;
+import com.cameleer.server.core.admin.AppSettings;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.Max;
import jakarta.validation.constraints.Min;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/AuditLogPageResponse.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/AuditLogPageResponse.java
similarity index 85%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/AuditLogPageResponse.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/dto/AuditLogPageResponse.java
index b1b1ea58..91b08d4b 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/AuditLogPageResponse.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/AuditLogPageResponse.java
@@ -1,6 +1,6 @@
-package com.cameleer3.server.app.dto;
+package com.cameleer.server.app.dto;
-import com.cameleer3.server.core.admin.AuditRecord;
+import com.cameleer.server.core.admin.AuditRecord;
import io.swagger.v3.oas.annotations.media.Schema;
import java.util.List;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/AuthTokenResponse.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/AuthTokenResponse.java
similarity index 91%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/AuthTokenResponse.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/dto/AuthTokenResponse.java
index fe327cf2..e94c2a16 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/AuthTokenResponse.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/AuthTokenResponse.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.app.dto;
+package com.cameleer.server.app.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/CatalogApp.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/CatalogApp.java
similarity index 97%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/CatalogApp.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/dto/CatalogApp.java
index 2d45d63a..d2a02531 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/CatalogApp.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/CatalogApp.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.app.dto;
+package com.cameleer.server.app.dto;
import io.swagger.v3.oas.annotations.media.Schema;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/ClickHousePerformanceResponse.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/ClickHousePerformanceResponse.java
similarity index 90%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/ClickHousePerformanceResponse.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/dto/ClickHousePerformanceResponse.java
index bd9d34fd..88d02a51 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/ClickHousePerformanceResponse.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/ClickHousePerformanceResponse.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.app.dto;
+package com.cameleer.server.app.dto;
import io.swagger.v3.oas.annotations.media.Schema;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/ClickHouseQueryInfo.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/ClickHouseQueryInfo.java
similarity index 87%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/ClickHouseQueryInfo.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/dto/ClickHouseQueryInfo.java
index d92595f9..bc09a07b 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/ClickHouseQueryInfo.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/ClickHouseQueryInfo.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.app.dto;
+package com.cameleer.server.app.dto;
import io.swagger.v3.oas.annotations.media.Schema;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/ClickHouseStatusResponse.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/ClickHouseStatusResponse.java
similarity index 86%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/ClickHouseStatusResponse.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/dto/ClickHouseStatusResponse.java
index 863c47de..2c85c065 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/ClickHouseStatusResponse.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/ClickHouseStatusResponse.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.app.dto;
+package com.cameleer.server.app.dto;
import io.swagger.v3.oas.annotations.media.Schema;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/ClickHouseTableInfo.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/ClickHouseTableInfo.java
similarity index 88%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/ClickHouseTableInfo.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/dto/ClickHouseTableInfo.java
index b64adeaf..9dfc3015 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/ClickHouseTableInfo.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/ClickHouseTableInfo.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.app.dto;
+package com.cameleer.server.app.dto;
import io.swagger.v3.oas.annotations.media.Schema;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/CommandAckRequest.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/CommandAckRequest.java
similarity index 91%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/CommandAckRequest.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/dto/CommandAckRequest.java
index 2e420b11..a3c69ce6 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/CommandAckRequest.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/CommandAckRequest.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.app.dto;
+package com.cameleer.server.app.dto;
/**
* Request body for command acknowledgment from agents.
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/CommandBroadcastResponse.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/CommandBroadcastResponse.java
similarity index 89%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/CommandBroadcastResponse.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/dto/CommandBroadcastResponse.java
index 9262735d..9abf8126 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/CommandBroadcastResponse.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/CommandBroadcastResponse.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.app.dto;
+package com.cameleer.server.app.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/CommandGroupResponse.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/CommandGroupResponse.java
similarity index 87%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/CommandGroupResponse.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/dto/CommandGroupResponse.java
index 82a524e3..b1790a21 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/CommandGroupResponse.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/CommandGroupResponse.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.app.dto;
+package com.cameleer.server.app.dto;
import java.util.List;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/CommandRequest.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/CommandRequest.java
similarity index 90%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/CommandRequest.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/dto/CommandRequest.java
index b870662c..544f2745 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/CommandRequest.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/CommandRequest.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.app.dto;
+package com.cameleer.server.app.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/CommandSingleResponse.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/CommandSingleResponse.java
similarity index 88%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/CommandSingleResponse.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/dto/CommandSingleResponse.java
index a2773754..b540d835 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/CommandSingleResponse.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/CommandSingleResponse.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.app.dto;
+package com.cameleer.server.app.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/ConfigUpdateResponse.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/ConfigUpdateResponse.java
similarity index 54%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/ConfigUpdateResponse.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/dto/ConfigUpdateResponse.java
index c55f516f..e4bf4dfc 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/ConfigUpdateResponse.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/ConfigUpdateResponse.java
@@ -1,6 +1,6 @@
-package com.cameleer3.server.app.dto;
+package com.cameleer.server.app.dto;
-import com.cameleer3.common.model.ApplicationConfig;
+import com.cameleer.common.model.ApplicationConfig;
public record ConfigUpdateResponse(
ApplicationConfig config,
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/ConnectionPoolResponse.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/ConnectionPoolResponse.java
similarity index 93%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/ConnectionPoolResponse.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/dto/ConnectionPoolResponse.java
index cc3f0b60..b35ded75 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/ConnectionPoolResponse.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/ConnectionPoolResponse.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.app.dto;
+package com.cameleer.server.app.dto;
import io.swagger.v3.oas.annotations.media.Schema;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/DatabaseStatusResponse.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/DatabaseStatusResponse.java
similarity index 92%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/DatabaseStatusResponse.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/dto/DatabaseStatusResponse.java
index 153a2cac..09b55389 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/DatabaseStatusResponse.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/DatabaseStatusResponse.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.app.dto;
+package com.cameleer.server.app.dto;
import io.swagger.v3.oas.annotations.media.Schema;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/ErrorResponse.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/ErrorResponse.java
similarity index 83%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/ErrorResponse.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/dto/ErrorResponse.java
index a9ede4c9..dd70e1bf 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/ErrorResponse.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/ErrorResponse.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.app.dto;
+package com.cameleer.server.app.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/IndexerPipelineResponse.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/IndexerPipelineResponse.java
similarity index 90%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/IndexerPipelineResponse.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/dto/IndexerPipelineResponse.java
index eb7d25da..ae9126fb 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/IndexerPipelineResponse.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/IndexerPipelineResponse.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.app.dto;
+package com.cameleer.server.app.dto;
import io.swagger.v3.oas.annotations.media.Schema;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/LogEntryResponse.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/LogEntryResponse.java
similarity index 96%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/LogEntryResponse.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/dto/LogEntryResponse.java
index 17ba4eda..5ebdfacb 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/LogEntryResponse.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/LogEntryResponse.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.app.dto;
+package com.cameleer.server.app.dto;
import io.swagger.v3.oas.annotations.media.Schema;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/LogSearchPageResponse.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/LogSearchPageResponse.java
similarity index 94%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/LogSearchPageResponse.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/dto/LogSearchPageResponse.java
index 4b885630..5e273527 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/LogSearchPageResponse.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/LogSearchPageResponse.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.app.dto;
+package com.cameleer.server.app.dto;
import io.swagger.v3.oas.annotations.media.Schema;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/MetricBucket.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/MetricBucket.java
similarity index 80%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/MetricBucket.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/dto/MetricBucket.java
index bbb17781..5c5f7493 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/MetricBucket.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/MetricBucket.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.app.dto;
+package com.cameleer.server.app.dto;
import java.time.Instant;
import jakarta.validation.constraints.NotNull;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/OidcAdminConfigRequest.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/OidcAdminConfigRequest.java
similarity index 92%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/OidcAdminConfigRequest.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/dto/OidcAdminConfigRequest.java
index ee45669e..b39701b0 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/OidcAdminConfigRequest.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/OidcAdminConfigRequest.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.app.dto;
+package com.cameleer.server.app.dto;
import io.swagger.v3.oas.annotations.media.Schema;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/OidcAdminConfigResponse.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/OidcAdminConfigResponse.java
similarity index 92%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/OidcAdminConfigResponse.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/dto/OidcAdminConfigResponse.java
index 404c84ee..dbcde26d 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/OidcAdminConfigResponse.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/OidcAdminConfigResponse.java
@@ -1,6 +1,6 @@
-package com.cameleer3.server.app.dto;
+package com.cameleer.server.app.dto;
-import com.cameleer3.server.core.security.OidcConfig;
+import com.cameleer.server.core.security.OidcConfig;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/OidcPublicConfigResponse.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/OidcPublicConfigResponse.java
similarity index 94%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/OidcPublicConfigResponse.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/dto/OidcPublicConfigResponse.java
index 57994375..b1375f64 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/OidcPublicConfigResponse.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/OidcPublicConfigResponse.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.app.dto;
+package com.cameleer.server.app.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/OidcTestResult.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/OidcTestResult.java
similarity index 87%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/OidcTestResult.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/dto/OidcTestResult.java
index ee0ab634..292c367e 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/OidcTestResult.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/OidcTestResult.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.app.dto;
+package com.cameleer.server.app.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/ProcessorMetrics.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/ProcessorMetrics.java
similarity index 89%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/ProcessorMetrics.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/dto/ProcessorMetrics.java
index 442e1489..48f3215b 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/ProcessorMetrics.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/ProcessorMetrics.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.app.dto;
+package com.cameleer.server.app.dto;
import jakarta.validation.constraints.NotNull;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/ReplayRequest.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/ReplayRequest.java
similarity index 94%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/ReplayRequest.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/dto/ReplayRequest.java
index 18b96cba..cc309060 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/ReplayRequest.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/ReplayRequest.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.app.dto;
+package com.cameleer.server.app.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/ReplayResponse.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/ReplayResponse.java
similarity index 91%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/ReplayResponse.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/dto/ReplayResponse.java
index c65147eb..bfc3378a 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/ReplayResponse.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/ReplayResponse.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.app.dto;
+package com.cameleer.server.app.dto;
import io.swagger.v3.oas.annotations.media.Schema;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/RouteMetrics.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/RouteMetrics.java
similarity index 93%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/RouteMetrics.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/dto/RouteMetrics.java
index bcb78f13..cddb9695 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/RouteMetrics.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/RouteMetrics.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.app.dto;
+package com.cameleer.server.app.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/RouteSummary.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/RouteSummary.java
similarity index 93%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/RouteSummary.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/dto/RouteSummary.java
index ac442369..d78d9112 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/RouteSummary.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/RouteSummary.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.app.dto;
+package com.cameleer.server.app.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/SensitiveKeysRequest.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/SensitiveKeysRequest.java
similarity index 90%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/SensitiveKeysRequest.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/dto/SensitiveKeysRequest.java
index f6d6e7b8..1ff220af 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/SensitiveKeysRequest.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/SensitiveKeysRequest.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.app.dto;
+package com.cameleer.server.app.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/SensitiveKeysResponse.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/SensitiveKeysResponse.java
similarity index 77%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/SensitiveKeysResponse.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/dto/SensitiveKeysResponse.java
index b8a63a7b..fe8dd1b6 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/SensitiveKeysResponse.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/SensitiveKeysResponse.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.app.dto;
+package com.cameleer.server.app.dto;
import java.util.List;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/SetPasswordRequest.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/SetPasswordRequest.java
similarity index 75%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/SetPasswordRequest.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/dto/SetPasswordRequest.java
index 6795575c..ce064cc2 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/SetPasswordRequest.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/SetPasswordRequest.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.app.dto;
+package com.cameleer.server.app.dto;
import jakarta.validation.constraints.NotBlank;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/TableSizeResponse.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/TableSizeResponse.java
similarity index 93%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/TableSizeResponse.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/dto/TableSizeResponse.java
index 6849b528..d6bdbdb5 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/TableSizeResponse.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/TableSizeResponse.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.app.dto;
+package com.cameleer.server.app.dto;
import io.swagger.v3.oas.annotations.media.Schema;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/TestExpressionRequest.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/TestExpressionRequest.java
similarity index 92%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/TestExpressionRequest.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/dto/TestExpressionRequest.java
index d5ba7f6d..c21207bf 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/TestExpressionRequest.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/TestExpressionRequest.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.app.dto;
+package com.cameleer.server.app.dto;
/**
* Request body for testing a tap expression against sample data via a live agent.
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/TestExpressionResponse.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/TestExpressionResponse.java
similarity index 88%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/TestExpressionResponse.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/dto/TestExpressionResponse.java
index e2e93aa3..080772ae 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/TestExpressionResponse.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/TestExpressionResponse.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.app.dto;
+package com.cameleer.server.app.dto;
/**
* Response from testing a tap expression against sample data.
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/ThresholdConfigRequest.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/ThresholdConfigRequest.java
similarity index 96%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/ThresholdConfigRequest.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/dto/ThresholdConfigRequest.java
index 5b4ac2d9..56c43e8a 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/ThresholdConfigRequest.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/dto/ThresholdConfigRequest.java
@@ -1,6 +1,6 @@
-package com.cameleer3.server.app.dto;
+package com.cameleer.server.app.dto;
-import com.cameleer3.server.core.admin.ThresholdConfig;
+import com.cameleer.server.core.admin.ThresholdConfig;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.Valid;
import jakarta.validation.constraints.Max;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/ingestion/ExecutionFlushScheduler.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/ingestion/ExecutionFlushScheduler.java
similarity index 91%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/ingestion/ExecutionFlushScheduler.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/ingestion/ExecutionFlushScheduler.java
index 4d1e341d..6353cf09 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/ingestion/ExecutionFlushScheduler.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/ingestion/ExecutionFlushScheduler.java
@@ -1,18 +1,18 @@
-package com.cameleer3.server.app.ingestion;
+package com.cameleer.server.app.ingestion;
-import com.cameleer3.server.app.config.IngestionConfig;
-import com.cameleer3.server.app.search.ClickHouseLogStore;
-import com.cameleer3.server.app.storage.ClickHouseExecutionStore;
-import com.cameleer3.server.core.ingestion.BufferedLogEntry;
-import com.cameleer3.server.core.ingestion.ChunkAccumulator;
-import com.cameleer3.server.core.ingestion.MergedExecution;
-import com.cameleer3.server.core.ingestion.WriteBuffer;
+import com.cameleer.server.app.config.IngestionConfig;
+import com.cameleer.server.app.search.ClickHouseLogStore;
+import com.cameleer.server.app.storage.ClickHouseExecutionStore;
+import com.cameleer.server.core.ingestion.BufferedLogEntry;
+import com.cameleer.server.core.ingestion.ChunkAccumulator;
+import com.cameleer.server.core.ingestion.MergedExecution;
+import com.cameleer.server.core.ingestion.WriteBuffer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.SmartLifecycle;
import org.springframework.scheduling.annotation.Scheduled;
-import com.cameleer3.server.app.metrics.ServerMetrics;
+import com.cameleer.server.app.metrics.ServerMetrics;
import java.time.Duration;
import java.util.List;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/ingestion/MetricsFlushScheduler.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/ingestion/MetricsFlushScheduler.java
similarity index 87%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/ingestion/MetricsFlushScheduler.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/ingestion/MetricsFlushScheduler.java
index 1479c762..29500a51 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/ingestion/MetricsFlushScheduler.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/ingestion/MetricsFlushScheduler.java
@@ -1,9 +1,9 @@
-package com.cameleer3.server.app.ingestion;
+package com.cameleer.server.app.ingestion;
-import com.cameleer3.server.app.config.IngestionConfig;
-import com.cameleer3.server.core.ingestion.WriteBuffer;
-import com.cameleer3.server.core.storage.MetricsStore;
-import com.cameleer3.server.core.storage.model.MetricsSnapshot;
+import com.cameleer.server.app.config.IngestionConfig;
+import com.cameleer.server.core.ingestion.WriteBuffer;
+import com.cameleer.server.core.storage.MetricsStore;
+import com.cameleer.server.core.storage.model.MetricsSnapshot;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.SmartLifecycle;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/interceptor/AuditInterceptor.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/interceptor/AuditInterceptor.java
similarity index 89%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/interceptor/AuditInterceptor.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/interceptor/AuditInterceptor.java
index 1a513dea..f1e574d8 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/interceptor/AuditInterceptor.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/interceptor/AuditInterceptor.java
@@ -1,8 +1,8 @@
-package com.cameleer3.server.app.interceptor;
+package com.cameleer.server.app.interceptor;
-import com.cameleer3.server.core.admin.AuditCategory;
-import com.cameleer3.server.core.admin.AuditResult;
-import com.cameleer3.server.core.admin.AuditService;
+import com.cameleer.server.core.admin.AuditCategory;
+import com.cameleer.server.core.admin.AuditResult;
+import com.cameleer.server.core.admin.AuditService;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Component;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/interceptor/ProtocolVersionInterceptor.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/interceptor/ProtocolVersionInterceptor.java
similarity index 97%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/interceptor/ProtocolVersionInterceptor.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/interceptor/ProtocolVersionInterceptor.java
index 9eb307fa..afe40963 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/interceptor/ProtocolVersionInterceptor.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/interceptor/ProtocolVersionInterceptor.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.app.interceptor;
+package com.cameleer.server.app.interceptor;
import com.fasterxml.jackson.databind.ObjectMapper;
import jakarta.servlet.http.HttpServletRequest;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/metrics/ServerMetrics.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/metrics/ServerMetrics.java
similarity index 94%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/metrics/ServerMetrics.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/metrics/ServerMetrics.java
index 534a4de2..0575c607 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/metrics/ServerMetrics.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/metrics/ServerMetrics.java
@@ -1,13 +1,13 @@
-package com.cameleer3.server.app.metrics;
+package com.cameleer.server.app.metrics;
-import com.cameleer3.server.app.agent.SseConnectionManager;
-import com.cameleer3.server.core.agent.AgentRegistryService;
-import com.cameleer3.server.core.agent.AgentState;
-import com.cameleer3.server.core.ingestion.BufferedLogEntry;
-import com.cameleer3.server.core.ingestion.ChunkAccumulator;
-import com.cameleer3.server.core.ingestion.MergedExecution;
-import com.cameleer3.server.core.ingestion.WriteBuffer;
-import com.cameleer3.server.core.storage.model.MetricsSnapshot;
+import com.cameleer.server.app.agent.SseConnectionManager;
+import com.cameleer.server.core.agent.AgentRegistryService;
+import com.cameleer.server.core.agent.AgentState;
+import com.cameleer.server.core.ingestion.BufferedLogEntry;
+import com.cameleer.server.core.ingestion.ChunkAccumulator;
+import com.cameleer.server.core.ingestion.MergedExecution;
+import com.cameleer.server.core.ingestion.WriteBuffer;
+import com.cameleer.server.core.storage.model.MetricsSnapshot;
import io.micrometer.core.instrument.Counter;
import io.micrometer.core.instrument.Gauge;
import io.micrometer.core.instrument.MeterRegistry;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/rbac/RbacServiceImpl.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/rbac/RbacServiceImpl.java
similarity index 95%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/rbac/RbacServiceImpl.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/rbac/RbacServiceImpl.java
index 1e81a7d6..32bbfbc6 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/rbac/RbacServiceImpl.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/rbac/RbacServiceImpl.java
@@ -1,15 +1,15 @@
-package com.cameleer3.server.app.rbac;
+package com.cameleer.server.app.rbac;
-import com.cameleer3.server.core.rbac.GroupRepository;
-import com.cameleer3.server.core.rbac.GroupSummary;
-import com.cameleer3.server.core.rbac.RbacService;
-import com.cameleer3.server.core.rbac.RbacStats;
-import com.cameleer3.server.core.rbac.RoleSummary;
-import com.cameleer3.server.core.rbac.SystemRole;
-import com.cameleer3.server.core.rbac.UserDetail;
-import com.cameleer3.server.core.rbac.UserSummary;
-import com.cameleer3.server.core.security.UserInfo;
-import com.cameleer3.server.core.security.UserRepository;
+import com.cameleer.server.core.rbac.GroupRepository;
+import com.cameleer.server.core.rbac.GroupSummary;
+import com.cameleer.server.core.rbac.RbacService;
+import com.cameleer.server.core.rbac.RbacStats;
+import com.cameleer.server.core.rbac.RoleSummary;
+import com.cameleer.server.core.rbac.SystemRole;
+import com.cameleer.server.core.rbac.UserDetail;
+import com.cameleer.server.core.rbac.UserSummary;
+import com.cameleer.server.core.security.UserInfo;
+import com.cameleer.server.core.security.UserRepository;
import org.springframework.http.HttpStatus;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/retention/JarRetentionJob.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/retention/JarRetentionJob.java
similarity index 97%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/retention/JarRetentionJob.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/retention/JarRetentionJob.java
index d39d9744..bbaeed83 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/retention/JarRetentionJob.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/retention/JarRetentionJob.java
@@ -1,6 +1,6 @@
-package com.cameleer3.server.app.retention;
+package com.cameleer.server.app.retention;
-import com.cameleer3.server.core.runtime.*;
+import com.cameleer.server.core.runtime.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.scheduling.annotation.Scheduled;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/ContainerLogForwarder.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/runtime/ContainerLogForwarder.java
similarity index 97%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/ContainerLogForwarder.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/runtime/ContainerLogForwarder.java
index 720144df..a0caad2d 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/ContainerLogForwarder.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/runtime/ContainerLogForwarder.java
@@ -1,8 +1,8 @@
-package com.cameleer3.server.app.runtime;
+package com.cameleer.server.app.runtime;
-import com.cameleer3.common.model.LogEntry;
-import com.cameleer3.server.app.search.ClickHouseLogStore;
-import com.cameleer3.server.core.ingestion.BufferedLogEntry;
+import com.cameleer.common.model.LogEntry;
+import com.cameleer.server.app.search.ClickHouseLogStore;
+import com.cameleer.server.core.ingestion.BufferedLogEntry;
import com.github.dockerjava.api.DockerClient;
import com.github.dockerjava.api.async.ResultCallback;
import com.github.dockerjava.api.model.Frame;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/DeploymentExecutor.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/runtime/DeploymentExecutor.java
similarity index 98%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/DeploymentExecutor.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/runtime/DeploymentExecutor.java
index f73c7f03..6104c9f5 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/DeploymentExecutor.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/runtime/DeploymentExecutor.java
@@ -1,8 +1,8 @@
-package com.cameleer3.server.app.runtime;
+package com.cameleer.server.app.runtime;
-import com.cameleer3.server.app.metrics.ServerMetrics;
-import com.cameleer3.server.app.storage.PostgresDeploymentRepository;
-import com.cameleer3.server.core.runtime.*;
+import com.cameleer.server.app.metrics.ServerMetrics;
+import com.cameleer.server.app.storage.PostgresDeploymentRepository;
+import com.cameleer.server.core.runtime.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -97,7 +97,7 @@ public class DeploymentExecutor {
globalCpuShares,
globalRoutingMode,
globalRoutingDomain,
- globalServerUrl.isBlank() ? "http://cameleer3-server:8081" : globalServerUrl
+ globalServerUrl.isBlank() ? "http://cameleer-server:8081" : globalServerUrl
);
ResolvedContainerConfig config = ConfigMerger.resolve(
globalDefaults, env.defaultContainerConfig(), app.containerConfig());
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/DisabledRuntimeOrchestrator.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/runtime/DisabledRuntimeOrchestrator.java
similarity index 81%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/DisabledRuntimeOrchestrator.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/runtime/DisabledRuntimeOrchestrator.java
index 8a434c83..e4c978a1 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/DisabledRuntimeOrchestrator.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/runtime/DisabledRuntimeOrchestrator.java
@@ -1,8 +1,8 @@
-package com.cameleer3.server.app.runtime;
+package com.cameleer.server.app.runtime;
-import com.cameleer3.server.core.runtime.ContainerRequest;
-import com.cameleer3.server.core.runtime.ContainerStatus;
-import com.cameleer3.server.core.runtime.RuntimeOrchestrator;
+import com.cameleer.server.core.runtime.ContainerRequest;
+import com.cameleer.server.core.runtime.ContainerStatus;
+import com.cameleer.server.core.runtime.RuntimeOrchestrator;
import java.util.stream.Stream;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/DockerEventMonitor.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/runtime/DockerEventMonitor.java
similarity index 95%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/DockerEventMonitor.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/runtime/DockerEventMonitor.java
index 9adeb34a..776e0644 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/DockerEventMonitor.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/runtime/DockerEventMonitor.java
@@ -1,10 +1,10 @@
-package com.cameleer3.server.app.runtime;
+package com.cameleer.server.app.runtime;
-import com.cameleer3.server.app.storage.PostgresDeploymentRepository;
-import com.cameleer3.server.core.runtime.ContainerStatus;
-import com.cameleer3.server.core.runtime.Deployment;
-import com.cameleer3.server.core.runtime.DeploymentStatus;
-import com.cameleer3.server.core.runtime.RuntimeOrchestrator;
+import com.cameleer.server.app.storage.PostgresDeploymentRepository;
+import com.cameleer.server.core.runtime.ContainerStatus;
+import com.cameleer.server.core.runtime.Deployment;
+import com.cameleer.server.core.runtime.DeploymentStatus;
+import com.cameleer.server.core.runtime.RuntimeOrchestrator;
import com.github.dockerjava.api.DockerClient;
import com.github.dockerjava.api.async.ResultCallback;
import com.github.dockerjava.api.model.Event;
@@ -68,7 +68,7 @@ public class DockerEventMonitor {
if (containerId == null) return;
Map labels = event.getActor() != null ? event.getActor().getAttributes() : null;
- if (labels == null || !"cameleer3-server".equals(labels.get("managed-by"))) return;
+ if (labels == null || !"cameleer-server".equals(labels.get("managed-by"))) return;
String action = event.getAction();
log.debug("Docker event: {} for container {} ({})", action, containerId.substring(0, 12),
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/DockerNetworkManager.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/runtime/DockerNetworkManager.java
similarity index 98%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/DockerNetworkManager.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/runtime/DockerNetworkManager.java
index 6647f63c..cfc22b11 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/DockerNetworkManager.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/runtime/DockerNetworkManager.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.app.runtime;
+package com.cameleer.server.app.runtime;
import com.github.dockerjava.api.DockerClient;
import com.github.dockerjava.api.model.Network;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/DockerRuntimeOrchestrator.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/runtime/DockerRuntimeOrchestrator.java
similarity index 96%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/DockerRuntimeOrchestrator.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/runtime/DockerRuntimeOrchestrator.java
index 7701243c..80648ae1 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/DockerRuntimeOrchestrator.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/runtime/DockerRuntimeOrchestrator.java
@@ -1,8 +1,8 @@
-package com.cameleer3.server.app.runtime;
+package com.cameleer.server.app.runtime;
-import com.cameleer3.server.core.runtime.ContainerRequest;
-import com.cameleer3.server.core.runtime.ContainerStatus;
-import com.cameleer3.server.core.runtime.RuntimeOrchestrator;
+import com.cameleer.server.core.runtime.ContainerRequest;
+import com.cameleer.server.core.runtime.ContainerStatus;
+import com.cameleer.server.core.runtime.RuntimeOrchestrator;
import com.github.dockerjava.api.DockerClient;
import com.github.dockerjava.api.async.ResultCallback;
import com.github.dockerjava.api.model.AccessMode;
@@ -119,10 +119,10 @@ public class DockerRuntimeOrchestrator implements RuntimeOrchestrator {
String entrypoint = switch (request.runtimeType()) {
case "quarkus" -> "exec java -javaagent:/app/agent.jar" + customArgs + " -jar " + appJarPath;
case "plain-java" -> "exec java -javaagent:/app/agent.jar -cp " + appJarPath +
- ":/app/cameleer3-log-appender.jar" + customArgs + " " + request.mainClass();
+ ":/app/cameleer-log-appender.jar" + customArgs + " " + request.mainClass();
case "native" -> "exec " + appJarPath + customArgs;
default -> // spring-boot (default)
- "exec java -javaagent:/app/agent.jar -Dloader.path=/app/cameleer3-log-appender.jar" +
+ "exec java -javaagent:/app/agent.jar -Dloader.path=/app/cameleer-log-appender.jar" +
customArgs + " -cp " + appJarPath + " org.springframework.boot.loader.launch.PropertiesLauncher";
};
createCmd.withEntrypoint("sh", "-c", entrypoint);
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/PrometheusLabelBuilder.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/runtime/PrometheusLabelBuilder.java
similarity index 96%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/PrometheusLabelBuilder.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/runtime/PrometheusLabelBuilder.java
index abdd3a9a..2ab78ea6 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/PrometheusLabelBuilder.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/runtime/PrometheusLabelBuilder.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.app.runtime;
+package com.cameleer.server.app.runtime;
import java.util.LinkedHashMap;
import java.util.Map;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/RuntimeOrchestratorAutoConfig.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/runtime/RuntimeOrchestratorAutoConfig.java
similarity index 91%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/RuntimeOrchestratorAutoConfig.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/runtime/RuntimeOrchestratorAutoConfig.java
index bbad1145..67f7b6c2 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/RuntimeOrchestratorAutoConfig.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/runtime/RuntimeOrchestratorAutoConfig.java
@@ -1,9 +1,9 @@
-package com.cameleer3.server.app.runtime;
+package com.cameleer.server.app.runtime;
-import com.cameleer3.server.app.search.ClickHouseLogStore;
-import com.cameleer3.server.app.storage.PostgresDeploymentRepository;
-import com.cameleer3.server.core.runtime.DeploymentRepository;
-import com.cameleer3.server.core.runtime.RuntimeOrchestrator;
+import com.cameleer.server.app.search.ClickHouseLogStore;
+import com.cameleer.server.app.storage.PostgresDeploymentRepository;
+import com.cameleer.server.core.runtime.DeploymentRepository;
+import com.cameleer.server.core.runtime.RuntimeOrchestrator;
import com.github.dockerjava.api.DockerClient;
import com.github.dockerjava.core.DefaultDockerClientConfig;
import com.github.dockerjava.core.DockerClientImpl;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/TraefikLabelBuilder.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/runtime/TraefikLabelBuilder.java
similarity index 92%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/TraefikLabelBuilder.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/runtime/TraefikLabelBuilder.java
index 731f1c4e..df223813 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/TraefikLabelBuilder.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/runtime/TraefikLabelBuilder.java
@@ -1,6 +1,6 @@
-package com.cameleer3.server.app.runtime;
+package com.cameleer.server.app.runtime;
-import com.cameleer3.server.core.runtime.ResolvedContainerConfig;
+import com.cameleer.server.core.runtime.ResolvedContainerConfig;
import java.util.LinkedHashMap;
import java.util.Map;
@@ -16,7 +16,7 @@ public final class TraefikLabelBuilder {
Map labels = new LinkedHashMap<>();
labels.put("traefik.enable", "true");
- labels.put("managed-by", "cameleer3-server");
+ labels.put("managed-by", "cameleer-server");
labels.put("cameleer.tenant", tenantId);
labels.put("cameleer.app", appSlug);
labels.put("cameleer.environment", envSlug);
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/search/ClickHouseLogStore.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/search/ClickHouseLogStore.java
similarity index 96%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/search/ClickHouseLogStore.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/search/ClickHouseLogStore.java
index 1a51fd19..57895683 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/search/ClickHouseLogStore.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/search/ClickHouseLogStore.java
@@ -1,11 +1,11 @@
-package com.cameleer3.server.app.search;
+package com.cameleer.server.app.search;
-import com.cameleer3.common.model.LogEntry;
-import com.cameleer3.server.core.ingestion.BufferedLogEntry;
-import com.cameleer3.server.core.search.LogSearchRequest;
-import com.cameleer3.server.core.search.LogSearchResponse;
-import com.cameleer3.server.core.storage.LogEntryResult;
-import com.cameleer3.server.core.storage.LogIndex;
+import com.cameleer.common.model.LogEntry;
+import com.cameleer.server.core.ingestion.BufferedLogEntry;
+import com.cameleer.server.core.search.LogSearchRequest;
+import com.cameleer.server.core.search.LogSearchResponse;
+import com.cameleer.server.core.storage.LogEntryResult;
+import com.cameleer.server.core.storage.LogIndex;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.jdbc.core.JdbcTemplate;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/search/ClickHouseSearchIndex.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/search/ClickHouseSearchIndex.java
similarity index 97%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/search/ClickHouseSearchIndex.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/search/ClickHouseSearchIndex.java
index ce8bcff2..4569af5b 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/search/ClickHouseSearchIndex.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/search/ClickHouseSearchIndex.java
@@ -1,10 +1,10 @@
-package com.cameleer3.server.app.search;
+package com.cameleer.server.app.search;
-import com.cameleer3.server.core.search.ExecutionSummary;
-import com.cameleer3.server.core.search.SearchRequest;
-import com.cameleer3.server.core.search.SearchResult;
-import com.cameleer3.server.core.storage.SearchIndex;
-import com.cameleer3.server.core.storage.model.ExecutionDocument;
+import com.cameleer.server.core.search.ExecutionSummary;
+import com.cameleer.server.core.search.SearchRequest;
+import com.cameleer.server.core.search.SearchResult;
+import com.cameleer.server.core.storage.SearchIndex;
+import com.cameleer.server.core.storage.model.ExecutionDocument;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.slf4j.Logger;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/security/BootstrapTokenValidator.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/security/BootstrapTokenValidator.java
similarity index 97%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/security/BootstrapTokenValidator.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/security/BootstrapTokenValidator.java
index 7fbe52e3..b24690dd 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/security/BootstrapTokenValidator.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/security/BootstrapTokenValidator.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.app.security;
+package com.cameleer.server.app.security;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/security/Ed25519SigningServiceImpl.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/security/Ed25519SigningServiceImpl.java
similarity index 94%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/security/Ed25519SigningServiceImpl.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/security/Ed25519SigningServiceImpl.java
index d1b9240d..2d5d4225 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/security/Ed25519SigningServiceImpl.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/security/Ed25519SigningServiceImpl.java
@@ -1,6 +1,6 @@
-package com.cameleer3.server.app.security;
+package com.cameleer.server.app.security;
-import com.cameleer3.server.core.security.Ed25519SigningService;
+import com.cameleer.server.core.security.Ed25519SigningService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -27,7 +27,7 @@ import java.util.Base64;
public class Ed25519SigningServiceImpl implements Ed25519SigningService {
private static final Logger log = LoggerFactory.getLogger(Ed25519SigningServiceImpl.class);
- private static final String DERIVATION_INFO = "cameleer3-ed25519-signing";
+ private static final String DERIVATION_INFO = "cameleer-ed25519-signing";
private final PrivateKey privateKey;
private final PublicKey publicKey;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/security/InsecureTlsHelper.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/security/InsecureTlsHelper.java
similarity index 98%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/security/InsecureTlsHelper.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/security/InsecureTlsHelper.java
index 35aa33e3..567e84de 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/security/InsecureTlsHelper.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/security/InsecureTlsHelper.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.app.security;
+package com.cameleer.server.app.security;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/security/JwtAuthenticationFilter.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/security/JwtAuthenticationFilter.java
similarity index 92%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/security/JwtAuthenticationFilter.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/security/JwtAuthenticationFilter.java
index 5934a5d8..737c1b4a 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/security/JwtAuthenticationFilter.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/security/JwtAuthenticationFilter.java
@@ -1,12 +1,12 @@
-package com.cameleer3.server.app.security;
+package com.cameleer.server.app.security;
-import com.cameleer3.server.app.metrics.ServerMetrics;
-import com.cameleer3.server.core.agent.AgentRegistryService;
-import com.cameleer3.server.core.rbac.SystemRole;
-import com.cameleer3.server.core.security.JwtService;
-import com.cameleer3.server.core.security.JwtService.JwtValidationResult;
-import com.cameleer3.server.core.security.UserInfo;
-import com.cameleer3.server.core.security.UserRepository;
+import com.cameleer.server.app.metrics.ServerMetrics;
+import com.cameleer.server.core.agent.AgentRegistryService;
+import com.cameleer.server.core.rbac.SystemRole;
+import com.cameleer.server.core.security.JwtService;
+import com.cameleer.server.core.security.JwtService.JwtValidationResult;
+import com.cameleer.server.core.security.UserInfo;
+import com.cameleer.server.core.security.UserRepository;
import jakarta.servlet.FilterChain;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServletRequest;
@@ -90,7 +90,7 @@ public class JwtAuthenticationFilter extends OncePerRequestFilter {
Instant revoked = user.tokenRevokedBefore();
if (revoked != null && result.issuedAt().isBefore(revoked)) {
serverMetrics.recordAuthFailure("revoked");
- throw new com.cameleer3.server.core.security.InvalidTokenException("Token revoked");
+ throw new com.cameleer.server.core.security.InvalidTokenException("Token revoked");
}
});
}
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/security/JwtServiceImpl.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/security/JwtServiceImpl.java
similarity index 97%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/security/JwtServiceImpl.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/security/JwtServiceImpl.java
index f8cf86ae..8f7fbf4a 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/security/JwtServiceImpl.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/security/JwtServiceImpl.java
@@ -1,7 +1,7 @@
-package com.cameleer3.server.app.security;
+package com.cameleer.server.app.security;
-import com.cameleer3.server.core.security.InvalidTokenException;
-import com.cameleer3.server.core.security.JwtService;
+import com.cameleer.server.core.security.InvalidTokenException;
+import com.cameleer.server.core.security.JwtService;
import com.nimbusds.jose.JOSEException;
import com.nimbusds.jose.JWSAlgorithm;
import com.nimbusds.jose.JWSHeader;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/security/OidcAuthController.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/security/OidcAuthController.java
similarity index 92%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/security/OidcAuthController.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/security/OidcAuthController.java
index 6e480967..f37feca1 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/security/OidcAuthController.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/security/OidcAuthController.java
@@ -1,22 +1,22 @@
-package com.cameleer3.server.app.security;
+package com.cameleer.server.app.security;
-import com.cameleer3.server.app.dto.AuthTokenResponse;
-import com.cameleer3.server.app.dto.ErrorResponse;
-import com.cameleer3.server.app.dto.OidcPublicConfigResponse;
-import com.cameleer3.server.core.admin.AuditCategory;
-import com.cameleer3.server.core.admin.AuditResult;
-import com.cameleer3.server.core.admin.AuditService;
-import com.cameleer3.server.core.rbac.ClaimMappingRepository;
-import com.cameleer3.server.core.rbac.ClaimMappingRule;
-import com.cameleer3.server.core.rbac.ClaimMappingService;
-import com.cameleer3.server.core.rbac.GroupRepository;
-import com.cameleer3.server.core.rbac.RbacService;
-import com.cameleer3.server.core.rbac.SystemRole;
-import com.cameleer3.server.core.security.JwtService;
-import com.cameleer3.server.core.security.OidcConfig;
-import com.cameleer3.server.core.security.OidcConfigRepository;
-import com.cameleer3.server.core.security.UserInfo;
-import com.cameleer3.server.core.security.UserRepository;
+import com.cameleer.server.app.dto.AuthTokenResponse;
+import com.cameleer.server.app.dto.ErrorResponse;
+import com.cameleer.server.app.dto.OidcPublicConfigResponse;
+import com.cameleer.server.core.admin.AuditCategory;
+import com.cameleer.server.core.admin.AuditResult;
+import com.cameleer.server.core.admin.AuditService;
+import com.cameleer.server.core.rbac.ClaimMappingRepository;
+import com.cameleer.server.core.rbac.ClaimMappingRule;
+import com.cameleer.server.core.rbac.ClaimMappingService;
+import com.cameleer.server.core.rbac.GroupRepository;
+import com.cameleer.server.core.rbac.RbacService;
+import com.cameleer.server.core.rbac.SystemRole;
+import com.cameleer.server.core.security.JwtService;
+import com.cameleer.server.core.security.OidcConfig;
+import com.cameleer.server.core.security.OidcConfigRepository;
+import com.cameleer.server.core.security.UserInfo;
+import com.cameleer.server.core.security.UserRepository;
import jakarta.servlet.http.HttpServletRequest;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.media.Content;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/security/OidcProviderHelper.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/security/OidcProviderHelper.java
similarity index 98%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/security/OidcProviderHelper.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/security/OidcProviderHelper.java
index f912301f..83902f5e 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/security/OidcProviderHelper.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/security/OidcProviderHelper.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.app.security;
+package com.cameleer.server.app.security;
import com.nimbusds.jose.JWSAlgorithm;
import com.nimbusds.jose.jwk.source.JWKSource;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/security/OidcTokenExchanger.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/security/OidcTokenExchanger.java
similarity index 98%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/security/OidcTokenExchanger.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/security/OidcTokenExchanger.java
index 7eeabbd6..bbd34cb6 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/security/OidcTokenExchanger.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/security/OidcTokenExchanger.java
@@ -1,7 +1,7 @@
-package com.cameleer3.server.app.security;
+package com.cameleer.server.app.security;
-import com.cameleer3.server.core.security.OidcConfig;
-import com.cameleer3.server.core.security.OidcConfigRepository;
+import com.cameleer.server.core.security.OidcConfig;
+import com.cameleer.server.core.security.OidcConfigRepository;
import com.nimbusds.jose.jwk.source.JWKSource;
import com.nimbusds.jose.proc.JWSVerificationKeySelector;
import com.nimbusds.jose.proc.SecurityContext;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/security/SecurityBeanConfig.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/security/SecurityBeanConfig.java
similarity index 97%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/security/SecurityBeanConfig.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/security/SecurityBeanConfig.java
index 37924504..d9ed209b 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/security/SecurityBeanConfig.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/security/SecurityBeanConfig.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.app.security;
+package com.cameleer.server.app.security;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/security/SecurityConfig.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/security/SecurityConfig.java
similarity index 97%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/security/SecurityConfig.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/security/SecurityConfig.java
index 63f98a39..0acf9a0b 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/security/SecurityConfig.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/security/SecurityConfig.java
@@ -1,9 +1,9 @@
-package com.cameleer3.server.app.security;
+package com.cameleer.server.app.security;
-import com.cameleer3.server.app.metrics.ServerMetrics;
-import com.cameleer3.server.core.agent.AgentRegistryService;
-import com.cameleer3.server.core.security.JwtService;
-import com.cameleer3.server.core.security.UserRepository;
+import com.cameleer.server.app.metrics.ServerMetrics;
+import com.cameleer.server.core.agent.AgentRegistryService;
+import com.cameleer.server.core.security.JwtService;
+import com.cameleer.server.core.security.UserRepository;
import com.nimbusds.jose.jwk.source.JWKSource;
import com.nimbusds.jose.proc.JWSVerificationKeySelector;
import com.nimbusds.jose.proc.SecurityContext;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/security/SecurityProperties.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/security/SecurityProperties.java
similarity index 98%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/security/SecurityProperties.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/security/SecurityProperties.java
index 381883ca..85535239 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/security/SecurityProperties.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/security/SecurityProperties.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.app.security;
+package com.cameleer.server.app.security;
import org.springframework.boot.context.properties.ConfigurationProperties;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/security/UiAuthController.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/security/UiAuthController.java
similarity index 92%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/security/UiAuthController.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/security/UiAuthController.java
index 65cb4eba..e49540af 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/security/UiAuthController.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/security/UiAuthController.java
@@ -1,18 +1,18 @@
-package com.cameleer3.server.app.security;
+package com.cameleer.server.app.security;
-import com.cameleer3.server.app.dto.AuthTokenResponse;
-import com.cameleer3.server.app.dto.ErrorResponse;
-import com.cameleer3.server.core.admin.AuditCategory;
-import com.cameleer3.server.core.admin.AuditResult;
-import com.cameleer3.server.core.admin.AuditService;
-import com.cameleer3.server.core.rbac.RbacService;
-import com.cameleer3.server.core.rbac.SystemRole;
-import com.cameleer3.server.core.rbac.UserDetail;
-import com.cameleer3.server.core.security.JwtService;
+import com.cameleer.server.app.dto.AuthTokenResponse;
+import com.cameleer.server.app.dto.ErrorResponse;
+import com.cameleer.server.core.admin.AuditCategory;
+import com.cameleer.server.core.admin.AuditResult;
+import com.cameleer.server.core.admin.AuditService;
+import com.cameleer.server.core.rbac.RbacService;
+import com.cameleer.server.core.rbac.SystemRole;
+import com.cameleer.server.core.rbac.UserDetail;
+import com.cameleer.server.core.security.JwtService;
import jakarta.servlet.http.HttpServletRequest;
-import com.cameleer3.server.core.security.JwtService.JwtValidationResult;
-import com.cameleer3.server.core.security.UserInfo;
-import com.cameleer3.server.core.security.UserRepository;
+import com.cameleer.server.core.security.JwtService.JwtValidationResult;
+import com.cameleer.server.core.security.UserInfo;
+import com.cameleer.server.core.security.UserRepository;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.media.Schema;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/ClickHouseAgentEventRepository.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/storage/ClickHouseAgentEventRepository.java
similarity index 94%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/ClickHouseAgentEventRepository.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/storage/ClickHouseAgentEventRepository.java
index 8b47159a..41bbc2ab 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/ClickHouseAgentEventRepository.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/storage/ClickHouseAgentEventRepository.java
@@ -1,7 +1,7 @@
-package com.cameleer3.server.app.storage;
+package com.cameleer.server.app.storage;
-import com.cameleer3.server.core.agent.AgentEventRecord;
-import com.cameleer3.server.core.agent.AgentEventRepository;
+import com.cameleer.server.core.agent.AgentEventRecord;
+import com.cameleer.server.core.agent.AgentEventRepository;
import org.springframework.jdbc.core.JdbcTemplate;
import java.sql.Timestamp;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/ClickHouseDiagramStore.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/storage/ClickHouseDiagramStore.java
similarity index 97%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/ClickHouseDiagramStore.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/storage/ClickHouseDiagramStore.java
index 41fb0bdb..efa61017 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/ClickHouseDiagramStore.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/storage/ClickHouseDiagramStore.java
@@ -1,9 +1,9 @@
-package com.cameleer3.server.app.storage;
+package com.cameleer.server.app.storage;
-import com.cameleer3.common.graph.RouteGraph;
-import com.cameleer3.common.graph.RouteNode;
-import com.cameleer3.server.core.ingestion.TaggedDiagram;
-import com.cameleer3.server.core.storage.DiagramStore;
+import com.cameleer.common.graph.RouteGraph;
+import com.cameleer.common.graph.RouteNode;
+import com.cameleer.server.core.ingestion.TaggedDiagram;
+import com.cameleer.server.core.storage.DiagramStore;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/ClickHouseExecutionStore.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/storage/ClickHouseExecutionStore.java
similarity index 98%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/ClickHouseExecutionStore.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/storage/ClickHouseExecutionStore.java
index 4f5b837a..78eb6240 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/ClickHouseExecutionStore.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/storage/ClickHouseExecutionStore.java
@@ -1,9 +1,9 @@
-package com.cameleer3.server.app.storage;
+package com.cameleer.server.app.storage;
-import com.cameleer3.server.core.ingestion.ChunkAccumulator;
-import com.cameleer3.server.core.ingestion.MergedExecution;
-import com.cameleer3.server.core.storage.ExecutionStore;
-import com.cameleer3.common.model.FlatProcessorRecord;
+import com.cameleer.server.core.ingestion.ChunkAccumulator;
+import com.cameleer.server.core.ingestion.MergedExecution;
+import com.cameleer.server.core.storage.ExecutionStore;
+import com.cameleer.common.model.FlatProcessorRecord;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.jdbc.core.JdbcTemplate;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/ClickHouseMetricsQueryStore.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/storage/ClickHouseMetricsQueryStore.java
similarity index 96%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/ClickHouseMetricsQueryStore.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/storage/ClickHouseMetricsQueryStore.java
index 5dde1cab..68d06d88 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/ClickHouseMetricsQueryStore.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/storage/ClickHouseMetricsQueryStore.java
@@ -1,7 +1,7 @@
-package com.cameleer3.server.app.storage;
+package com.cameleer.server.app.storage;
-import com.cameleer3.server.core.storage.MetricsQueryStore;
-import com.cameleer3.server.core.storage.model.MetricTimeSeries;
+import com.cameleer.server.core.storage.MetricsQueryStore;
+import com.cameleer.server.core.storage.model.MetricTimeSeries;
import org.springframework.jdbc.core.JdbcTemplate;
import java.time.Instant;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/ClickHouseMetricsStore.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/storage/ClickHouseMetricsStore.java
similarity index 89%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/ClickHouseMetricsStore.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/storage/ClickHouseMetricsStore.java
index 48b271dc..9057b5cb 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/ClickHouseMetricsStore.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/storage/ClickHouseMetricsStore.java
@@ -1,7 +1,7 @@
-package com.cameleer3.server.app.storage;
+package com.cameleer.server.app.storage;
-import com.cameleer3.server.core.storage.MetricsStore;
-import com.cameleer3.server.core.storage.model.MetricsSnapshot;
+import com.cameleer.server.core.storage.MetricsStore;
+import com.cameleer.server.core.storage.model.MetricsSnapshot;
import org.springframework.jdbc.core.JdbcTemplate;
import java.sql.Timestamp;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/ClickHouseStatsStore.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/storage/ClickHouseStatsStore.java
similarity index 98%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/ClickHouseStatsStore.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/storage/ClickHouseStatsStore.java
index 25cb7133..9a5d27de 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/ClickHouseStatsStore.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/storage/ClickHouseStatsStore.java
@@ -1,10 +1,10 @@
-package com.cameleer3.server.app.storage;
+package com.cameleer.server.app.storage;
-import com.cameleer3.server.core.search.ExecutionStats;
-import com.cameleer3.server.core.search.StatsTimeseries;
-import com.cameleer3.server.core.search.StatsTimeseries.TimeseriesBucket;
-import com.cameleer3.server.core.search.TopError;
-import com.cameleer3.server.core.storage.StatsStore;
+import com.cameleer.server.core.search.ExecutionStats;
+import com.cameleer.server.core.search.StatsTimeseries;
+import com.cameleer.server.core.search.StatsTimeseries.TimeseriesBucket;
+import com.cameleer.server.core.search.TopError;
+import com.cameleer.server.core.storage.StatsStore;
import org.springframework.jdbc.core.JdbcTemplate;
import java.sql.Timestamp;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/ClickHouseUsageTracker.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/storage/ClickHouseUsageTracker.java
similarity index 94%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/ClickHouseUsageTracker.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/storage/ClickHouseUsageTracker.java
index efabdbc5..58c5f3bc 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/ClickHouseUsageTracker.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/storage/ClickHouseUsageTracker.java
@@ -1,9 +1,9 @@
-package com.cameleer3.server.app.storage;
+package com.cameleer.server.app.storage;
-import com.cameleer3.server.core.analytics.UsageEvent;
-import com.cameleer3.server.core.analytics.UsageStats;
-import com.cameleer3.server.core.analytics.UsageTracker;
-import com.cameleer3.server.core.ingestion.WriteBuffer;
+import com.cameleer.server.core.analytics.UsageEvent;
+import com.cameleer.server.core.analytics.UsageStats;
+import com.cameleer.server.core.analytics.UsageTracker;
+import com.cameleer.server.core.ingestion.WriteBuffer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.jdbc.core.JdbcTemplate;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresAppRepository.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresAppRepository.java
similarity index 96%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresAppRepository.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresAppRepository.java
index b963682f..cfaffdf6 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresAppRepository.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresAppRepository.java
@@ -1,7 +1,7 @@
-package com.cameleer3.server.app.storage;
+package com.cameleer.server.app.storage;
-import com.cameleer3.server.core.runtime.App;
-import com.cameleer3.server.core.runtime.AppRepository;
+import com.cameleer.server.core.runtime.App;
+import com.cameleer.server.core.runtime.AppRepository;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.jdbc.core.JdbcTemplate;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresAppSettingsRepository.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresAppSettingsRepository.java
similarity index 94%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresAppSettingsRepository.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresAppSettingsRepository.java
index ccd90d6b..2a797458 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresAppSettingsRepository.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresAppSettingsRepository.java
@@ -1,7 +1,7 @@
-package com.cameleer3.server.app.storage;
+package com.cameleer.server.app.storage;
-import com.cameleer3.server.core.admin.AppSettings;
-import com.cameleer3.server.core.admin.AppSettingsRepository;
+import com.cameleer.server.core.admin.AppSettings;
+import com.cameleer.server.core.admin.AppSettingsRepository;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Repository;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresAppVersionRepository.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresAppVersionRepository.java
similarity index 95%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresAppVersionRepository.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresAppVersionRepository.java
index 9db54f2f..a61fd556 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresAppVersionRepository.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresAppVersionRepository.java
@@ -1,7 +1,7 @@
-package com.cameleer3.server.app.storage;
+package com.cameleer.server.app.storage;
-import com.cameleer3.server.core.runtime.AppVersion;
-import com.cameleer3.server.core.runtime.AppVersionRepository;
+import com.cameleer.server.core.runtime.AppVersion;
+import com.cameleer.server.core.runtime.AppVersionRepository;
import org.springframework.jdbc.core.JdbcTemplate;
import java.sql.ResultSet;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresApplicationConfigRepository.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresApplicationConfigRepository.java
similarity index 97%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresApplicationConfigRepository.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresApplicationConfigRepository.java
index 7716190c..f850268f 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresApplicationConfigRepository.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresApplicationConfigRepository.java
@@ -1,6 +1,6 @@
-package com.cameleer3.server.app.storage;
+package com.cameleer.server.app.storage;
-import com.cameleer3.common.model.ApplicationConfig;
+import com.cameleer.common.model.ApplicationConfig;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.jdbc.core.JdbcTemplate;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresAuditRepository.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresAuditRepository.java
similarity index 95%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresAuditRepository.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresAuditRepository.java
index 351b08d3..ae4ff712 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresAuditRepository.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresAuditRepository.java
@@ -1,9 +1,9 @@
-package com.cameleer3.server.app.storage;
+package com.cameleer.server.app.storage;
-import com.cameleer3.server.core.admin.AuditCategory;
-import com.cameleer3.server.core.admin.AuditRecord;
-import com.cameleer3.server.core.admin.AuditRepository;
-import com.cameleer3.server.core.admin.AuditResult;
+import com.cameleer.server.core.admin.AuditCategory;
+import com.cameleer.server.core.admin.AuditRecord;
+import com.cameleer.server.core.admin.AuditRepository;
+import com.cameleer.server.core.admin.AuditResult;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.jdbc.core.JdbcTemplate;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresClaimMappingRepository.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresClaimMappingRepository.java
similarity index 94%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresClaimMappingRepository.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresClaimMappingRepository.java
index 89d0531a..49ead566 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresClaimMappingRepository.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresClaimMappingRepository.java
@@ -1,7 +1,7 @@
-package com.cameleer3.server.app.storage;
+package com.cameleer.server.app.storage;
-import com.cameleer3.server.core.rbac.ClaimMappingRepository;
-import com.cameleer3.server.core.rbac.ClaimMappingRule;
+import com.cameleer.server.core.rbac.ClaimMappingRepository;
+import com.cameleer.server.core.rbac.ClaimMappingRule;
import org.springframework.jdbc.core.JdbcTemplate;
import java.util.List;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresDeploymentRepository.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresDeploymentRepository.java
similarity index 97%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresDeploymentRepository.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresDeploymentRepository.java
index a478bd1c..91aa4c0a 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresDeploymentRepository.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresDeploymentRepository.java
@@ -1,8 +1,8 @@
-package com.cameleer3.server.app.storage;
+package com.cameleer.server.app.storage;
-import com.cameleer3.server.core.runtime.Deployment;
-import com.cameleer3.server.core.runtime.DeploymentRepository;
-import com.cameleer3.server.core.runtime.DeploymentStatus;
+import com.cameleer.server.core.runtime.Deployment;
+import com.cameleer.server.core.runtime.DeploymentRepository;
+import com.cameleer.server.core.runtime.DeploymentStatus;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.jdbc.core.JdbcTemplate;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresEnvironmentRepository.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresEnvironmentRepository.java
similarity index 96%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresEnvironmentRepository.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresEnvironmentRepository.java
index e2cbb042..119c8d53 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresEnvironmentRepository.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresEnvironmentRepository.java
@@ -1,7 +1,7 @@
-package com.cameleer3.server.app.storage;
+package com.cameleer.server.app.storage;
-import com.cameleer3.server.core.runtime.Environment;
-import com.cameleer3.server.core.runtime.EnvironmentRepository;
+import com.cameleer.server.core.runtime.Environment;
+import com.cameleer.server.core.runtime.EnvironmentRepository;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.jdbc.core.JdbcTemplate;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresGroupRepository.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresGroupRepository.java
similarity index 98%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresGroupRepository.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresGroupRepository.java
index 78e5cf21..7bd0a150 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresGroupRepository.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresGroupRepository.java
@@ -1,6 +1,6 @@
-package com.cameleer3.server.app.storage;
+package com.cameleer.server.app.storage;
-import com.cameleer3.server.core.rbac.*;
+import com.cameleer.server.core.rbac.*;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresOidcConfigRepository.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresOidcConfigRepository.java
similarity index 92%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresOidcConfigRepository.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresOidcConfigRepository.java
index d711d2f8..18842d5f 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresOidcConfigRepository.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresOidcConfigRepository.java
@@ -1,7 +1,7 @@
-package com.cameleer3.server.app.storage;
+package com.cameleer.server.app.storage;
-import com.cameleer3.server.core.security.OidcConfig;
-import com.cameleer3.server.core.security.OidcConfigRepository;
+import com.cameleer.server.core.security.OidcConfig;
+import com.cameleer.server.core.security.OidcConfigRepository;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.jdbc.core.JdbcTemplate;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresRoleRepository.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresRoleRepository.java
similarity index 97%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresRoleRepository.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresRoleRepository.java
index f6c0eb9b..3e7aa0d3 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresRoleRepository.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresRoleRepository.java
@@ -1,6 +1,6 @@
-package com.cameleer3.server.app.storage;
+package com.cameleer.server.app.storage;
-import com.cameleer3.server.core.rbac.*;
+import com.cameleer.server.core.rbac.*;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresSensitiveKeysRepository.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresSensitiveKeysRepository.java
similarity index 92%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresSensitiveKeysRepository.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresSensitiveKeysRepository.java
index 325cc77e..da82e5f4 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresSensitiveKeysRepository.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresSensitiveKeysRepository.java
@@ -1,7 +1,7 @@
-package com.cameleer3.server.app.storage;
+package com.cameleer.server.app.storage;
-import com.cameleer3.server.core.admin.SensitiveKeysConfig;
-import com.cameleer3.server.core.admin.SensitiveKeysRepository;
+import com.cameleer.server.core.admin.SensitiveKeysConfig;
+import com.cameleer.server.core.admin.SensitiveKeysRepository;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.jdbc.core.JdbcTemplate;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresThresholdRepository.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresThresholdRepository.java
similarity index 92%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresThresholdRepository.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresThresholdRepository.java
index fc81957a..7a8623ba 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresThresholdRepository.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresThresholdRepository.java
@@ -1,7 +1,7 @@
-package com.cameleer3.server.app.storage;
+package com.cameleer.server.app.storage;
-import com.cameleer3.server.core.admin.ThresholdConfig;
-import com.cameleer3.server.core.admin.ThresholdRepository;
+import com.cameleer.server.core.admin.ThresholdConfig;
+import com.cameleer.server.core.admin.ThresholdRepository;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.jdbc.core.JdbcTemplate;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresUserRepository.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresUserRepository.java
similarity index 96%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresUserRepository.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresUserRepository.java
index eb6848b8..64ee73a7 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresUserRepository.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresUserRepository.java
@@ -1,7 +1,7 @@
-package com.cameleer3.server.app.storage;
+package com.cameleer.server.app.storage;
-import com.cameleer3.server.core.security.UserInfo;
-import com.cameleer3.server.core.security.UserRepository;
+import com.cameleer.server.core.security.UserInfo;
+import com.cameleer.server.core.security.UserRepository;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;
diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/web/SpaForwardController.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/web/SpaForwardController.java
similarity index 94%
rename from cameleer3-server-app/src/main/java/com/cameleer3/server/app/web/SpaForwardController.java
rename to cameleer-server-app/src/main/java/com/cameleer/server/app/web/SpaForwardController.java
index 7fdd5efb..1c7a4416 100644
--- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/web/SpaForwardController.java
+++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/web/SpaForwardController.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.app.web;
+package com.cameleer.server.app.web;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
diff --git a/cameleer3-server-app/src/main/resources/application.yml b/cameleer-server-app/src/main/resources/application.yml
similarity index 96%
rename from cameleer3-server-app/src/main/resources/application.yml
rename to cameleer-server-app/src/main/resources/application.yml
index 5caefa28..d0402871 100644
--- a/cameleer3-server-app/src/main/resources/application.yml
+++ b/cameleer-server-app/src/main/resources/application.yml
@@ -7,7 +7,7 @@ spring:
max-file-size: 200MB
max-request-size: 200MB
datasource:
- url: ${SPRING_DATASOURCE_URL:jdbc:postgresql://localhost:5432/cameleer3?currentSchema=tenant_${cameleer.server.tenant.id}&ApplicationName=tenant_${cameleer.server.tenant.id}}
+ url: ${SPRING_DATASOURCE_URL:jdbc:postgresql://localhost:5432/cameleer?currentSchema=tenant_${cameleer.server.tenant.id}&ApplicationName=tenant_${cameleer.server.tenant.id}}
username: ${SPRING_DATASOURCE_USERNAME:cameleer}
password: ${SPRING_DATASOURCE_PASSWORD:cameleer_dev}
driver-class-name: org.postgresql.Driver
diff --git a/cameleer3-server-app/src/main/resources/clickhouse/init.sql b/cameleer-server-app/src/main/resources/clickhouse/init.sql
similarity index 100%
rename from cameleer3-server-app/src/main/resources/clickhouse/init.sql
rename to cameleer-server-app/src/main/resources/clickhouse/init.sql
diff --git a/cameleer3-server-app/src/main/resources/db/migration/V10__app_version_runtime_detection.sql b/cameleer-server-app/src/main/resources/db/migration/V10__app_version_runtime_detection.sql
similarity index 100%
rename from cameleer3-server-app/src/main/resources/db/migration/V10__app_version_runtime_detection.sql
rename to cameleer-server-app/src/main/resources/db/migration/V10__app_version_runtime_detection.sql
diff --git a/cameleer3-server-app/src/main/resources/db/migration/V1__init.sql b/cameleer-server-app/src/main/resources/db/migration/V1__init.sql
similarity index 98%
rename from cameleer3-server-app/src/main/resources/db/migration/V1__init.sql
rename to cameleer-server-app/src/main/resources/db/migration/V1__init.sql
index 81d8ca6f..210e2b8e 100644
--- a/cameleer3-server-app/src/main/resources/db/migration/V1__init.sql
+++ b/cameleer-server-app/src/main/resources/db/migration/V1__init.sql
@@ -1,4 +1,4 @@
--- V1__init.sql — PostgreSQL schema for Cameleer3 Server
+-- V1__init.sql — PostgreSQL schema for Cameleer Server
-- PostgreSQL stores RBAC, configuration, and audit data only.
-- All observability data (executions, metrics, diagrams, logs, stats) is in ClickHouse.
diff --git a/cameleer3-server-app/src/main/resources/db/migration/V2__claim_mapping.sql b/cameleer-server-app/src/main/resources/db/migration/V2__claim_mapping.sql
similarity index 100%
rename from cameleer3-server-app/src/main/resources/db/migration/V2__claim_mapping.sql
rename to cameleer-server-app/src/main/resources/db/migration/V2__claim_mapping.sql
diff --git a/cameleer3-server-app/src/main/resources/db/migration/V3__runtime_management.sql b/cameleer-server-app/src/main/resources/db/migration/V3__runtime_management.sql
similarity index 100%
rename from cameleer3-server-app/src/main/resources/db/migration/V3__runtime_management.sql
rename to cameleer-server-app/src/main/resources/db/migration/V3__runtime_management.sql
diff --git a/cameleer3-server-app/src/main/resources/db/migration/V4__environment_config.sql b/cameleer-server-app/src/main/resources/db/migration/V4__environment_config.sql
similarity index 100%
rename from cameleer3-server-app/src/main/resources/db/migration/V4__environment_config.sql
rename to cameleer-server-app/src/main/resources/db/migration/V4__environment_config.sql
diff --git a/cameleer3-server-app/src/main/resources/db/migration/V5__app_container_config.sql b/cameleer-server-app/src/main/resources/db/migration/V5__app_container_config.sql
similarity index 100%
rename from cameleer3-server-app/src/main/resources/db/migration/V5__app_container_config.sql
rename to cameleer-server-app/src/main/resources/db/migration/V5__app_container_config.sql
diff --git a/cameleer3-server-app/src/main/resources/db/migration/V6__jar_retention_policy.sql b/cameleer-server-app/src/main/resources/db/migration/V6__jar_retention_policy.sql
similarity index 100%
rename from cameleer3-server-app/src/main/resources/db/migration/V6__jar_retention_policy.sql
rename to cameleer-server-app/src/main/resources/db/migration/V6__jar_retention_policy.sql
diff --git a/cameleer3-server-app/src/main/resources/db/migration/V7__deployment_orchestration.sql b/cameleer-server-app/src/main/resources/db/migration/V7__deployment_orchestration.sql
similarity index 100%
rename from cameleer3-server-app/src/main/resources/db/migration/V7__deployment_orchestration.sql
rename to cameleer-server-app/src/main/resources/db/migration/V7__deployment_orchestration.sql
diff --git a/cameleer3-server-app/src/main/resources/db/migration/V8__deployment_active_config.sql b/cameleer-server-app/src/main/resources/db/migration/V8__deployment_active_config.sql
similarity index 100%
rename from cameleer3-server-app/src/main/resources/db/migration/V8__deployment_active_config.sql
rename to cameleer-server-app/src/main/resources/db/migration/V8__deployment_active_config.sql
diff --git a/cameleer3-server-app/src/main/resources/db/migration/V9__password_hardening.sql b/cameleer-server-app/src/main/resources/db/migration/V9__password_hardening.sql
similarity index 100%
rename from cameleer3-server-app/src/main/resources/db/migration/V9__password_hardening.sql
rename to cameleer-server-app/src/main/resources/db/migration/V9__password_hardening.sql
diff --git a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/.gitkeep b/cameleer-server-app/src/test/java/com/cameleer/server/app/.gitkeep
similarity index 100%
rename from cameleer3-server-app/src/test/java/com/cameleer3/server/app/.gitkeep
rename to cameleer-server-app/src/test/java/com/cameleer/server/app/.gitkeep
diff --git a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/AbstractPostgresIT.java b/cameleer-server-app/src/test/java/com/cameleer/server/app/AbstractPostgresIT.java
similarity index 96%
rename from cameleer3-server-app/src/test/java/com/cameleer3/server/app/AbstractPostgresIT.java
rename to cameleer-server-app/src/test/java/com/cameleer/server/app/AbstractPostgresIT.java
index 1db96086..e3596e81 100644
--- a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/AbstractPostgresIT.java
+++ b/cameleer-server-app/src/test/java/com/cameleer/server/app/AbstractPostgresIT.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.app;
+package com.cameleer.server.app;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@@ -19,7 +19,7 @@ public abstract class AbstractPostgresIT {
static {
postgres = new PostgreSQLContainer<>("postgres:16")
- .withDatabaseName("cameleer3")
+ .withDatabaseName("cameleer")
.withUsername("cameleer")
.withPassword("test");
postgres.start();
diff --git a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/ClickHouseTestHelper.java b/cameleer-server-app/src/test/java/com/cameleer/server/app/ClickHouseTestHelper.java
similarity index 96%
rename from cameleer3-server-app/src/test/java/com/cameleer3/server/app/ClickHouseTestHelper.java
rename to cameleer-server-app/src/test/java/com/cameleer/server/app/ClickHouseTestHelper.java
index 89b0f6cf..045c550e 100644
--- a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/ClickHouseTestHelper.java
+++ b/cameleer-server-app/src/test/java/com/cameleer/server/app/ClickHouseTestHelper.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.app;
+package com.cameleer.server.app;
import org.springframework.core.io.ClassPathResource;
import org.springframework.jdbc.core.JdbcTemplate;
diff --git a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/TestSecurityHelper.java b/cameleer-server-app/src/test/java/com/cameleer/server/app/TestSecurityHelper.java
similarity index 95%
rename from cameleer3-server-app/src/test/java/com/cameleer3/server/app/TestSecurityHelper.java
rename to cameleer-server-app/src/test/java/com/cameleer/server/app/TestSecurityHelper.java
index f9bc2feb..d24d5945 100644
--- a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/TestSecurityHelper.java
+++ b/cameleer-server-app/src/test/java/com/cameleer/server/app/TestSecurityHelper.java
@@ -1,7 +1,7 @@
-package com.cameleer3.server.app;
+package com.cameleer.server.app;
-import com.cameleer3.server.core.agent.AgentRegistryService;
-import com.cameleer3.server.core.security.JwtService;
+import com.cameleer.server.core.agent.AgentRegistryService;
+import com.cameleer.server.core.security.JwtService;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Component;
diff --git a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/admin/AuditServiceTest.java b/cameleer-server-app/src/test/java/com/cameleer/server/app/admin/AuditServiceTest.java
similarity index 95%
rename from cameleer3-server-app/src/test/java/com/cameleer3/server/app/admin/AuditServiceTest.java
rename to cameleer-server-app/src/test/java/com/cameleer/server/app/admin/AuditServiceTest.java
index abf75a0c..db3f1acc 100644
--- a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/admin/AuditServiceTest.java
+++ b/cameleer-server-app/src/test/java/com/cameleer/server/app/admin/AuditServiceTest.java
@@ -1,6 +1,6 @@
-package com.cameleer3.server.app.admin;
+package com.cameleer.server.app.admin;
-import com.cameleer3.server.core.admin.*;
+import com.cameleer.server.core.admin.*;
import jakarta.servlet.http.HttpServletRequest;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
diff --git a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/agent/SsePayloadSignerTest.java b/cameleer-server-app/src/test/java/com/cameleer/server/app/agent/SsePayloadSignerTest.java
similarity index 96%
rename from cameleer3-server-app/src/test/java/com/cameleer3/server/app/agent/SsePayloadSignerTest.java
rename to cameleer-server-app/src/test/java/com/cameleer/server/app/agent/SsePayloadSignerTest.java
index 0cbee16a..08f68746 100644
--- a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/agent/SsePayloadSignerTest.java
+++ b/cameleer-server-app/src/test/java/com/cameleer/server/app/agent/SsePayloadSignerTest.java
@@ -1,7 +1,7 @@
-package com.cameleer3.server.app.agent;
+package com.cameleer.server.app.agent;
-import com.cameleer3.server.app.security.Ed25519SigningServiceImpl;
-import com.cameleer3.server.core.security.Ed25519SigningService;
+import com.cameleer.server.app.security.Ed25519SigningServiceImpl;
+import com.cameleer.server.core.security.Ed25519SigningService;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
diff --git a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/AgentCommandControllerIT.java b/cameleer-server-app/src/test/java/com/cameleer/server/app/controller/AgentCommandControllerIT.java
similarity index 97%
rename from cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/AgentCommandControllerIT.java
rename to cameleer-server-app/src/test/java/com/cameleer/server/app/controller/AgentCommandControllerIT.java
index 3f9b1c07..132e34ea 100644
--- a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/AgentCommandControllerIT.java
+++ b/cameleer-server-app/src/test/java/com/cameleer/server/app/controller/AgentCommandControllerIT.java
@@ -1,7 +1,7 @@
-package com.cameleer3.server.app.controller;
+package com.cameleer.server.app.controller;
-import com.cameleer3.server.app.AbstractPostgresIT;
-import com.cameleer3.server.app.TestSecurityHelper;
+import com.cameleer.server.app.AbstractPostgresIT;
+import com.cameleer.server.app.TestSecurityHelper;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.jupiter.api.BeforeEach;
diff --git a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/AgentRegistrationControllerIT.java b/cameleer-server-app/src/test/java/com/cameleer/server/app/controller/AgentRegistrationControllerIT.java
similarity index 97%
rename from cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/AgentRegistrationControllerIT.java
rename to cameleer-server-app/src/test/java/com/cameleer/server/app/controller/AgentRegistrationControllerIT.java
index 63ec696b..7a117c61 100644
--- a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/AgentRegistrationControllerIT.java
+++ b/cameleer-server-app/src/test/java/com/cameleer/server/app/controller/AgentRegistrationControllerIT.java
@@ -1,7 +1,7 @@
-package com.cameleer3.server.app.controller;
+package com.cameleer.server.app.controller;
-import com.cameleer3.server.app.AbstractPostgresIT;
-import com.cameleer3.server.app.TestSecurityHelper;
+import com.cameleer.server.app.AbstractPostgresIT;
+import com.cameleer.server.app.TestSecurityHelper;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.jupiter.api.BeforeEach;
diff --git a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/AgentSseControllerIT.java b/cameleer-server-app/src/test/java/com/cameleer/server/app/controller/AgentSseControllerIT.java
similarity index 98%
rename from cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/AgentSseControllerIT.java
rename to cameleer-server-app/src/test/java/com/cameleer/server/app/controller/AgentSseControllerIT.java
index 39bb130b..566a80ad 100644
--- a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/AgentSseControllerIT.java
+++ b/cameleer-server-app/src/test/java/com/cameleer/server/app/controller/AgentSseControllerIT.java
@@ -1,7 +1,7 @@
-package com.cameleer3.server.app.controller;
+package com.cameleer.server.app.controller;
-import com.cameleer3.server.app.AbstractPostgresIT;
-import com.cameleer3.server.app.TestSecurityHelper;
+import com.cameleer.server.app.AbstractPostgresIT;
+import com.cameleer.server.app.TestSecurityHelper;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
diff --git a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/AppControllerIT.java b/cameleer-server-app/src/test/java/com/cameleer/server/app/controller/AppControllerIT.java
similarity index 97%
rename from cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/AppControllerIT.java
rename to cameleer-server-app/src/test/java/com/cameleer/server/app/controller/AppControllerIT.java
index e29ddb57..599e4832 100644
--- a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/AppControllerIT.java
+++ b/cameleer-server-app/src/test/java/com/cameleer/server/app/controller/AppControllerIT.java
@@ -1,7 +1,7 @@
-package com.cameleer3.server.app.controller;
+package com.cameleer.server.app.controller;
-import com.cameleer3.server.app.AbstractPostgresIT;
-import com.cameleer3.server.app.TestSecurityHelper;
+import com.cameleer.server.app.AbstractPostgresIT;
+import com.cameleer.server.app.TestSecurityHelper;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.jupiter.api.BeforeEach;
diff --git a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/AuditLogControllerIT.java b/cameleer-server-app/src/test/java/com/cameleer/server/app/controller/AuditLogControllerIT.java
similarity index 92%
rename from cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/AuditLogControllerIT.java
rename to cameleer-server-app/src/test/java/com/cameleer/server/app/controller/AuditLogControllerIT.java
index 138bb192..19c03e14 100644
--- a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/AuditLogControllerIT.java
+++ b/cameleer-server-app/src/test/java/com/cameleer/server/app/controller/AuditLogControllerIT.java
@@ -1,10 +1,10 @@
-package com.cameleer3.server.app.controller;
+package com.cameleer.server.app.controller;
-import com.cameleer3.server.app.AbstractPostgresIT;
-import com.cameleer3.server.app.TestSecurityHelper;
-import com.cameleer3.server.core.admin.AuditCategory;
-import com.cameleer3.server.core.admin.AuditResult;
-import com.cameleer3.server.core.admin.AuditService;
+import com.cameleer.server.app.AbstractPostgresIT;
+import com.cameleer.server.app.TestSecurityHelper;
+import com.cameleer.server.core.admin.AuditCategory;
+import com.cameleer.server.core.admin.AuditResult;
+import com.cameleer.server.core.admin.AuditService;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.jupiter.api.BeforeEach;
diff --git a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/BackpressureIT.java b/cameleer-server-app/src/test/java/com/cameleer/server/app/controller/BackpressureIT.java
similarity index 94%
rename from cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/BackpressureIT.java
rename to cameleer-server-app/src/test/java/com/cameleer/server/app/controller/BackpressureIT.java
index f585f671..f67d2950 100644
--- a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/BackpressureIT.java
+++ b/cameleer-server-app/src/test/java/com/cameleer/server/app/controller/BackpressureIT.java
@@ -1,8 +1,8 @@
-package com.cameleer3.server.app.controller;
+package com.cameleer.server.app.controller;
-import com.cameleer3.server.app.AbstractPostgresIT;
-import com.cameleer3.server.app.TestSecurityHelper;
-import com.cameleer3.server.core.ingestion.IngestionService;
+import com.cameleer.server.app.AbstractPostgresIT;
+import com.cameleer.server.app.TestSecurityHelper;
+import com.cameleer.server.core.ingestion.IngestionService;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
diff --git a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/ClaimMappingAdminControllerIT.java b/cameleer-server-app/src/test/java/com/cameleer/server/app/controller/ClaimMappingAdminControllerIT.java
similarity index 94%
rename from cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/ClaimMappingAdminControllerIT.java
rename to cameleer-server-app/src/test/java/com/cameleer/server/app/controller/ClaimMappingAdminControllerIT.java
index cf64e592..b6057dd5 100644
--- a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/ClaimMappingAdminControllerIT.java
+++ b/cameleer-server-app/src/test/java/com/cameleer/server/app/controller/ClaimMappingAdminControllerIT.java
@@ -1,7 +1,7 @@
-package com.cameleer3.server.app.controller;
+package com.cameleer.server.app.controller;
-import com.cameleer3.server.app.AbstractPostgresIT;
-import com.cameleer3.server.app.TestSecurityHelper;
+import com.cameleer.server.app.AbstractPostgresIT;
+import com.cameleer.server.app.TestSecurityHelper;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.jupiter.api.BeforeEach;
diff --git a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/DatabaseAdminControllerIT.java b/cameleer-server-app/src/test/java/com/cameleer/server/app/controller/DatabaseAdminControllerIT.java
similarity index 96%
rename from cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/DatabaseAdminControllerIT.java
rename to cameleer-server-app/src/test/java/com/cameleer/server/app/controller/DatabaseAdminControllerIT.java
index dc40bed5..b126f17b 100644
--- a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/DatabaseAdminControllerIT.java
+++ b/cameleer-server-app/src/test/java/com/cameleer/server/app/controller/DatabaseAdminControllerIT.java
@@ -1,7 +1,7 @@
-package com.cameleer3.server.app.controller;
+package com.cameleer.server.app.controller;
-import com.cameleer3.server.app.AbstractPostgresIT;
-import com.cameleer3.server.app.TestSecurityHelper;
+import com.cameleer.server.app.AbstractPostgresIT;
+import com.cameleer.server.app.TestSecurityHelper;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.jupiter.api.BeforeEach;
diff --git a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/DeploymentControllerIT.java b/cameleer-server-app/src/test/java/com/cameleer/server/app/controller/DeploymentControllerIT.java
similarity index 97%
rename from cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/DeploymentControllerIT.java
rename to cameleer-server-app/src/test/java/com/cameleer/server/app/controller/DeploymentControllerIT.java
index 1b0182ba..bcfdfba5 100644
--- a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/DeploymentControllerIT.java
+++ b/cameleer-server-app/src/test/java/com/cameleer/server/app/controller/DeploymentControllerIT.java
@@ -1,7 +1,7 @@
-package com.cameleer3.server.app.controller;
+package com.cameleer.server.app.controller;
-import com.cameleer3.server.app.AbstractPostgresIT;
-import com.cameleer3.server.app.TestSecurityHelper;
+import com.cameleer.server.app.AbstractPostgresIT;
+import com.cameleer.server.app.TestSecurityHelper;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.jupiter.api.BeforeEach;
diff --git a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/DetailControllerIT.java b/cameleer-server-app/src/test/java/com/cameleer/server/app/controller/DetailControllerIT.java
similarity index 98%
rename from cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/DetailControllerIT.java
rename to cameleer-server-app/src/test/java/com/cameleer/server/app/controller/DetailControllerIT.java
index efee860c..6741f177 100644
--- a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/DetailControllerIT.java
+++ b/cameleer-server-app/src/test/java/com/cameleer/server/app/controller/DetailControllerIT.java
@@ -1,7 +1,7 @@
-package com.cameleer3.server.app.controller;
+package com.cameleer.server.app.controller;
-import com.cameleer3.server.app.AbstractPostgresIT;
-import com.cameleer3.server.app.TestSecurityHelper;
+import com.cameleer.server.app.AbstractPostgresIT;
+import com.cameleer.server.app.TestSecurityHelper;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.jupiter.api.BeforeAll;
diff --git a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/DiagramControllerIT.java b/cameleer-server-app/src/test/java/com/cameleer/server/app/controller/DiagramControllerIT.java
similarity index 95%
rename from cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/DiagramControllerIT.java
rename to cameleer-server-app/src/test/java/com/cameleer/server/app/controller/DiagramControllerIT.java
index 2c132955..b5ee8136 100644
--- a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/DiagramControllerIT.java
+++ b/cameleer-server-app/src/test/java/com/cameleer/server/app/controller/DiagramControllerIT.java
@@ -1,7 +1,7 @@
-package com.cameleer3.server.app.controller;
+package com.cameleer.server.app.controller;
-import com.cameleer3.server.app.AbstractPostgresIT;
-import com.cameleer3.server.app.TestSecurityHelper;
+import com.cameleer.server.app.AbstractPostgresIT;
+import com.cameleer.server.app.TestSecurityHelper;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
diff --git a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/DiagramRenderControllerIT.java b/cameleer-server-app/src/test/java/com/cameleer/server/app/controller/DiagramRenderControllerIT.java
similarity index 97%
rename from cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/DiagramRenderControllerIT.java
rename to cameleer-server-app/src/test/java/com/cameleer/server/app/controller/DiagramRenderControllerIT.java
index a19e924a..814563dd 100644
--- a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/DiagramRenderControllerIT.java
+++ b/cameleer-server-app/src/test/java/com/cameleer/server/app/controller/DiagramRenderControllerIT.java
@@ -1,7 +1,7 @@
-package com.cameleer3.server.app.controller;
+package com.cameleer.server.app.controller;
-import com.cameleer3.server.app.AbstractPostgresIT;
-import com.cameleer3.server.app.TestSecurityHelper;
+import com.cameleer.server.app.AbstractPostgresIT;
+import com.cameleer.server.app.TestSecurityHelper;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
diff --git a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/EnvironmentAdminControllerIT.java b/cameleer-server-app/src/test/java/com/cameleer/server/app/controller/EnvironmentAdminControllerIT.java
similarity index 97%
rename from cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/EnvironmentAdminControllerIT.java
rename to cameleer-server-app/src/test/java/com/cameleer/server/app/controller/EnvironmentAdminControllerIT.java
index a967207c..82a5e172 100644
--- a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/EnvironmentAdminControllerIT.java
+++ b/cameleer-server-app/src/test/java/com/cameleer/server/app/controller/EnvironmentAdminControllerIT.java
@@ -1,7 +1,7 @@
-package com.cameleer3.server.app.controller;
+package com.cameleer.server.app.controller;
-import com.cameleer3.server.app.AbstractPostgresIT;
-import com.cameleer3.server.app.TestSecurityHelper;
+import com.cameleer.server.app.AbstractPostgresIT;
+import com.cameleer.server.app.TestSecurityHelper;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.jupiter.api.BeforeEach;
diff --git a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/ExecutionControllerIT.java b/cameleer-server-app/src/test/java/com/cameleer/server/app/controller/ExecutionControllerIT.java
similarity index 96%
rename from cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/ExecutionControllerIT.java
rename to cameleer-server-app/src/test/java/com/cameleer/server/app/controller/ExecutionControllerIT.java
index 1b183863..7f7fb26c 100644
--- a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/ExecutionControllerIT.java
+++ b/cameleer-server-app/src/test/java/com/cameleer/server/app/controller/ExecutionControllerIT.java
@@ -1,7 +1,7 @@
-package com.cameleer3.server.app.controller;
+package com.cameleer.server.app.controller;
-import com.cameleer3.server.app.AbstractPostgresIT;
-import com.cameleer3.server.app.TestSecurityHelper;
+import com.cameleer.server.app.AbstractPostgresIT;
+import com.cameleer.server.app.TestSecurityHelper;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
diff --git a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/ForwardCompatIT.java b/cameleer-server-app/src/test/java/com/cameleer/server/app/controller/ForwardCompatIT.java
similarity index 91%
rename from cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/ForwardCompatIT.java
rename to cameleer-server-app/src/test/java/com/cameleer/server/app/controller/ForwardCompatIT.java
index 555bbf7c..9389916c 100644
--- a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/ForwardCompatIT.java
+++ b/cameleer-server-app/src/test/java/com/cameleer/server/app/controller/ForwardCompatIT.java
@@ -1,7 +1,7 @@
-package com.cameleer3.server.app.controller;
+package com.cameleer.server.app.controller;
-import com.cameleer3.server.app.AbstractPostgresIT;
-import com.cameleer3.server.app.TestSecurityHelper;
+import com.cameleer.server.app.AbstractPostgresIT;
+import com.cameleer.server.app.TestSecurityHelper;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
diff --git a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/HealthControllerIT.java b/cameleer-server-app/src/test/java/com/cameleer/server/app/controller/HealthControllerIT.java
similarity index 91%
rename from cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/HealthControllerIT.java
rename to cameleer-server-app/src/test/java/com/cameleer/server/app/controller/HealthControllerIT.java
index 9ca31887..70b4fc2b 100644
--- a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/HealthControllerIT.java
+++ b/cameleer-server-app/src/test/java/com/cameleer/server/app/controller/HealthControllerIT.java
@@ -1,6 +1,6 @@
-package com.cameleer3.server.app.controller;
+package com.cameleer.server.app.controller;
-import com.cameleer3.server.app.AbstractPostgresIT;
+import com.cameleer.server.app.AbstractPostgresIT;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.web.client.TestRestTemplate;
diff --git a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/MetricsControllerIT.java b/cameleer-server-app/src/test/java/com/cameleer/server/app/controller/MetricsControllerIT.java
similarity index 94%
rename from cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/MetricsControllerIT.java
rename to cameleer-server-app/src/test/java/com/cameleer/server/app/controller/MetricsControllerIT.java
index bc30e0a0..c93196d4 100644
--- a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/MetricsControllerIT.java
+++ b/cameleer-server-app/src/test/java/com/cameleer/server/app/controller/MetricsControllerIT.java
@@ -1,7 +1,7 @@
-package com.cameleer3.server.app.controller;
+package com.cameleer.server.app.controller;
-import com.cameleer3.server.app.AbstractPostgresIT;
-import com.cameleer3.server.app.TestSecurityHelper;
+import com.cameleer.server.app.AbstractPostgresIT;
+import com.cameleer.server.app.TestSecurityHelper;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
diff --git a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/OpenApiIT.java b/cameleer-server-app/src/test/java/com/cameleer/server/app/controller/OpenApiIT.java
similarity index 91%
rename from cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/OpenApiIT.java
rename to cameleer-server-app/src/test/java/com/cameleer/server/app/controller/OpenApiIT.java
index a8ceb053..5b4d8b89 100644
--- a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/OpenApiIT.java
+++ b/cameleer-server-app/src/test/java/com/cameleer/server/app/controller/OpenApiIT.java
@@ -1,6 +1,6 @@
-package com.cameleer3.server.app.controller;
+package com.cameleer.server.app.controller;
-import com.cameleer3.server.app.AbstractPostgresIT;
+import com.cameleer.server.app.AbstractPostgresIT;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.web.client.TestRestTemplate;
diff --git a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/SearchControllerIT.java b/cameleer-server-app/src/test/java/com/cameleer/server/app/controller/SearchControllerIT.java
similarity index 99%
rename from cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/SearchControllerIT.java
rename to cameleer-server-app/src/test/java/com/cameleer/server/app/controller/SearchControllerIT.java
index b77d869f..94431faa 100644
--- a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/SearchControllerIT.java
+++ b/cameleer-server-app/src/test/java/com/cameleer/server/app/controller/SearchControllerIT.java
@@ -1,7 +1,7 @@
-package com.cameleer3.server.app.controller;
+package com.cameleer.server.app.controller;
-import com.cameleer3.server.app.AbstractPostgresIT;
-import com.cameleer3.server.app.TestSecurityHelper;
+import com.cameleer.server.app.AbstractPostgresIT;
+import com.cameleer.server.app.TestSecurityHelper;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.jupiter.api.BeforeEach;
diff --git a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/SensitiveKeysAdminControllerIT.java b/cameleer-server-app/src/test/java/com/cameleer/server/app/controller/SensitiveKeysAdminControllerIT.java
similarity index 96%
rename from cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/SensitiveKeysAdminControllerIT.java
rename to cameleer-server-app/src/test/java/com/cameleer/server/app/controller/SensitiveKeysAdminControllerIT.java
index 884297a5..138fde49 100644
--- a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/SensitiveKeysAdminControllerIT.java
+++ b/cameleer-server-app/src/test/java/com/cameleer/server/app/controller/SensitiveKeysAdminControllerIT.java
@@ -1,7 +1,7 @@
-package com.cameleer3.server.app.controller;
+package com.cameleer.server.app.controller;
-import com.cameleer3.server.app.AbstractPostgresIT;
-import com.cameleer3.server.app.TestSecurityHelper;
+import com.cameleer.server.app.AbstractPostgresIT;
+import com.cameleer.server.app.TestSecurityHelper;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.jupiter.api.BeforeEach;
diff --git a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/ThresholdAdminControllerIT.java b/cameleer-server-app/src/test/java/com/cameleer/server/app/controller/ThresholdAdminControllerIT.java
similarity index 96%
rename from cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/ThresholdAdminControllerIT.java
rename to cameleer-server-app/src/test/java/com/cameleer/server/app/controller/ThresholdAdminControllerIT.java
index a8f4365b..3d336e9c 100644
--- a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/ThresholdAdminControllerIT.java
+++ b/cameleer-server-app/src/test/java/com/cameleer/server/app/controller/ThresholdAdminControllerIT.java
@@ -1,7 +1,7 @@
-package com.cameleer3.server.app.controller;
+package com.cameleer.server.app.controller;
-import com.cameleer3.server.app.AbstractPostgresIT;
-import com.cameleer3.server.app.TestSecurityHelper;
+import com.cameleer.server.app.AbstractPostgresIT;
+import com.cameleer.server.app.TestSecurityHelper;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.jupiter.api.BeforeEach;
diff --git a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/diagram/ElkDiagramRendererTest.java b/cameleer-server-app/src/test/java/com/cameleer/server/app/diagram/ElkDiagramRendererTest.java
similarity index 97%
rename from cameleer3-server-app/src/test/java/com/cameleer3/server/app/diagram/ElkDiagramRendererTest.java
rename to cameleer-server-app/src/test/java/com/cameleer/server/app/diagram/ElkDiagramRendererTest.java
index 84e994ab..b0fd11b2 100644
--- a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/diagram/ElkDiagramRendererTest.java
+++ b/cameleer-server-app/src/test/java/com/cameleer/server/app/diagram/ElkDiagramRendererTest.java
@@ -1,11 +1,11 @@
-package com.cameleer3.server.app.diagram;
+package com.cameleer.server.app.diagram;
-import com.cameleer3.common.graph.NodeType;
-import com.cameleer3.common.graph.RouteEdge;
-import com.cameleer3.common.graph.RouteGraph;
-import com.cameleer3.common.graph.RouteNode;
-import com.cameleer3.server.core.diagram.DiagramLayout;
-import com.cameleer3.server.core.diagram.PositionedNode;
+import com.cameleer.common.graph.NodeType;
+import com.cameleer.common.graph.RouteEdge;
+import com.cameleer.common.graph.RouteGraph;
+import com.cameleer.common.graph.RouteNode;
+import com.cameleer.server.core.diagram.DiagramLayout;
+import com.cameleer.server.core.diagram.PositionedNode;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
diff --git a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/interceptor/ProtocolVersionIT.java b/cameleer-server-app/src/test/java/com/cameleer/server/app/interceptor/ProtocolVersionIT.java
similarity index 95%
rename from cameleer3-server-app/src/test/java/com/cameleer3/server/app/interceptor/ProtocolVersionIT.java
rename to cameleer-server-app/src/test/java/com/cameleer/server/app/interceptor/ProtocolVersionIT.java
index 35d0c0d1..af2fc377 100644
--- a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/interceptor/ProtocolVersionIT.java
+++ b/cameleer-server-app/src/test/java/com/cameleer/server/app/interceptor/ProtocolVersionIT.java
@@ -1,7 +1,7 @@
-package com.cameleer3.server.app.interceptor;
+package com.cameleer.server.app.interceptor;
-import com.cameleer3.server.app.AbstractPostgresIT;
-import com.cameleer3.server.app.TestSecurityHelper;
+import com.cameleer.server.app.AbstractPostgresIT;
+import com.cameleer.server.app.TestSecurityHelper;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
diff --git a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/runtime/PrometheusLabelBuilderTest.java b/cameleer-server-app/src/test/java/com/cameleer/server/app/runtime/PrometheusLabelBuilderTest.java
similarity index 97%
rename from cameleer3-server-app/src/test/java/com/cameleer3/server/app/runtime/PrometheusLabelBuilderTest.java
rename to cameleer-server-app/src/test/java/com/cameleer/server/app/runtime/PrometheusLabelBuilderTest.java
index 98a31fe5..6bd6967d 100644
--- a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/runtime/PrometheusLabelBuilderTest.java
+++ b/cameleer-server-app/src/test/java/com/cameleer/server/app/runtime/PrometheusLabelBuilderTest.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.app.runtime;
+package com.cameleer.server.app.runtime;
import org.junit.jupiter.api.Test;
diff --git a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/search/ClickHouseLogStoreIT.java b/cameleer-server-app/src/test/java/com/cameleer/server/app/search/ClickHouseLogStoreIT.java
similarity index 97%
rename from cameleer3-server-app/src/test/java/com/cameleer3/server/app/search/ClickHouseLogStoreIT.java
rename to cameleer-server-app/src/test/java/com/cameleer/server/app/search/ClickHouseLogStoreIT.java
index 179ddfb5..7c961189 100644
--- a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/search/ClickHouseLogStoreIT.java
+++ b/cameleer-server-app/src/test/java/com/cameleer/server/app/search/ClickHouseLogStoreIT.java
@@ -1,13 +1,13 @@
-package com.cameleer3.server.app.search;
+package com.cameleer.server.app.search;
-import com.cameleer3.common.model.LogEntry;
-import com.cameleer3.server.core.search.LogSearchRequest;
-import com.cameleer3.server.core.search.LogSearchResponse;
-import com.cameleer3.server.core.storage.LogEntryResult;
+import com.cameleer.common.model.LogEntry;
+import com.cameleer.server.core.search.LogSearchRequest;
+import com.cameleer.server.core.search.LogSearchResponse;
+import com.cameleer.server.core.storage.LogEntryResult;
import com.zaxxer.hikari.HikariDataSource;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
-import com.cameleer3.server.app.ClickHouseTestHelper;
+import com.cameleer.server.app.ClickHouseTestHelper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.testcontainers.clickhouse.ClickHouseContainer;
import org.testcontainers.junit.jupiter.Container;
diff --git a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/search/ClickHouseSearchIndexIT.java b/cameleer-server-app/src/test/java/com/cameleer/server/app/search/ClickHouseSearchIndexIT.java
similarity index 96%
rename from cameleer3-server-app/src/test/java/com/cameleer3/server/app/search/ClickHouseSearchIndexIT.java
rename to cameleer-server-app/src/test/java/com/cameleer/server/app/search/ClickHouseSearchIndexIT.java
index e7bd9036..9ecb2ede 100644
--- a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/search/ClickHouseSearchIndexIT.java
+++ b/cameleer-server-app/src/test/java/com/cameleer/server/app/search/ClickHouseSearchIndexIT.java
@@ -1,16 +1,16 @@
-package com.cameleer3.server.app.search;
+package com.cameleer.server.app.search;
-import com.cameleer3.server.app.storage.ClickHouseExecutionStore;
-import com.cameleer3.server.core.ingestion.MergedExecution;
-import com.cameleer3.server.core.search.ExecutionSummary;
-import com.cameleer3.server.core.search.SearchRequest;
-import com.cameleer3.server.core.search.SearchResult;
-import com.cameleer3.common.model.ExecutionStatus;
-import com.cameleer3.common.model.FlatProcessorRecord;
+import com.cameleer.server.app.storage.ClickHouseExecutionStore;
+import com.cameleer.server.core.ingestion.MergedExecution;
+import com.cameleer.server.core.search.ExecutionSummary;
+import com.cameleer.server.core.search.SearchRequest;
+import com.cameleer.server.core.search.SearchResult;
+import com.cameleer.common.model.ExecutionStatus;
+import com.cameleer.common.model.FlatProcessorRecord;
import com.zaxxer.hikari.HikariDataSource;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
-import com.cameleer3.server.app.ClickHouseTestHelper;
+import com.cameleer.server.app.ClickHouseTestHelper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.testcontainers.clickhouse.ClickHouseContainer;
import org.testcontainers.junit.jupiter.Container;
diff --git a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/security/BootstrapTokenIT.java b/cameleer-server-app/src/test/java/com/cameleer/server/app/security/BootstrapTokenIT.java
similarity index 97%
rename from cameleer3-server-app/src/test/java/com/cameleer3/server/app/security/BootstrapTokenIT.java
rename to cameleer-server-app/src/test/java/com/cameleer/server/app/security/BootstrapTokenIT.java
index 6c8131ed..e119dcba 100644
--- a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/security/BootstrapTokenIT.java
+++ b/cameleer-server-app/src/test/java/com/cameleer/server/app/security/BootstrapTokenIT.java
@@ -1,6 +1,6 @@
-package com.cameleer3.server.app.security;
+package com.cameleer.server.app.security;
-import com.cameleer3.server.app.AbstractPostgresIT;
+import com.cameleer.server.app.AbstractPostgresIT;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.jupiter.api.Test;
diff --git a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/security/BootstrapTokenValidatorTest.java b/cameleer-server-app/src/test/java/com/cameleer/server/app/security/BootstrapTokenValidatorTest.java
similarity index 98%
rename from cameleer3-server-app/src/test/java/com/cameleer3/server/app/security/BootstrapTokenValidatorTest.java
rename to cameleer-server-app/src/test/java/com/cameleer/server/app/security/BootstrapTokenValidatorTest.java
index ed7a8edd..248e0b46 100644
--- a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/security/BootstrapTokenValidatorTest.java
+++ b/cameleer-server-app/src/test/java/com/cameleer/server/app/security/BootstrapTokenValidatorTest.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.app.security;
+package com.cameleer.server.app.security;
import org.junit.jupiter.api.Test;
diff --git a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/security/Ed25519SigningServiceTest.java b/cameleer-server-app/src/test/java/com/cameleer/server/app/security/Ed25519SigningServiceTest.java
similarity index 96%
rename from cameleer3-server-app/src/test/java/com/cameleer3/server/app/security/Ed25519SigningServiceTest.java
rename to cameleer-server-app/src/test/java/com/cameleer/server/app/security/Ed25519SigningServiceTest.java
index 9a71c4fa..67ac8e0e 100644
--- a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/security/Ed25519SigningServiceTest.java
+++ b/cameleer-server-app/src/test/java/com/cameleer/server/app/security/Ed25519SigningServiceTest.java
@@ -1,6 +1,6 @@
-package com.cameleer3.server.app.security;
+package com.cameleer.server.app.security;
-import com.cameleer3.server.core.security.Ed25519SigningService;
+import com.cameleer.server.core.security.Ed25519SigningService;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
diff --git a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/security/JwtRefreshIT.java b/cameleer-server-app/src/test/java/com/cameleer/server/app/security/JwtRefreshIT.java
similarity index 96%
rename from cameleer3-server-app/src/test/java/com/cameleer3/server/app/security/JwtRefreshIT.java
rename to cameleer-server-app/src/test/java/com/cameleer/server/app/security/JwtRefreshIT.java
index 9712bf2c..5672cdf4 100644
--- a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/security/JwtRefreshIT.java
+++ b/cameleer-server-app/src/test/java/com/cameleer/server/app/security/JwtRefreshIT.java
@@ -1,8 +1,8 @@
-package com.cameleer3.server.app.security;
+package com.cameleer.server.app.security;
-import com.cameleer3.server.app.AbstractPostgresIT;
-import com.cameleer3.server.app.TestSecurityHelper;
-import com.cameleer3.server.core.security.JwtService;
+import com.cameleer.server.app.AbstractPostgresIT;
+import com.cameleer.server.app.TestSecurityHelper;
+import com.cameleer.server.core.security.JwtService;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.jupiter.api.Test;
diff --git a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/security/JwtServiceTest.java b/cameleer-server-app/src/test/java/com/cameleer/server/app/security/JwtServiceTest.java
similarity index 96%
rename from cameleer3-server-app/src/test/java/com/cameleer3/server/app/security/JwtServiceTest.java
rename to cameleer-server-app/src/test/java/com/cameleer/server/app/security/JwtServiceTest.java
index 5c4d0f71..dc45ac42 100644
--- a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/security/JwtServiceTest.java
+++ b/cameleer-server-app/src/test/java/com/cameleer/server/app/security/JwtServiceTest.java
@@ -1,7 +1,7 @@
-package com.cameleer3.server.app.security;
+package com.cameleer.server.app.security;
-import com.cameleer3.server.core.security.InvalidTokenException;
-import com.cameleer3.server.core.security.JwtService;
+import com.cameleer.server.core.security.InvalidTokenException;
+import com.cameleer.server.core.security.JwtService;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
diff --git a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/security/RegistrationSecurityIT.java b/cameleer-server-app/src/test/java/com/cameleer/server/app/security/RegistrationSecurityIT.java
similarity index 97%
rename from cameleer3-server-app/src/test/java/com/cameleer3/server/app/security/RegistrationSecurityIT.java
rename to cameleer-server-app/src/test/java/com/cameleer/server/app/security/RegistrationSecurityIT.java
index 4f068a9d..394dbaff 100644
--- a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/security/RegistrationSecurityIT.java
+++ b/cameleer-server-app/src/test/java/com/cameleer/server/app/security/RegistrationSecurityIT.java
@@ -1,6 +1,6 @@
-package com.cameleer3.server.app.security;
+package com.cameleer.server.app.security;
-import com.cameleer3.server.app.AbstractPostgresIT;
+import com.cameleer.server.app.AbstractPostgresIT;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.jupiter.api.Test;
diff --git a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/security/SecurityFilterIT.java b/cameleer-server-app/src/test/java/com/cameleer/server/app/security/SecurityFilterIT.java
similarity index 96%
rename from cameleer3-server-app/src/test/java/com/cameleer3/server/app/security/SecurityFilterIT.java
rename to cameleer-server-app/src/test/java/com/cameleer/server/app/security/SecurityFilterIT.java
index 11ffd4bb..61326aa9 100644
--- a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/security/SecurityFilterIT.java
+++ b/cameleer-server-app/src/test/java/com/cameleer/server/app/security/SecurityFilterIT.java
@@ -1,7 +1,7 @@
-package com.cameleer3.server.app.security;
+package com.cameleer.server.app.security;
-import com.cameleer3.server.app.AbstractPostgresIT;
-import com.cameleer3.server.app.TestSecurityHelper;
+import com.cameleer.server.app.AbstractPostgresIT;
+import com.cameleer.server.app.TestSecurityHelper;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
diff --git a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/security/SseSigningIT.java b/cameleer-server-app/src/test/java/com/cameleer/server/app/security/SseSigningIT.java
similarity index 98%
rename from cameleer3-server-app/src/test/java/com/cameleer3/server/app/security/SseSigningIT.java
rename to cameleer-server-app/src/test/java/com/cameleer/server/app/security/SseSigningIT.java
index 9badee29..cab8b9cc 100644
--- a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/security/SseSigningIT.java
+++ b/cameleer-server-app/src/test/java/com/cameleer/server/app/security/SseSigningIT.java
@@ -1,8 +1,8 @@
-package com.cameleer3.server.app.security;
+package com.cameleer.server.app.security;
-import com.cameleer3.server.app.AbstractPostgresIT;
-import com.cameleer3.server.app.TestSecurityHelper;
-import com.cameleer3.server.core.security.Ed25519SigningService;
+import com.cameleer.server.app.AbstractPostgresIT;
+import com.cameleer.server.app.TestSecurityHelper;
+import com.cameleer.server.core.security.Ed25519SigningService;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.jupiter.api.Test;
diff --git a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/security/TestSecurityConfig.java b/cameleer-server-app/src/test/java/com/cameleer/server/app/security/TestSecurityConfig.java
similarity index 91%
rename from cameleer3-server-app/src/test/java/com/cameleer3/server/app/security/TestSecurityConfig.java
rename to cameleer-server-app/src/test/java/com/cameleer/server/app/security/TestSecurityConfig.java
index 2f67ae8f..1e32bfa9 100644
--- a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/security/TestSecurityConfig.java
+++ b/cameleer-server-app/src/test/java/com/cameleer/server/app/security/TestSecurityConfig.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.app.security;
+package com.cameleer.server.app.security;
/**
* Previously this class provided a permit-all SecurityFilterChain for tests.
diff --git a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/storage/ClickHouseAgentEventRepositoryIT.java b/cameleer-server-app/src/test/java/com/cameleer/server/app/storage/ClickHouseAgentEventRepositoryIT.java
similarity index 97%
rename from cameleer3-server-app/src/test/java/com/cameleer3/server/app/storage/ClickHouseAgentEventRepositoryIT.java
rename to cameleer-server-app/src/test/java/com/cameleer/server/app/storage/ClickHouseAgentEventRepositoryIT.java
index 74a8ff6c..f4b898de 100644
--- a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/storage/ClickHouseAgentEventRepositoryIT.java
+++ b/cameleer-server-app/src/test/java/com/cameleer/server/app/storage/ClickHouseAgentEventRepositoryIT.java
@@ -1,10 +1,10 @@
-package com.cameleer3.server.app.storage;
+package com.cameleer.server.app.storage;
-import com.cameleer3.server.core.agent.AgentEventRecord;
+import com.cameleer.server.core.agent.AgentEventRecord;
import com.zaxxer.hikari.HikariDataSource;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
-import com.cameleer3.server.app.ClickHouseTestHelper;
+import com.cameleer.server.app.ClickHouseTestHelper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.testcontainers.clickhouse.ClickHouseContainer;
import org.testcontainers.junit.jupiter.Container;
diff --git a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/storage/ClickHouseChunkPipelineIT.java b/cameleer-server-app/src/test/java/com/cameleer/server/app/storage/ClickHouseChunkPipelineIT.java
similarity index 92%
rename from cameleer3-server-app/src/test/java/com/cameleer3/server/app/storage/ClickHouseChunkPipelineIT.java
rename to cameleer-server-app/src/test/java/com/cameleer/server/app/storage/ClickHouseChunkPipelineIT.java
index c26362b7..a687ea94 100644
--- a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/storage/ClickHouseChunkPipelineIT.java
+++ b/cameleer-server-app/src/test/java/com/cameleer/server/app/storage/ClickHouseChunkPipelineIT.java
@@ -1,15 +1,15 @@
-package com.cameleer3.server.app.storage;
+package com.cameleer.server.app.storage;
-import com.cameleer3.server.app.search.ClickHouseSearchIndex;
-import com.cameleer3.server.core.ingestion.ChunkAccumulator;
-import com.cameleer3.server.core.ingestion.MergedExecution;
-import com.cameleer3.server.core.storage.DiagramStore;
-import com.cameleer3.server.core.search.ExecutionSummary;
-import com.cameleer3.server.core.search.SearchRequest;
-import com.cameleer3.server.core.search.SearchResult;
-import com.cameleer3.common.model.ExecutionChunk;
-import com.cameleer3.common.model.ExecutionStatus;
-import com.cameleer3.common.model.FlatProcessorRecord;
+import com.cameleer.server.app.search.ClickHouseSearchIndex;
+import com.cameleer.server.core.ingestion.ChunkAccumulator;
+import com.cameleer.server.core.ingestion.MergedExecution;
+import com.cameleer.server.core.storage.DiagramStore;
+import com.cameleer.server.core.search.ExecutionSummary;
+import com.cameleer.server.core.search.SearchRequest;
+import com.cameleer.server.core.search.SearchResult;
+import com.cameleer.common.model.ExecutionChunk;
+import com.cameleer.common.model.ExecutionStatus;
+import com.cameleer.common.model.FlatProcessorRecord;
import com.zaxxer.hikari.HikariDataSource;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
diff --git a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/storage/ClickHouseDiagramStoreIT.java b/cameleer-server-app/src/test/java/com/cameleer/server/app/storage/ClickHouseDiagramStoreIT.java
similarity index 96%
rename from cameleer3-server-app/src/test/java/com/cameleer3/server/app/storage/ClickHouseDiagramStoreIT.java
rename to cameleer-server-app/src/test/java/com/cameleer/server/app/storage/ClickHouseDiagramStoreIT.java
index 56f99883..46f3b4c5 100644
--- a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/storage/ClickHouseDiagramStoreIT.java
+++ b/cameleer-server-app/src/test/java/com/cameleer/server/app/storage/ClickHouseDiagramStoreIT.java
@@ -1,13 +1,13 @@
-package com.cameleer3.server.app.storage;
+package com.cameleer.server.app.storage;
-import com.cameleer3.common.graph.NodeType;
-import com.cameleer3.common.graph.RouteGraph;
-import com.cameleer3.common.graph.RouteNode;
-import com.cameleer3.server.core.ingestion.TaggedDiagram;
+import com.cameleer.common.graph.NodeType;
+import com.cameleer.common.graph.RouteGraph;
+import com.cameleer.common.graph.RouteNode;
+import com.cameleer.server.core.ingestion.TaggedDiagram;
import com.zaxxer.hikari.HikariDataSource;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
-import com.cameleer3.server.app.ClickHouseTestHelper;
+import com.cameleer.server.app.ClickHouseTestHelper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.testcontainers.clickhouse.ClickHouseContainer;
import org.testcontainers.junit.jupiter.Container;
diff --git a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/storage/ClickHouseExecutionReadIT.java b/cameleer-server-app/src/test/java/com/cameleer/server/app/storage/ClickHouseExecutionReadIT.java
similarity index 92%
rename from cameleer3-server-app/src/test/java/com/cameleer3/server/app/storage/ClickHouseExecutionReadIT.java
rename to cameleer-server-app/src/test/java/com/cameleer/server/app/storage/ClickHouseExecutionReadIT.java
index c5507bb5..19ac9aa2 100644
--- a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/storage/ClickHouseExecutionReadIT.java
+++ b/cameleer-server-app/src/test/java/com/cameleer/server/app/storage/ClickHouseExecutionReadIT.java
@@ -1,16 +1,16 @@
-package com.cameleer3.server.app.storage;
+package com.cameleer.server.app.storage;
-import com.cameleer3.common.model.ExecutionStatus;
-import com.cameleer3.common.model.FlatProcessorRecord;
-import com.cameleer3.server.core.detail.DetailService;
-import com.cameleer3.server.core.detail.ExecutionDetail;
-import com.cameleer3.server.core.detail.ProcessorNode;
-import com.cameleer3.server.core.ingestion.MergedExecution;
-import com.cameleer3.server.core.storage.ExecutionStore.ProcessorRecord;
+import com.cameleer.common.model.ExecutionStatus;
+import com.cameleer.common.model.FlatProcessorRecord;
+import com.cameleer.server.core.detail.DetailService;
+import com.cameleer.server.core.detail.ExecutionDetail;
+import com.cameleer.server.core.detail.ProcessorNode;
+import com.cameleer.server.core.ingestion.MergedExecution;
+import com.cameleer.server.core.storage.ExecutionStore.ProcessorRecord;
import com.zaxxer.hikari.HikariDataSource;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
-import com.cameleer3.server.app.ClickHouseTestHelper;
+import com.cameleer.server.app.ClickHouseTestHelper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.testcontainers.clickhouse.ClickHouseContainer;
import org.testcontainers.junit.jupiter.Container;
@@ -83,7 +83,7 @@ class ClickHouseExecutionReadIT {
void findById_returnsInsertedExecution() {
store.insertExecutionBatch(List.of(minimalExecution("exec-1")));
- Optional result =
+ Optional result =
store.findById("exec-1");
assertThat(result).isPresent();
@@ -97,7 +97,7 @@ class ClickHouseExecutionReadIT {
@Test
void findById_notFound_returnsEmpty() {
- Optional result =
+ Optional result =
store.findById("nonexistent");
assertThat(result).isEmpty();
diff --git a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/storage/ClickHouseExecutionStoreIT.java b/cameleer-server-app/src/test/java/com/cameleer/server/app/storage/ClickHouseExecutionStoreIT.java
similarity index 96%
rename from cameleer3-server-app/src/test/java/com/cameleer3/server/app/storage/ClickHouseExecutionStoreIT.java
rename to cameleer-server-app/src/test/java/com/cameleer/server/app/storage/ClickHouseExecutionStoreIT.java
index e3fcf676..7523b64f 100644
--- a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/storage/ClickHouseExecutionStoreIT.java
+++ b/cameleer-server-app/src/test/java/com/cameleer/server/app/storage/ClickHouseExecutionStoreIT.java
@@ -1,12 +1,12 @@
-package com.cameleer3.server.app.storage;
+package com.cameleer.server.app.storage;
-import com.cameleer3.server.core.ingestion.MergedExecution;
-import com.cameleer3.common.model.ExecutionStatus;
-import com.cameleer3.common.model.FlatProcessorRecord;
+import com.cameleer.server.core.ingestion.MergedExecution;
+import com.cameleer.common.model.ExecutionStatus;
+import com.cameleer.common.model.FlatProcessorRecord;
import com.zaxxer.hikari.HikariDataSource;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
-import com.cameleer3.server.app.ClickHouseTestHelper;
+import com.cameleer.server.app.ClickHouseTestHelper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.testcontainers.clickhouse.ClickHouseContainer;
import org.testcontainers.junit.jupiter.Container;
diff --git a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/storage/ClickHouseMetricsQueryStoreIT.java b/cameleer-server-app/src/test/java/com/cameleer/server/app/storage/ClickHouseMetricsQueryStoreIT.java
similarity index 97%
rename from cameleer3-server-app/src/test/java/com/cameleer3/server/app/storage/ClickHouseMetricsQueryStoreIT.java
rename to cameleer-server-app/src/test/java/com/cameleer/server/app/storage/ClickHouseMetricsQueryStoreIT.java
index 3103b5ed..63ca8ff9 100644
--- a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/storage/ClickHouseMetricsQueryStoreIT.java
+++ b/cameleer-server-app/src/test/java/com/cameleer/server/app/storage/ClickHouseMetricsQueryStoreIT.java
@@ -1,6 +1,6 @@
-package com.cameleer3.server.app.storage;
+package com.cameleer.server.app.storage;
-import com.cameleer3.server.core.storage.model.MetricTimeSeries;
+import com.cameleer.server.core.storage.model.MetricTimeSeries;
import com.zaxxer.hikari.HikariDataSource;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
diff --git a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/storage/ClickHouseMetricsStoreIT.java b/cameleer-server-app/src/test/java/com/cameleer/server/app/storage/ClickHouseMetricsStoreIT.java
similarity index 97%
rename from cameleer3-server-app/src/test/java/com/cameleer3/server/app/storage/ClickHouseMetricsStoreIT.java
rename to cameleer-server-app/src/test/java/com/cameleer/server/app/storage/ClickHouseMetricsStoreIT.java
index af555db1..f33ca3cb 100644
--- a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/storage/ClickHouseMetricsStoreIT.java
+++ b/cameleer-server-app/src/test/java/com/cameleer/server/app/storage/ClickHouseMetricsStoreIT.java
@@ -1,6 +1,6 @@
-package com.cameleer3.server.app.storage;
+package com.cameleer.server.app.storage;
-import com.cameleer3.server.core.storage.model.MetricsSnapshot;
+import com.cameleer.server.core.storage.model.MetricsSnapshot;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.jdbc.core.JdbcTemplate;
diff --git a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/storage/ClickHouseStatsStoreIT.java b/cameleer-server-app/src/test/java/com/cameleer/server/app/storage/ClickHouseStatsStoreIT.java
similarity index 97%
rename from cameleer3-server-app/src/test/java/com/cameleer3/server/app/storage/ClickHouseStatsStoreIT.java
rename to cameleer-server-app/src/test/java/com/cameleer/server/app/storage/ClickHouseStatsStoreIT.java
index 903cd032..a817ed50 100644
--- a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/storage/ClickHouseStatsStoreIT.java
+++ b/cameleer-server-app/src/test/java/com/cameleer/server/app/storage/ClickHouseStatsStoreIT.java
@@ -1,13 +1,13 @@
-package com.cameleer3.server.app.storage;
+package com.cameleer.server.app.storage;
-import com.cameleer3.server.core.search.ExecutionStats;
-import com.cameleer3.server.core.search.StatsTimeseries;
-import com.cameleer3.server.core.search.TopError;
-import com.cameleer3.server.core.storage.StatsStore.PunchcardCell;
+import com.cameleer.server.core.search.ExecutionStats;
+import com.cameleer.server.core.search.StatsTimeseries;
+import com.cameleer.server.core.search.TopError;
+import com.cameleer.server.core.storage.StatsStore.PunchcardCell;
import com.zaxxer.hikari.HikariDataSource;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
-import com.cameleer3.server.app.ClickHouseTestHelper;
+import com.cameleer.server.app.ClickHouseTestHelper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.testcontainers.clickhouse.ClickHouseContainer;
import org.testcontainers.junit.jupiter.Container;
diff --git a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/storage/DiagramLinkingIT.java b/cameleer-server-app/src/test/java/com/cameleer/server/app/storage/DiagramLinkingIT.java
similarity index 97%
rename from cameleer3-server-app/src/test/java/com/cameleer3/server/app/storage/DiagramLinkingIT.java
rename to cameleer-server-app/src/test/java/com/cameleer/server/app/storage/DiagramLinkingIT.java
index e92b2d57..5da644d8 100644
--- a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/storage/DiagramLinkingIT.java
+++ b/cameleer-server-app/src/test/java/com/cameleer/server/app/storage/DiagramLinkingIT.java
@@ -1,7 +1,7 @@
-package com.cameleer3.server.app.storage;
+package com.cameleer.server.app.storage;
-import com.cameleer3.server.app.AbstractPostgresIT;
-import com.cameleer3.server.app.TestSecurityHelper;
+import com.cameleer.server.app.AbstractPostgresIT;
+import com.cameleer.server.app.TestSecurityHelper;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
diff --git a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/storage/FlywayMigrationIT.java b/cameleer-server-app/src/test/java/com/cameleer/server/app/storage/FlywayMigrationIT.java
similarity index 94%
rename from cameleer3-server-app/src/test/java/com/cameleer3/server/app/storage/FlywayMigrationIT.java
rename to cameleer-server-app/src/test/java/com/cameleer/server/app/storage/FlywayMigrationIT.java
index 68ed2a65..17a6f400 100644
--- a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/storage/FlywayMigrationIT.java
+++ b/cameleer-server-app/src/test/java/com/cameleer/server/app/storage/FlywayMigrationIT.java
@@ -1,6 +1,6 @@
-package com.cameleer3.server.app.storage;
+package com.cameleer.server.app.storage;
-import com.cameleer3.server.app.AbstractPostgresIT;
+import com.cameleer.server.app.AbstractPostgresIT;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
diff --git a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/storage/IngestionSchemaIT.java b/cameleer-server-app/src/test/java/com/cameleer/server/app/storage/IngestionSchemaIT.java
similarity index 98%
rename from cameleer3-server-app/src/test/java/com/cameleer3/server/app/storage/IngestionSchemaIT.java
rename to cameleer-server-app/src/test/java/com/cameleer/server/app/storage/IngestionSchemaIT.java
index dc4140d7..414a700d 100644
--- a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/storage/IngestionSchemaIT.java
+++ b/cameleer-server-app/src/test/java/com/cameleer/server/app/storage/IngestionSchemaIT.java
@@ -1,7 +1,7 @@
-package com.cameleer3.server.app.storage;
+package com.cameleer.server.app.storage;
-import com.cameleer3.server.app.AbstractPostgresIT;
-import com.cameleer3.server.app.TestSecurityHelper;
+import com.cameleer.server.app.AbstractPostgresIT;
+import com.cameleer.server.app.TestSecurityHelper;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
diff --git a/cameleer3-server-app/src/test/java/com/cameleer3/server/core/license/LicenseGateTest.java b/cameleer-server-app/src/test/java/com/cameleer/server/core/license/LicenseGateTest.java
similarity index 97%
rename from cameleer3-server-app/src/test/java/com/cameleer3/server/core/license/LicenseGateTest.java
rename to cameleer-server-app/src/test/java/com/cameleer/server/core/license/LicenseGateTest.java
index 00404d24..95186fdd 100644
--- a/cameleer3-server-app/src/test/java/com/cameleer3/server/core/license/LicenseGateTest.java
+++ b/cameleer-server-app/src/test/java/com/cameleer/server/core/license/LicenseGateTest.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.license;
+package com.cameleer.server.core.license;
import org.junit.jupiter.api.Test;
diff --git a/cameleer3-server-app/src/test/java/com/cameleer3/server/core/license/LicenseValidatorTest.java b/cameleer-server-app/src/test/java/com/cameleer/server/core/license/LicenseValidatorTest.java
similarity index 98%
rename from cameleer3-server-app/src/test/java/com/cameleer3/server/core/license/LicenseValidatorTest.java
rename to cameleer-server-app/src/test/java/com/cameleer/server/core/license/LicenseValidatorTest.java
index de3bab2c..d321a2b0 100644
--- a/cameleer3-server-app/src/test/java/com/cameleer3/server/core/license/LicenseValidatorTest.java
+++ b/cameleer-server-app/src/test/java/com/cameleer/server/core/license/LicenseValidatorTest.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.license;
+package com.cameleer.server.core.license;
import org.junit.jupiter.api.Test;
diff --git a/cameleer3-server-app/src/test/java/com/cameleer3/server/core/rbac/ClaimMappingServiceTest.java b/cameleer-server-app/src/test/java/com/cameleer/server/core/rbac/ClaimMappingServiceTest.java
similarity index 98%
rename from cameleer3-server-app/src/test/java/com/cameleer3/server/core/rbac/ClaimMappingServiceTest.java
rename to cameleer-server-app/src/test/java/com/cameleer/server/core/rbac/ClaimMappingServiceTest.java
index 7f82915b..73c5473a 100644
--- a/cameleer3-server-app/src/test/java/com/cameleer3/server/core/rbac/ClaimMappingServiceTest.java
+++ b/cameleer-server-app/src/test/java/com/cameleer/server/core/rbac/ClaimMappingServiceTest.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.rbac;
+package com.cameleer.server.core.rbac;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
diff --git a/cameleer3-server-app/src/test/resources/application-test.yml b/cameleer-server-app/src/test/resources/application-test.yml
similarity index 100%
rename from cameleer3-server-app/src/test/resources/application-test.yml
rename to cameleer-server-app/src/test/resources/application-test.yml
diff --git a/cameleer3-server-core/pom.xml b/cameleer-server-core/pom.xml
similarity index 86%
rename from cameleer3-server-core/pom.xml
rename to cameleer-server-core/pom.xml
index fcc2542d..9c959ab3 100644
--- a/cameleer3-server-core/pom.xml
+++ b/cameleer-server-core/pom.xml
@@ -5,19 +5,19 @@
4.0.0
- com.cameleer3
- cameleer3-server-parent
+ com.cameleer
+ cameleer-server-parent
1.0-SNAPSHOT
- cameleer3-server-core
- Cameleer3 Server Core
+ cameleer-server-core
+ Cameleer Server Core
Domain logic, storage, and agent registry
- com.cameleer3
- cameleer3-common
+ com.cameleer
+ cameleer-common
com.fasterxml.jackson.core
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/.gitkeep b/cameleer-server-core/src/main/java/com/cameleer/server/core/.gitkeep
similarity index 100%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/.gitkeep
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/.gitkeep
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/admin/AppSettings.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/admin/AppSettings.java
similarity index 92%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/admin/AppSettings.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/admin/AppSettings.java
index b25c47ac..989a9e02 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/admin/AppSettings.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/admin/AppSettings.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.admin;
+package com.cameleer.server.core.admin;
import java.time.Instant;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/admin/AppSettingsRepository.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/admin/AppSettingsRepository.java
similarity index 87%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/admin/AppSettingsRepository.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/admin/AppSettingsRepository.java
index 29613133..d8a55530 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/admin/AppSettingsRepository.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/admin/AppSettingsRepository.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.admin;
+package com.cameleer.server.core.admin;
import java.util.List;
import java.util.Optional;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/admin/AuditCategory.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/admin/AuditCategory.java
similarity index 65%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/admin/AuditCategory.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/admin/AuditCategory.java
index 1e365da3..968ee093 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/admin/AuditCategory.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/admin/AuditCategory.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.admin;
+package com.cameleer.server.core.admin;
public enum AuditCategory {
INFRA, AUTH, USER_MGMT, CONFIG, RBAC, AGENT
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/admin/AuditRecord.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/admin/AuditRecord.java
similarity index 95%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/admin/AuditRecord.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/admin/AuditRecord.java
index 6e4f6f1b..23cce792 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/admin/AuditRecord.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/admin/AuditRecord.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.admin;
+package com.cameleer.server.core.admin;
import java.time.Instant;
import java.util.Map;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/admin/AuditRepository.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/admin/AuditRepository.java
similarity index 92%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/admin/AuditRepository.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/admin/AuditRepository.java
index 76b5a721..89a055f4 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/admin/AuditRepository.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/admin/AuditRepository.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.admin;
+package com.cameleer.server.core.admin;
import java.time.Instant;
import java.util.List;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/admin/AuditResult.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/admin/AuditResult.java
similarity index 54%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/admin/AuditResult.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/admin/AuditResult.java
index d8be64ed..cc055805 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/admin/AuditResult.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/admin/AuditResult.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.admin;
+package com.cameleer.server.core.admin;
public enum AuditResult {
SUCCESS, FAILURE
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/admin/AuditService.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/admin/AuditService.java
similarity index 98%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/admin/AuditService.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/admin/AuditService.java
index 82b25595..e3b975c5 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/admin/AuditService.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/admin/AuditService.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.admin;
+package com.cameleer.server.core.admin;
import jakarta.servlet.http.HttpServletRequest;
import org.slf4j.Logger;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/admin/SensitiveKeysConfig.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/admin/SensitiveKeysConfig.java
similarity index 81%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/admin/SensitiveKeysConfig.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/admin/SensitiveKeysConfig.java
index f686eafa..09b3949f 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/admin/SensitiveKeysConfig.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/admin/SensitiveKeysConfig.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.admin;
+package com.cameleer.server.core.admin;
import java.util.List;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/admin/SensitiveKeysMerger.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/admin/SensitiveKeysMerger.java
similarity index 96%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/admin/SensitiveKeysMerger.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/admin/SensitiveKeysMerger.java
index 62cd2af7..c1c4d9d2 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/admin/SensitiveKeysMerger.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/admin/SensitiveKeysMerger.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.admin;
+package com.cameleer.server.core.admin;
import java.util.ArrayList;
import java.util.List;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/admin/SensitiveKeysRepository.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/admin/SensitiveKeysRepository.java
similarity index 81%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/admin/SensitiveKeysRepository.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/admin/SensitiveKeysRepository.java
index 556de2da..ef8141e5 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/admin/SensitiveKeysRepository.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/admin/SensitiveKeysRepository.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.admin;
+package com.cameleer.server.core.admin;
import java.util.Optional;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/admin/ThresholdConfig.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/admin/ThresholdConfig.java
similarity index 92%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/admin/ThresholdConfig.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/admin/ThresholdConfig.java
index babcd89f..d211e2b8 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/admin/ThresholdConfig.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/admin/ThresholdConfig.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.admin;
+package com.cameleer.server.core.admin;
public record ThresholdConfig(
DatabaseThresholds database
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/admin/ThresholdRepository.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/admin/ThresholdRepository.java
similarity index 80%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/admin/ThresholdRepository.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/admin/ThresholdRepository.java
index 2e9a02f9..97b6e342 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/admin/ThresholdRepository.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/admin/ThresholdRepository.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.admin;
+package com.cameleer.server.core.admin;
import java.util.Optional;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/agent/AgentCommand.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/agent/AgentCommand.java
similarity index 94%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/agent/AgentCommand.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/agent/AgentCommand.java
index f4fa8820..41234489 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/agent/AgentCommand.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/agent/AgentCommand.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.agent;
+package com.cameleer.server.core.agent;
import java.time.Instant;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/agent/AgentEventListener.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/agent/AgentEventListener.java
similarity index 93%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/agent/AgentEventListener.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/agent/AgentEventListener.java
index 9ee41e81..bfc09752 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/agent/AgentEventListener.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/agent/AgentEventListener.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.agent;
+package com.cameleer.server.core.agent;
/**
* Listener interface for agent registry events.
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/agent/AgentEventRecord.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/agent/AgentEventRecord.java
similarity index 83%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/agent/AgentEventRecord.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/agent/AgentEventRecord.java
index ff7f88e0..e322b1c0 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/agent/AgentEventRecord.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/agent/AgentEventRecord.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.agent;
+package com.cameleer.server.core.agent;
import java.time.Instant;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/agent/AgentEventRepository.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/agent/AgentEventRepository.java
similarity index 91%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/agent/AgentEventRepository.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/agent/AgentEventRepository.java
index 0908f950..24aa8465 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/agent/AgentEventRepository.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/agent/AgentEventRepository.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.agent;
+package com.cameleer.server.core.agent;
import java.time.Instant;
import java.util.List;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/agent/AgentEventService.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/agent/AgentEventService.java
similarity index 96%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/agent/AgentEventService.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/agent/AgentEventService.java
index 9348144b..91fe90d7 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/agent/AgentEventService.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/agent/AgentEventService.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.agent;
+package com.cameleer.server.core.agent;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/agent/AgentInfo.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/agent/AgentInfo.java
similarity index 98%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/agent/AgentInfo.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/agent/AgentInfo.java
index 5c0546ca..cb8cdaca 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/agent/AgentInfo.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/agent/AgentInfo.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.agent;
+package com.cameleer.server.core.agent;
import java.time.Instant;
import java.util.List;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/agent/AgentRegistryService.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/agent/AgentRegistryService.java
similarity index 99%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/agent/AgentRegistryService.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/agent/AgentRegistryService.java
index eb411d1b..32b55245 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/agent/AgentRegistryService.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/agent/AgentRegistryService.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.agent;
+package com.cameleer.server.core.agent;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/agent/AgentState.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/agent/AgentState.java
similarity index 75%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/agent/AgentState.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/agent/AgentState.java
index 51a2a1a4..a6b1af29 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/agent/AgentState.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/agent/AgentState.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.agent;
+package com.cameleer.server.core.agent;
/**
* Lifecycle states for a connected agent.
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/agent/CommandReply.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/agent/CommandReply.java
similarity index 90%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/agent/CommandReply.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/agent/CommandReply.java
index 3538d3d3..21923d81 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/agent/CommandReply.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/agent/CommandReply.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.agent;
+package com.cameleer.server.core.agent;
/**
* Represents the reply data from an agent command acknowledgment.
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/agent/CommandStatus.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/agent/CommandStatus.java
similarity index 78%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/agent/CommandStatus.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/agent/CommandStatus.java
index 4a13e78a..cb9599ff 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/agent/CommandStatus.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/agent/CommandStatus.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.agent;
+package com.cameleer.server.core.agent;
/**
* Delivery status of a command pushed to an agent.
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/agent/CommandType.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/agent/CommandType.java
similarity index 83%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/agent/CommandType.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/agent/CommandType.java
index 02baff74..c80bff20 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/agent/CommandType.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/agent/CommandType.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.agent;
+package com.cameleer.server.core.agent;
/**
* Types of commands that can be pushed to agents.
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/agent/RouteStateRegistry.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/agent/RouteStateRegistry.java
similarity index 96%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/agent/RouteStateRegistry.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/agent/RouteStateRegistry.java
index d2794bdc..9d6b5fd8 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/agent/RouteStateRegistry.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/agent/RouteStateRegistry.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.agent;
+package com.cameleer.server.core.agent;
import java.util.LinkedHashMap;
import java.util.Map;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/analytics/UsageEvent.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/analytics/UsageEvent.java
similarity index 85%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/analytics/UsageEvent.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/analytics/UsageEvent.java
index d99de3f7..5cd6acef 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/analytics/UsageEvent.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/analytics/UsageEvent.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.analytics;
+package com.cameleer.server.core.analytics;
import java.time.Instant;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/analytics/UsageStats.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/analytics/UsageStats.java
similarity index 68%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/analytics/UsageStats.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/analytics/UsageStats.java
index d27182c7..86ae0642 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/analytics/UsageStats.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/analytics/UsageStats.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.analytics;
+package com.cameleer.server.core.analytics;
public record UsageStats(
String key,
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/analytics/UsageTracker.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/analytics/UsageTracker.java
similarity index 60%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/analytics/UsageTracker.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/analytics/UsageTracker.java
index 26495899..43aa7092 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/analytics/UsageTracker.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/analytics/UsageTracker.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.analytics;
+package com.cameleer.server.core.analytics;
public interface UsageTracker {
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/detail/DetailService.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/detail/DetailService.java
similarity index 97%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/detail/DetailService.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/detail/DetailService.java
index a11c323e..79bb5b59 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/detail/DetailService.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/detail/DetailService.java
@@ -1,8 +1,8 @@
-package com.cameleer3.server.core.detail;
+package com.cameleer.server.core.detail;
-import com.cameleer3.common.model.ProcessorExecution;
-import com.cameleer3.server.core.storage.ExecutionStore;
-import com.cameleer3.server.core.storage.ExecutionStore.ProcessorRecord;
+import com.cameleer.common.model.ProcessorExecution;
+import com.cameleer.server.core.storage.ExecutionStore;
+import com.cameleer.server.core.storage.ExecutionStore.ProcessorRecord;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/detail/ExecutionDetail.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/detail/ExecutionDetail.java
similarity index 98%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/detail/ExecutionDetail.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/detail/ExecutionDetail.java
index 09d2ca64..e375e9e2 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/detail/ExecutionDetail.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/detail/ExecutionDetail.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.detail;
+package com.cameleer.server.core.detail;
import java.time.Instant;
import java.util.List;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/detail/ProcessorNode.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/detail/ProcessorNode.java
similarity index 99%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/detail/ProcessorNode.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/detail/ProcessorNode.java
index ebfb8184..e4cce197 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/detail/ProcessorNode.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/detail/ProcessorNode.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.detail;
+package com.cameleer.server.core.detail;
import java.time.Instant;
import java.util.ArrayList;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/diagram/DiagramLayout.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/diagram/DiagramLayout.java
similarity index 91%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/diagram/DiagramLayout.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/diagram/DiagramLayout.java
index ff30b664..79f0439a 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/diagram/DiagramLayout.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/diagram/DiagramLayout.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.diagram;
+package com.cameleer.server.core.diagram;
import java.util.List;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/diagram/DiagramRenderer.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/diagram/DiagramRenderer.java
similarity index 90%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/diagram/DiagramRenderer.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/diagram/DiagramRenderer.java
index 540e39b7..46f92390 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/diagram/DiagramRenderer.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/diagram/DiagramRenderer.java
@@ -1,6 +1,6 @@
-package com.cameleer3.server.core.diagram;
+package com.cameleer.server.core.diagram;
-import com.cameleer3.common.graph.RouteGraph;
+import com.cameleer.common.graph.RouteGraph;
/**
* Renders a route graph as SVG or as a positioned JSON layout.
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/diagram/PositionedEdge.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/diagram/PositionedEdge.java
similarity index 90%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/diagram/PositionedEdge.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/diagram/PositionedEdge.java
index cdd29f24..3d68eb3e 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/diagram/PositionedEdge.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/diagram/PositionedEdge.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.diagram;
+package com.cameleer.server.core.diagram;
import java.util.List;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/diagram/PositionedNode.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/diagram/PositionedNode.java
similarity index 95%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/diagram/PositionedNode.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/diagram/PositionedNode.java
index 9f664278..d3f32881 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/diagram/PositionedNode.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/diagram/PositionedNode.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.diagram;
+package com.cameleer.server.core.diagram;
import java.util.List;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/indexing/ExecutionUpdatedEvent.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/indexing/ExecutionUpdatedEvent.java
similarity index 70%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/indexing/ExecutionUpdatedEvent.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/indexing/ExecutionUpdatedEvent.java
index 08488fab..269ea318 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/indexing/ExecutionUpdatedEvent.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/indexing/ExecutionUpdatedEvent.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.indexing;
+package com.cameleer.server.core.indexing;
import java.time.Instant;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/indexing/SearchIndexer.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/indexing/SearchIndexer.java
similarity index 91%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/indexing/SearchIndexer.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/indexing/SearchIndexer.java
index 966c92d4..48377a5e 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/indexing/SearchIndexer.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/indexing/SearchIndexer.java
@@ -1,11 +1,11 @@
-package com.cameleer3.server.core.indexing;
+package com.cameleer.server.core.indexing;
-import com.cameleer3.server.core.storage.ExecutionStore;
-import com.cameleer3.server.core.storage.ExecutionStore.ExecutionRecord;
-import com.cameleer3.server.core.storage.ExecutionStore.ProcessorRecord;
-import com.cameleer3.server.core.storage.SearchIndex;
-import com.cameleer3.server.core.storage.model.ExecutionDocument;
-import com.cameleer3.server.core.storage.model.ExecutionDocument.ProcessorDoc;
+import com.cameleer.server.core.storage.ExecutionStore;
+import com.cameleer.server.core.storage.ExecutionStore.ExecutionRecord;
+import com.cameleer.server.core.storage.ExecutionStore.ProcessorRecord;
+import com.cameleer.server.core.storage.SearchIndex;
+import com.cameleer.server.core.storage.model.ExecutionDocument;
+import com.cameleer.server.core.storage.model.ExecutionDocument.ProcessorDoc;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/indexing/SearchIndexerStats.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/indexing/SearchIndexerStats.java
similarity index 88%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/indexing/SearchIndexerStats.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/indexing/SearchIndexerStats.java
index e743fe9d..4bb1bef4 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/indexing/SearchIndexerStats.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/indexing/SearchIndexerStats.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.indexing;
+package com.cameleer.server.core.indexing;
import java.time.Instant;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/ingestion/BufferedLogEntry.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/ingestion/BufferedLogEntry.java
similarity index 75%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/ingestion/BufferedLogEntry.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/ingestion/BufferedLogEntry.java
index 83575fae..330bf2ba 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/ingestion/BufferedLogEntry.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/ingestion/BufferedLogEntry.java
@@ -1,6 +1,6 @@
-package com.cameleer3.server.core.ingestion;
+package com.cameleer.server.core.ingestion;
-import com.cameleer3.common.model.LogEntry;
+import com.cameleer.common.model.LogEntry;
/**
* A log entry paired with its agent metadata, ready for buffered ClickHouse insertion.
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/ingestion/ChunkAccumulator.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/ingestion/ChunkAccumulator.java
similarity index 97%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/ingestion/ChunkAccumulator.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/ingestion/ChunkAccumulator.java
index 3729720a..9a8f1c0b 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/ingestion/ChunkAccumulator.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/ingestion/ChunkAccumulator.java
@@ -1,9 +1,9 @@
-package com.cameleer3.server.core.ingestion;
+package com.cameleer.server.core.ingestion;
-import com.cameleer3.common.model.ExchangeSnapshot;
-import com.cameleer3.common.model.ExecutionChunk;
-import com.cameleer3.common.model.FlatProcessorRecord;
-import com.cameleer3.server.core.storage.DiagramStore;
+import com.cameleer.common.model.ExchangeSnapshot;
+import com.cameleer.common.model.ExecutionChunk;
+import com.cameleer.common.model.FlatProcessorRecord;
+import com.cameleer.server.core.storage.DiagramStore;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.slf4j.Logger;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/ingestion/IngestionService.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/ingestion/IngestionService.java
similarity index 92%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/ingestion/IngestionService.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/ingestion/IngestionService.java
index 63df17bf..01649c45 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/ingestion/IngestionService.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/ingestion/IngestionService.java
@@ -1,15 +1,15 @@
-package com.cameleer3.server.core.ingestion;
+package com.cameleer.server.core.ingestion;
-import com.cameleer3.common.model.ExchangeSnapshot;
-import com.cameleer3.common.model.ProcessorExecution;
-import com.cameleer3.common.model.RouteExecution;
+import com.cameleer.common.model.ExchangeSnapshot;
+import com.cameleer.common.model.ProcessorExecution;
+import com.cameleer.common.model.RouteExecution;
import com.fasterxml.jackson.databind.SerializationFeature;
-import com.cameleer3.server.core.indexing.ExecutionUpdatedEvent;
-import com.cameleer3.server.core.storage.DiagramStore;
-import com.cameleer3.server.core.storage.ExecutionStore;
-import com.cameleer3.server.core.storage.ExecutionStore.ExecutionRecord;
-import com.cameleer3.server.core.storage.ExecutionStore.ProcessorRecord;
-import com.cameleer3.server.core.storage.model.MetricsSnapshot;
+import com.cameleer.server.core.indexing.ExecutionUpdatedEvent;
+import com.cameleer.server.core.storage.DiagramStore;
+import com.cameleer.server.core.storage.ExecutionStore;
+import com.cameleer.server.core.storage.ExecutionStore.ExecutionRecord;
+import com.cameleer.server.core.storage.ExecutionStore.ProcessorRecord;
+import com.cameleer.server.core.storage.model.MetricsSnapshot;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/ingestion/MergedExecution.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/ingestion/MergedExecution.java
similarity index 96%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/ingestion/MergedExecution.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/ingestion/MergedExecution.java
index 34d27689..e82cf3e7 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/ingestion/MergedExecution.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/ingestion/MergedExecution.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.ingestion;
+package com.cameleer.server.core.ingestion;
import java.time.Instant;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/ingestion/TaggedDiagram.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/ingestion/TaggedDiagram.java
similarity index 78%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/ingestion/TaggedDiagram.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/ingestion/TaggedDiagram.java
index a30b93fd..328bd0a9 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/ingestion/TaggedDiagram.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/ingestion/TaggedDiagram.java
@@ -1,6 +1,6 @@
-package com.cameleer3.server.core.ingestion;
+package com.cameleer.server.core.ingestion;
-import com.cameleer3.common.graph.RouteGraph;
+import com.cameleer.common.graph.RouteGraph;
/**
* Pairs a {@link RouteGraph} with the authenticated agent identity.
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/ingestion/TaggedExecution.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/ingestion/TaggedExecution.java
similarity index 77%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/ingestion/TaggedExecution.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/ingestion/TaggedExecution.java
index 68280b8d..13d56c8a 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/ingestion/TaggedExecution.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/ingestion/TaggedExecution.java
@@ -1,6 +1,6 @@
-package com.cameleer3.server.core.ingestion;
+package com.cameleer.server.core.ingestion;
-import com.cameleer3.common.model.RouteExecution;
+import com.cameleer.common.model.RouteExecution;
/**
* Pairs a {@link RouteExecution} with the authenticated agent identity.
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/ingestion/WriteBuffer.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/ingestion/WriteBuffer.java
similarity index 98%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/ingestion/WriteBuffer.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/ingestion/WriteBuffer.java
index 29450a72..dbb898aa 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/ingestion/WriteBuffer.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/ingestion/WriteBuffer.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.ingestion;
+package com.cameleer.server.core.ingestion;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/license/Feature.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/license/Feature.java
similarity index 68%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/license/Feature.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/license/Feature.java
index 42d6a0d5..72e74df4 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/license/Feature.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/license/Feature.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.license;
+package com.cameleer.server.core.license;
public enum Feature {
topology,
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/license/LicenseGate.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/license/LicenseGate.java
similarity index 95%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/license/LicenseGate.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/license/LicenseGate.java
index da298960..b6ca83fa 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/license/LicenseGate.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/license/LicenseGate.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.license;
+package com.cameleer.server.core.license;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/license/LicenseInfo.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/license/LicenseInfo.java
similarity index 94%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/license/LicenseInfo.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/license/LicenseInfo.java
index e71d395c..2940e3e6 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/license/LicenseInfo.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/license/LicenseInfo.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.license;
+package com.cameleer.server.core.license;
import java.time.Instant;
import java.util.Map;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/license/LicenseValidator.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/license/LicenseValidator.java
similarity index 98%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/license/LicenseValidator.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/license/LicenseValidator.java
index 3c4f314f..07e29043 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/license/LicenseValidator.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/license/LicenseValidator.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.license;
+package com.cameleer.server.core.license;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/AssignmentOrigin.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/AssignmentOrigin.java
similarity index 57%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/AssignmentOrigin.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/AssignmentOrigin.java
index 1ec842f8..8e45205e 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/AssignmentOrigin.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/AssignmentOrigin.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.rbac;
+package com.cameleer.server.core.rbac;
public enum AssignmentOrigin {
direct, managed
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/ClaimMappingRepository.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/ClaimMappingRepository.java
similarity index 92%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/ClaimMappingRepository.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/ClaimMappingRepository.java
index 8e76cae9..8f87fbbb 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/ClaimMappingRepository.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/ClaimMappingRepository.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.rbac;
+package com.cameleer.server.core.rbac;
import java.util.List;
import java.util.Optional;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/ClaimMappingRule.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/ClaimMappingRule.java
similarity index 90%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/ClaimMappingRule.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/ClaimMappingRule.java
index fe13d840..f4724cf3 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/ClaimMappingRule.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/ClaimMappingRule.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.rbac;
+package com.cameleer.server.core.rbac;
import java.time.Instant;
import java.util.UUID;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/ClaimMappingService.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/ClaimMappingService.java
similarity index 98%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/ClaimMappingService.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/ClaimMappingService.java
index a3d12a0a..05f3cfdb 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/ClaimMappingService.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/ClaimMappingService.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.rbac;
+package com.cameleer.server.core.rbac;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/GroupDetail.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/GroupDetail.java
similarity index 88%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/GroupDetail.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/GroupDetail.java
index 1a446ce4..8977247e 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/GroupDetail.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/GroupDetail.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.rbac;
+package com.cameleer.server.core.rbac;
import java.time.Instant;
import java.util.List;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/GroupRepository.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/GroupRepository.java
similarity index 92%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/GroupRepository.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/GroupRepository.java
index afd94464..6a5afb15 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/GroupRepository.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/GroupRepository.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.rbac;
+package com.cameleer.server.core.rbac;
import java.util.List;
import java.util.Optional;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/GroupSummary.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/GroupSummary.java
similarity index 65%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/GroupSummary.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/GroupSummary.java
index 36bc31c9..9ff7610a 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/GroupSummary.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/GroupSummary.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.rbac;
+package com.cameleer.server.core.rbac;
import java.util.UUID;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/RbacService.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/RbacService.java
similarity index 96%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/RbacService.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/RbacService.java
index ab72af74..1c7a4454 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/RbacService.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/RbacService.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.rbac;
+package com.cameleer.server.core.rbac;
import java.util.List;
import java.util.UUID;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/RbacStats.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/RbacStats.java
similarity index 74%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/RbacStats.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/RbacStats.java
index 463f3b4d..98467348 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/RbacStats.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/RbacStats.java
@@ -1,3 +1,3 @@
-package com.cameleer3.server.core.rbac;
+package com.cameleer.server.core.rbac;
public record RbacStats(int userCount, int activeUserCount, int groupCount, int maxGroupDepth, int roleCount) {}
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/RoleDetail.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/RoleDetail.java
similarity index 88%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/RoleDetail.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/RoleDetail.java
index 6145870a..6ba7362d 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/RoleDetail.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/RoleDetail.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.rbac;
+package com.cameleer.server.core.rbac;
import java.time.Instant;
import java.util.List;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/RoleRepository.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/RoleRepository.java
similarity index 89%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/RoleRepository.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/RoleRepository.java
index c5bfdbf6..820137e3 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/RoleRepository.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/RoleRepository.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.rbac;
+package com.cameleer.server.core.rbac;
import java.util.List;
import java.util.Optional;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/RoleSummary.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/RoleSummary.java
similarity index 72%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/RoleSummary.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/RoleSummary.java
index 6a332d83..54690b68 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/RoleSummary.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/RoleSummary.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.rbac;
+package com.cameleer.server.core.rbac;
import java.util.UUID;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/SystemRole.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/SystemRole.java
similarity index 97%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/SystemRole.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/SystemRole.java
index f28d909a..de106f45 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/SystemRole.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/SystemRole.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.rbac;
+package com.cameleer.server.core.rbac;
import java.util.Map;
import java.util.Set;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/UserDetail.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/UserDetail.java
similarity index 88%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/UserDetail.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/UserDetail.java
index 5b1553dc..2cedb55e 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/UserDetail.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/UserDetail.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.rbac;
+package com.cameleer.server.core.rbac;
import java.time.Instant;
import java.util.List;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/UserSummary.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/UserSummary.java
similarity index 67%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/UserSummary.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/UserSummary.java
index 7ff00180..fcf95137 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/UserSummary.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/UserSummary.java
@@ -1,3 +1,3 @@
-package com.cameleer3.server.core.rbac;
+package com.cameleer.server.core.rbac;
public record UserSummary(String userId, String displayName, String provider) {}
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/App.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/App.java
similarity index 85%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/App.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/App.java
index 6291bae3..e9617109 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/App.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/App.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.runtime;
+package com.cameleer.server.core.runtime;
import java.time.Instant;
import java.util.Map;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/AppRepository.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/AppRepository.java
similarity index 92%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/AppRepository.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/AppRepository.java
index 443ac0dd..ec4ea778 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/AppRepository.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/AppRepository.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.runtime;
+package com.cameleer.server.core.runtime;
import java.util.List;
import java.util.Map;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/AppService.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/AppService.java
similarity index 99%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/AppService.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/AppService.java
index 5c220e2b..9c1e861f 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/AppService.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/AppService.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.runtime;
+package com.cameleer.server.core.runtime;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/AppVersion.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/AppVersion.java
similarity index 87%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/AppVersion.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/AppVersion.java
index 4e5fef2d..0e1fe69f 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/AppVersion.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/AppVersion.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.runtime;
+package com.cameleer.server.core.runtime;
import java.time.Instant;
import java.util.UUID;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/AppVersionRepository.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/AppVersionRepository.java
similarity index 91%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/AppVersionRepository.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/AppVersionRepository.java
index c3344955..43b3be31 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/AppVersionRepository.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/AppVersionRepository.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.runtime;
+package com.cameleer.server.core.runtime;
import java.util.List;
import java.util.Optional;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/ConfigMerger.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/ConfigMerger.java
similarity index 99%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/ConfigMerger.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/ConfigMerger.java
index edd8b7b3..f9ee6251 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/ConfigMerger.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/ConfigMerger.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.runtime;
+package com.cameleer.server.core.runtime;
import java.util.Collections;
import java.util.HashMap;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/ContainerRequest.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/ContainerRequest.java
similarity index 94%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/ContainerRequest.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/ContainerRequest.java
index 8e8b5e7d..8aa8b715 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/ContainerRequest.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/ContainerRequest.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.runtime;
+package com.cameleer.server.core.runtime;
import java.util.List;
import java.util.Map;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/ContainerStatus.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/ContainerStatus.java
similarity index 84%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/ContainerStatus.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/ContainerStatus.java
index eb7e7bec..99c9da71 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/ContainerStatus.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/ContainerStatus.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.runtime;
+package com.cameleer.server.core.runtime;
public record ContainerStatus(String state, boolean running, int exitCode, String error) {
public static ContainerStatus notFound() {
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/DeployStage.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/DeployStage.java
similarity index 74%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/DeployStage.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/DeployStage.java
index 2105e13c..8c8f1379 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/DeployStage.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/DeployStage.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.runtime;
+package com.cameleer.server.core.runtime;
public enum DeployStage {
PRE_FLIGHT, PULL_IMAGE, CREATE_NETWORK, START_REPLICAS, HEALTH_CHECK, SWAP_TRAFFIC, COMPLETE
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/Deployment.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/Deployment.java
similarity index 95%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/Deployment.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/Deployment.java
index e72791a6..d4153c68 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/Deployment.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/Deployment.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.runtime;
+package com.cameleer.server.core.runtime;
import java.time.Instant;
import java.util.List;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/DeploymentRepository.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/DeploymentRepository.java
similarity index 94%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/DeploymentRepository.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/DeploymentRepository.java
index bbce038a..4512bdfa 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/DeploymentRepository.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/DeploymentRepository.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.runtime;
+package com.cameleer.server.core.runtime;
import java.util.List;
import java.util.Optional;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/DeploymentService.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/DeploymentService.java
similarity index 98%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/DeploymentService.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/DeploymentService.java
index 0fcc3be1..9f05b448 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/DeploymentService.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/DeploymentService.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.runtime;
+package com.cameleer.server.core.runtime;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/DeploymentStatus.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/DeploymentStatus.java
similarity index 68%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/DeploymentStatus.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/DeploymentStatus.java
index 7440dc23..365a7f09 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/DeploymentStatus.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/DeploymentStatus.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.runtime;
+package com.cameleer.server.core.runtime;
public enum DeploymentStatus {
STOPPED, STARTING, RUNNING, DEGRADED, STOPPING, FAILED
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/Environment.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/Environment.java
similarity index 88%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/Environment.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/Environment.java
index 52dde023..76cb72b3 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/Environment.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/Environment.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.runtime;
+package com.cameleer.server.core.runtime;
import java.time.Instant;
import java.util.Map;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/EnvironmentRepository.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/EnvironmentRepository.java
similarity index 93%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/EnvironmentRepository.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/EnvironmentRepository.java
index b4b205a4..2d22c338 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/EnvironmentRepository.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/EnvironmentRepository.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.runtime;
+package com.cameleer.server.core.runtime;
import java.util.List;
import java.util.Map;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/EnvironmentService.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/EnvironmentService.java
similarity index 97%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/EnvironmentService.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/EnvironmentService.java
index d03d17d2..567171a0 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/EnvironmentService.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/EnvironmentService.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.runtime;
+package com.cameleer.server.core.runtime;
import java.util.List;
import java.util.Map;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/ResolvedContainerConfig.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/ResolvedContainerConfig.java
similarity index 96%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/ResolvedContainerConfig.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/ResolvedContainerConfig.java
index b1674745..77b58e66 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/ResolvedContainerConfig.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/ResolvedContainerConfig.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.runtime;
+package com.cameleer.server.core.runtime;
import java.util.List;
import java.util.Map;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/RoutingMode.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/RoutingMode.java
similarity index 51%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/RoutingMode.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/RoutingMode.java
index 11d1efe3..5c26e0f0 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/RoutingMode.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/RoutingMode.java
@@ -1,3 +1,3 @@
-package com.cameleer3.server.core.runtime;
+package com.cameleer.server.core.runtime;
public enum RoutingMode { path, subdomain }
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/RuntimeDetector.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/RuntimeDetector.java
similarity index 98%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/RuntimeDetector.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/RuntimeDetector.java
index 9e7c4644..339d7553 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/RuntimeDetector.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/RuntimeDetector.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.runtime;
+package com.cameleer.server.core.runtime;
import java.io.IOException;
import java.io.InputStream;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/RuntimeOrchestrator.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/RuntimeOrchestrator.java
similarity index 94%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/RuntimeOrchestrator.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/RuntimeOrchestrator.java
index b0f7292b..605243c0 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/RuntimeOrchestrator.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/RuntimeOrchestrator.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.runtime;
+package com.cameleer.server.core.runtime;
import java.util.stream.Stream;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/RuntimeType.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/RuntimeType.java
similarity index 94%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/RuntimeType.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/RuntimeType.java
index 07050cf6..8ac2a1aa 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/RuntimeType.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/RuntimeType.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.runtime;
+package com.cameleer.server.core.runtime;
public enum RuntimeType {
AUTO,
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/search/ExecutionStats.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/search/ExecutionStats.java
similarity index 97%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/search/ExecutionStats.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/search/ExecutionStats.java
index 2c13886d..7f1f1468 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/search/ExecutionStats.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/search/ExecutionStats.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.search;
+package com.cameleer.server.core.search;
/**
* Aggregate execution statistics within a time window, with comparison to the
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/search/ExecutionSummary.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/search/ExecutionSummary.java
similarity index 97%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/search/ExecutionSummary.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/search/ExecutionSummary.java
index 1a2ad626..e273f052 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/search/ExecutionSummary.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/search/ExecutionSummary.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.search;
+package com.cameleer.server.core.search;
import java.time.Instant;
import java.util.Map;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/search/LogSearchRequest.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/search/LogSearchRequest.java
similarity index 97%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/search/LogSearchRequest.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/search/LogSearchRequest.java
index 0235ccd8..f14e23dc 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/search/LogSearchRequest.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/search/LogSearchRequest.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.search;
+package com.cameleer.server.core.search;
import java.time.Instant;
import java.util.List;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/search/LogSearchResponse.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/search/LogSearchResponse.java
similarity index 85%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/search/LogSearchResponse.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/search/LogSearchResponse.java
index 027018e3..412e1b29 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/search/LogSearchResponse.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/search/LogSearchResponse.java
@@ -1,6 +1,6 @@
-package com.cameleer3.server.core.search;
+package com.cameleer.server.core.search;
-import com.cameleer3.server.core.storage.LogEntryResult;
+import com.cameleer.server.core.storage.LogEntryResult;
import java.util.List;
import java.util.Map;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/search/SearchRequest.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/search/SearchRequest.java
similarity index 99%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/search/SearchRequest.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/search/SearchRequest.java
index ba763b42..3f1b3c47 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/search/SearchRequest.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/search/SearchRequest.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.search;
+package com.cameleer.server.core.search;
import java.time.Instant;
import java.util.List;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/search/SearchResult.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/search/SearchResult.java
similarity index 94%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/search/SearchResult.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/search/SearchResult.java
index dcd56461..5d3a1bc4 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/search/SearchResult.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/search/SearchResult.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.search;
+package com.cameleer.server.core.search;
import java.util.List;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/search/SearchService.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/search/SearchService.java
similarity index 97%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/search/SearchService.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/search/SearchService.java
index 53ae779a..e22e685e 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/search/SearchService.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/search/SearchService.java
@@ -1,7 +1,7 @@
-package com.cameleer3.server.core.search;
+package com.cameleer.server.core.search;
-import com.cameleer3.server.core.storage.SearchIndex;
-import com.cameleer3.server.core.storage.StatsStore;
+import com.cameleer.server.core.storage.SearchIndex;
+import com.cameleer.server.core.storage.StatsStore;
import java.time.Instant;
import java.util.List;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/search/StatsTimeseries.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/search/StatsTimeseries.java
similarity index 88%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/search/StatsTimeseries.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/search/StatsTimeseries.java
index 3387571a..f8a4980f 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/search/StatsTimeseries.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/search/StatsTimeseries.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.search;
+package com.cameleer.server.core.search;
import java.time.Instant;
import java.util.List;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/search/TopError.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/search/TopError.java
similarity index 84%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/search/TopError.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/search/TopError.java
index 300df75b..94e2cced 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/search/TopError.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/search/TopError.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.search;
+package com.cameleer.server.core.search;
import java.time.Instant;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/security/Ed25519SigningService.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/security/Ed25519SigningService.java
similarity index 94%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/security/Ed25519SigningService.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/security/Ed25519SigningService.java
index 8f337922..72d570ad 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/security/Ed25519SigningService.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/security/Ed25519SigningService.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.security;
+package com.cameleer.server.core.security;
/**
* Service for Ed25519 digital signatures.
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/security/InvalidTokenException.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/security/InvalidTokenException.java
similarity index 88%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/security/InvalidTokenException.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/security/InvalidTokenException.java
index f6daed00..3fec4391 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/security/InvalidTokenException.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/security/InvalidTokenException.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.security;
+package com.cameleer.server.core.security;
/**
* Thrown when a JWT token is invalid, expired, or of the wrong type.
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/security/JwtService.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/security/JwtService.java
similarity index 98%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/security/JwtService.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/security/JwtService.java
index 9ea2471b..4d2e06b3 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/security/JwtService.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/security/JwtService.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.security;
+package com.cameleer.server.core.security;
import java.time.Instant;
import java.util.List;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/security/OidcConfig.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/security/OidcConfig.java
similarity index 97%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/security/OidcConfig.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/security/OidcConfig.java
index 2180a59c..2ad44ed4 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/security/OidcConfig.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/security/OidcConfig.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.security;
+package com.cameleer.server.core.security;
import java.util.List;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/security/OidcConfigRepository.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/security/OidcConfigRepository.java
similarity index 86%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/security/OidcConfigRepository.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/security/OidcConfigRepository.java
index c8cef8e2..bc46d5c8 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/security/OidcConfigRepository.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/security/OidcConfigRepository.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.security;
+package com.cameleer.server.core.security;
import java.util.Optional;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/security/PasswordPolicyValidator.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/security/PasswordPolicyValidator.java
similarity index 98%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/security/PasswordPolicyValidator.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/security/PasswordPolicyValidator.java
index 491f9213..ae82110b 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/security/PasswordPolicyValidator.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/security/PasswordPolicyValidator.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.security;
+package com.cameleer.server.core.security;
import java.util.ArrayList;
import java.util.List;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/security/UserInfo.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/security/UserInfo.java
similarity index 96%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/security/UserInfo.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/security/UserInfo.java
index 884b5a8f..1967e2e8 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/security/UserInfo.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/security/UserInfo.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.security;
+package com.cameleer.server.core.security;
import java.time.Instant;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/security/UserRepository.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/security/UserRepository.java
similarity index 95%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/security/UserRepository.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/security/UserRepository.java
index f6c17802..c8ff86f4 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/security/UserRepository.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/security/UserRepository.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.security;
+package com.cameleer.server.core.security;
import java.time.Instant;
import java.util.List;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/storage/DiagramStore.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/storage/DiagramStore.java
similarity index 76%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/storage/DiagramStore.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/storage/DiagramStore.java
index 548edb64..a3fe0ff6 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/storage/DiagramStore.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/storage/DiagramStore.java
@@ -1,7 +1,7 @@
-package com.cameleer3.server.core.storage;
+package com.cameleer.server.core.storage;
-import com.cameleer3.common.graph.RouteGraph;
-import com.cameleer3.server.core.ingestion.TaggedDiagram;
+import com.cameleer.common.graph.RouteGraph;
+import com.cameleer.server.core.ingestion.TaggedDiagram;
import java.util.List;
import java.util.Map;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/storage/ExecutionStore.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/storage/ExecutionStore.java
similarity index 98%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/storage/ExecutionStore.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/storage/ExecutionStore.java
index 5e8cdc1d..7f4946ad 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/storage/ExecutionStore.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/storage/ExecutionStore.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.storage;
+package com.cameleer.server.core.storage;
import java.time.Instant;
import java.util.List;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/storage/LogEntryResult.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/storage/LogEntryResult.java
similarity index 88%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/storage/LogEntryResult.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/storage/LogEntryResult.java
index 0e5bd585..26438838 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/storage/LogEntryResult.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/storage/LogEntryResult.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.storage;
+package com.cameleer.server.core.storage;
import java.util.Map;
diff --git a/cameleer-server-core/src/main/java/com/cameleer/server/core/storage/LogIndex.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/storage/LogIndex.java
new file mode 100644
index 00000000..7a2162ec
--- /dev/null
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/storage/LogIndex.java
@@ -0,0 +1,14 @@
+package com.cameleer.server.core.storage;
+
+import com.cameleer.common.model.LogEntry;
+import com.cameleer.server.core.search.LogSearchRequest;
+import com.cameleer.server.core.search.LogSearchResponse;
+
+import java.util.List;
+
+public interface LogIndex {
+
+ LogSearchResponse search(LogSearchRequest request);
+
+ void indexBatch(String instanceId, String applicationId, List entries);
+}
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/storage/MetricsQueryStore.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/storage/MetricsQueryStore.java
similarity index 85%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/storage/MetricsQueryStore.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/storage/MetricsQueryStore.java
index fdf8e875..c68c5df8 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/storage/MetricsQueryStore.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/storage/MetricsQueryStore.java
@@ -1,6 +1,6 @@
-package com.cameleer3.server.core.storage;
+package com.cameleer.server.core.storage;
-import com.cameleer3.server.core.storage.model.MetricTimeSeries;
+import com.cameleer.server.core.storage.model.MetricTimeSeries;
import java.time.Instant;
import java.util.List;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/storage/MetricsStore.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/storage/MetricsStore.java
similarity index 52%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/storage/MetricsStore.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/storage/MetricsStore.java
index b7af4122..53b621ed 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/storage/MetricsStore.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/storage/MetricsStore.java
@@ -1,6 +1,6 @@
-package com.cameleer3.server.core.storage;
+package com.cameleer.server.core.storage;
-import com.cameleer3.server.core.storage.model.MetricsSnapshot;
+import com.cameleer.server.core.storage.model.MetricsSnapshot;
import java.util.List;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/storage/SearchIndex.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/storage/SearchIndex.java
similarity index 56%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/storage/SearchIndex.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/storage/SearchIndex.java
index a57a2eb7..0f02682a 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/storage/SearchIndex.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/storage/SearchIndex.java
@@ -1,9 +1,9 @@
-package com.cameleer3.server.core.storage;
+package com.cameleer.server.core.storage;
-import com.cameleer3.server.core.search.ExecutionSummary;
-import com.cameleer3.server.core.search.SearchRequest;
-import com.cameleer3.server.core.search.SearchResult;
-import com.cameleer3.server.core.storage.model.ExecutionDocument;
+import com.cameleer.server.core.search.ExecutionSummary;
+import com.cameleer.server.core.search.SearchRequest;
+import com.cameleer.server.core.search.SearchResult;
+import com.cameleer.server.core.storage.model.ExecutionDocument;
import java.util.List;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/storage/StatsStore.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/storage/StatsStore.java
similarity index 93%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/storage/StatsStore.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/storage/StatsStore.java
index 744c1398..742ab35a 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/storage/StatsStore.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/storage/StatsStore.java
@@ -1,8 +1,8 @@
-package com.cameleer3.server.core.storage;
+package com.cameleer.server.core.storage;
-import com.cameleer3.server.core.search.ExecutionStats;
-import com.cameleer3.server.core.search.StatsTimeseries;
-import com.cameleer3.server.core.search.TopError;
+import com.cameleer.server.core.search.ExecutionStats;
+import com.cameleer.server.core.search.StatsTimeseries;
+import com.cameleer.server.core.search.TopError;
import java.time.Instant;
import java.util.List;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/storage/model/ExecutionDocument.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/storage/model/ExecutionDocument.java
similarity index 94%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/storage/model/ExecutionDocument.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/storage/model/ExecutionDocument.java
index a99151bd..38592823 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/storage/model/ExecutionDocument.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/storage/model/ExecutionDocument.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.storage.model;
+package com.cameleer.server.core.storage.model;
import java.time.Instant;
import java.util.List;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/storage/model/MetricTimeSeries.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/storage/model/MetricTimeSeries.java
similarity index 78%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/storage/model/MetricTimeSeries.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/storage/model/MetricTimeSeries.java
index 6107fa0e..0ac07dc6 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/storage/model/MetricTimeSeries.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/storage/model/MetricTimeSeries.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.storage.model;
+package com.cameleer.server.core.storage.model;
import java.time.Instant;
import java.util.List;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/storage/model/MetricsSnapshot.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/storage/model/MetricsSnapshot.java
similarity index 85%
rename from cameleer3-server-core/src/main/java/com/cameleer3/server/core/storage/model/MetricsSnapshot.java
rename to cameleer-server-core/src/main/java/com/cameleer/server/core/storage/model/MetricsSnapshot.java
index 4fe35778..c5f1cde3 100644
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/storage/model/MetricsSnapshot.java
+++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/storage/model/MetricsSnapshot.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.storage.model;
+package com.cameleer.server.core.storage.model;
import java.time.Instant;
import java.util.Map;
diff --git a/cameleer3-server-core/src/test/java/com/cameleer3/server/core/.gitkeep b/cameleer-server-core/src/test/java/com/cameleer/server/core/.gitkeep
similarity index 100%
rename from cameleer3-server-core/src/test/java/com/cameleer3/server/core/.gitkeep
rename to cameleer-server-core/src/test/java/com/cameleer/server/core/.gitkeep
diff --git a/cameleer3-server-core/src/test/java/com/cameleer3/server/core/admin/SensitiveKeysMergerTest.java b/cameleer-server-core/src/test/java/com/cameleer/server/core/admin/SensitiveKeysMergerTest.java
similarity index 97%
rename from cameleer3-server-core/src/test/java/com/cameleer3/server/core/admin/SensitiveKeysMergerTest.java
rename to cameleer-server-core/src/test/java/com/cameleer/server/core/admin/SensitiveKeysMergerTest.java
index b758a31a..c89991f5 100644
--- a/cameleer3-server-core/src/test/java/com/cameleer3/server/core/admin/SensitiveKeysMergerTest.java
+++ b/cameleer-server-core/src/test/java/com/cameleer/server/core/admin/SensitiveKeysMergerTest.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.admin;
+package com.cameleer.server.core.admin;
import org.junit.jupiter.api.Test;
diff --git a/cameleer3-server-core/src/test/java/com/cameleer3/server/core/agent/AgentRegistryServiceTest.java b/cameleer-server-core/src/test/java/com/cameleer/server/core/agent/AgentRegistryServiceTest.java
similarity index 99%
rename from cameleer3-server-core/src/test/java/com/cameleer3/server/core/agent/AgentRegistryServiceTest.java
rename to cameleer-server-core/src/test/java/com/cameleer/server/core/agent/AgentRegistryServiceTest.java
index d6bf8b2f..ad96894e 100644
--- a/cameleer3-server-core/src/test/java/com/cameleer3/server/core/agent/AgentRegistryServiceTest.java
+++ b/cameleer-server-core/src/test/java/com/cameleer/server/core/agent/AgentRegistryServiceTest.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.agent;
+package com.cameleer.server.core.agent;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Nested;
diff --git a/cameleer3-server-core/src/test/java/com/cameleer3/server/core/detail/TreeReconstructionTest.java b/cameleer-server-core/src/test/java/com/cameleer/server/core/detail/TreeReconstructionTest.java
similarity index 98%
rename from cameleer3-server-core/src/test/java/com/cameleer3/server/core/detail/TreeReconstructionTest.java
rename to cameleer-server-core/src/test/java/com/cameleer/server/core/detail/TreeReconstructionTest.java
index dfb2448c..4441c2fc 100644
--- a/cameleer3-server-core/src/test/java/com/cameleer3/server/core/detail/TreeReconstructionTest.java
+++ b/cameleer-server-core/src/test/java/com/cameleer/server/core/detail/TreeReconstructionTest.java
@@ -1,7 +1,7 @@
-package com.cameleer3.server.core.detail;
+package com.cameleer.server.core.detail;
-import com.cameleer3.server.core.storage.ExecutionStore;
-import com.cameleer3.server.core.storage.ExecutionStore.ProcessorRecord;
+import com.cameleer.server.core.storage.ExecutionStore;
+import com.cameleer.server.core.storage.ExecutionStore.ProcessorRecord;
import org.junit.jupiter.api.Test;
import java.time.Instant;
diff --git a/cameleer3-server-core/src/test/java/com/cameleer3/server/core/ingestion/ChunkAccumulatorTest.java b/cameleer-server-core/src/test/java/com/cameleer/server/core/ingestion/ChunkAccumulatorTest.java
similarity index 95%
rename from cameleer3-server-core/src/test/java/com/cameleer3/server/core/ingestion/ChunkAccumulatorTest.java
rename to cameleer-server-core/src/test/java/com/cameleer/server/core/ingestion/ChunkAccumulatorTest.java
index 012df44b..53a0ce6a 100644
--- a/cameleer3-server-core/src/test/java/com/cameleer3/server/core/ingestion/ChunkAccumulatorTest.java
+++ b/cameleer-server-core/src/test/java/com/cameleer/server/core/ingestion/ChunkAccumulatorTest.java
@@ -1,9 +1,9 @@
-package com.cameleer3.server.core.ingestion;
+package com.cameleer.server.core.ingestion;
-import com.cameleer3.common.model.ExecutionChunk;
-import com.cameleer3.common.model.ExecutionStatus;
-import com.cameleer3.common.model.FlatProcessorRecord;
-import com.cameleer3.server.core.storage.DiagramStore;
+import com.cameleer.common.model.ExecutionChunk;
+import com.cameleer.common.model.ExecutionStatus;
+import com.cameleer.common.model.FlatProcessorRecord;
+import com.cameleer.server.core.storage.DiagramStore;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -19,8 +19,8 @@ import static org.assertj.core.api.Assertions.assertThat;
class ChunkAccumulatorTest {
private static final DiagramStore NO_OP_DIAGRAM_STORE = new DiagramStore() {
- public void store(com.cameleer3.server.core.ingestion.TaggedDiagram d) {}
- public Optional findByContentHash(String h) { return Optional.empty(); }
+ public void store(com.cameleer.server.core.ingestion.TaggedDiagram d) {}
+ public Optional findByContentHash(String h) { return Optional.empty(); }
public Optional findContentHashForRoute(String r, String a) { return Optional.empty(); }
public Optional findContentHashForRouteByAgents(String r, List a) { return Optional.empty(); }
public Map findProcessorRouteMapping(String app) { return Map.of(); }
diff --git a/cameleer3-server-core/src/test/java/com/cameleer3/server/core/ingestion/WriteBufferTest.java b/cameleer-server-core/src/test/java/com/cameleer/server/core/ingestion/WriteBufferTest.java
similarity index 98%
rename from cameleer3-server-core/src/test/java/com/cameleer3/server/core/ingestion/WriteBufferTest.java
rename to cameleer-server-core/src/test/java/com/cameleer/server/core/ingestion/WriteBufferTest.java
index 447270d7..09eec9ea 100644
--- a/cameleer3-server-core/src/test/java/com/cameleer3/server/core/ingestion/WriteBufferTest.java
+++ b/cameleer-server-core/src/test/java/com/cameleer/server/core/ingestion/WriteBufferTest.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.ingestion;
+package com.cameleer.server.core.ingestion;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
diff --git a/cameleer3-server-core/src/test/java/com/cameleer3/server/core/runtime/RuntimeDetectorTest.java b/cameleer-server-core/src/test/java/com/cameleer/server/core/runtime/RuntimeDetectorTest.java
similarity index 98%
rename from cameleer3-server-core/src/test/java/com/cameleer3/server/core/runtime/RuntimeDetectorTest.java
rename to cameleer-server-core/src/test/java/com/cameleer/server/core/runtime/RuntimeDetectorTest.java
index 7f4aec7c..bcb2473f 100644
--- a/cameleer3-server-core/src/test/java/com/cameleer3/server/core/runtime/RuntimeDetectorTest.java
+++ b/cameleer-server-core/src/test/java/com/cameleer/server/core/runtime/RuntimeDetectorTest.java
@@ -1,4 +1,4 @@
-package com.cameleer3.server.core.runtime;
+package com.cameleer.server.core.runtime;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.io.TempDir;
diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/storage/LogIndex.java b/cameleer3-server-core/src/main/java/com/cameleer3/server/core/storage/LogIndex.java
deleted file mode 100644
index b069bc86..00000000
--- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/storage/LogIndex.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package com.cameleer3.server.core.storage;
-
-import com.cameleer3.common.model.LogEntry;
-import com.cameleer3.server.core.search.LogSearchRequest;
-import com.cameleer3.server.core.search.LogSearchResponse;
-
-import java.util.List;
-
-public interface LogIndex {
-
- LogSearchResponse search(LogSearchRequest request);
-
- void indexBatch(String instanceId, String applicationId, List entries);
-}
diff --git a/ci-log.txt b/ci-log.txt
index cc1147fb..efde89a0 100644
--- a/ci-log.txt
+++ b/ci-log.txt
@@ -284,19 +284,19 @@
2026-03-25T12:06:09.9635324Z [INFO] ------------------------------------------------------------------------
2026-03-25T12:06:09.9636148Z [INFO] Reactor Build Order:
2026-03-25T12:06:09.9636467Z [INFO]
-2026-03-25T12:06:09.9659474Z [INFO] Cameleer3 Server Parent [pom]
-2026-03-25T12:06:09.9660313Z [INFO] Cameleer3 Server Core [jar]
-2026-03-25T12:06:09.9660795Z [INFO] Cameleer3 Server App [jar]
+2026-03-25T12:06:09.9659474Z [INFO] Cameleer Server Parent [pom]
+2026-03-25T12:06:09.9660313Z [INFO] Cameleer Server Core [jar]
+2026-03-25T12:06:09.9660795Z [INFO] Cameleer Server App [jar]
2026-03-25T12:06:09.9828555Z [INFO]
2026-03-25T12:06:09.9829990Z [INFO] ---------------< com.***3:***3-server-parent >----------------
-2026-03-25T12:06:09.9830445Z [INFO] Building Cameleer3 Server Parent 1.0-SNAPSHOT [1/3]
+2026-03-25T12:06:09.9830445Z [INFO] Building Cameleer Server Parent 1.0-SNAPSHOT [1/3]
2026-03-25T12:06:09.9831993Z [INFO] from pom.xml
2026-03-25T12:06:09.9832701Z [INFO] --------------------------------[ pom ]---------------------------------
2026-03-25T12:06:10.0308726Z [INFO]
2026-03-25T12:06:10.0310168Z [INFO] --- clean:3.4.1:clean (default-clean) @ ***3-server-parent ---
2026-03-25T12:06:10.1462826Z [INFO]
2026-03-25T12:06:10.1463418Z [INFO] ----------------< com.***3:***3-server-core >-----------------
-2026-03-25T12:06:10.1463669Z [INFO] Building Cameleer3 Server Core 1.0-SNAPSHOT [2/3]
+2026-03-25T12:06:10.1463669Z [INFO] Building Cameleer Server Core 1.0-SNAPSHOT [2/3]
2026-03-25T12:06:10.1464039Z [INFO] from ***3-server-core/pom.xml
2026-03-25T12:06:10.1464250Z [INFO] --------------------------------[ jar ]---------------------------------
2026-03-25T12:06:10.4658491Z [INFO]
@@ -321,11 +321,11 @@
2026-03-25T12:06:12.7620033Z [INFO] 2 errors
2026-03-25T12:06:12.7622462Z [INFO] -------------------------------------------------------------
2026-03-25T12:06:12.7631912Z [INFO] ------------------------------------------------------------------------
-2026-03-25T12:06:12.7640947Z [INFO] Reactor Summary for Cameleer3 Server Parent 1.0-SNAPSHOT:
+2026-03-25T12:06:12.7640947Z [INFO] Reactor Summary for Cameleer Server Parent 1.0-SNAPSHOT:
2026-03-25T12:06:12.7641508Z [INFO]
-2026-03-25T12:06:12.7641764Z [INFO] Cameleer3 Server Parent ............................ SUCCESS [ 0.164 s]
-2026-03-25T12:06:12.7643553Z [INFO] Cameleer3 Server Core .............................. FAILURE [ 2.617 s]
-2026-03-25T12:06:12.7646103Z [INFO] Cameleer3 Server App ............................... SKIPPED
+2026-03-25T12:06:12.7641764Z [INFO] Cameleer Server Parent ............................ SUCCESS [ 0.164 s]
+2026-03-25T12:06:12.7643553Z [INFO] Cameleer Server Core .............................. FAILURE [ 2.617 s]
+2026-03-25T12:06:12.7646103Z [INFO] Cameleer Server App ............................... SKIPPED
2026-03-25T12:06:12.7647941Z [INFO] ------------------------------------------------------------------------
2026-03-25T12:06:12.7649783Z [INFO] BUILD FAILURE
2026-03-25T12:06:12.7651509Z [INFO] ------------------------------------------------------------------------
diff --git a/ci-log2.txt b/ci-log2.txt
index 90a703b2..679329e0 100644
--- a/ci-log2.txt
+++ b/ci-log2.txt
@@ -284,19 +284,19 @@
2026-03-25T12:12:09.3994902Z [INFO] ------------------------------------------------------------------------
2026-03-25T12:12:09.3995662Z [INFO] Reactor Build Order:
2026-03-25T12:12:09.3995968Z [INFO]
-2026-03-25T12:12:09.4015044Z [INFO] Cameleer3 Server Parent [pom]
-2026-03-25T12:12:09.4016943Z [INFO] Cameleer3 Server Core [jar]
-2026-03-25T12:12:09.4020267Z [INFO] Cameleer3 Server App [jar]
+2026-03-25T12:12:09.4015044Z [INFO] Cameleer Server Parent [pom]
+2026-03-25T12:12:09.4016943Z [INFO] Cameleer Server Core [jar]
+2026-03-25T12:12:09.4020267Z [INFO] Cameleer Server App [jar]
2026-03-25T12:12:09.4204897Z [INFO]
2026-03-25T12:12:09.4206974Z [INFO] ---------------< com.***3:***3-server-parent >----------------
-2026-03-25T12:12:09.4209665Z [INFO] Building Cameleer3 Server Parent 1.0-SNAPSHOT [1/3]
+2026-03-25T12:12:09.4209665Z [INFO] Building Cameleer Server Parent 1.0-SNAPSHOT [1/3]
2026-03-25T12:12:09.4213444Z [INFO] from pom.xml
2026-03-25T12:12:09.4215425Z [INFO] --------------------------------[ pom ]---------------------------------
2026-03-25T12:12:09.4758836Z [INFO]
2026-03-25T12:12:09.4761722Z [INFO] --- clean:3.4.1:clean (default-clean) @ ***3-server-parent ---
2026-03-25T12:12:09.5985349Z [INFO]
2026-03-25T12:12:09.5998691Z [INFO] ----------------< com.***3:***3-server-core >-----------------
-2026-03-25T12:12:09.5999367Z [INFO] Building Cameleer3 Server Core 1.0-SNAPSHOT [2/3]
+2026-03-25T12:12:09.5999367Z [INFO] Building Cameleer Server Core 1.0-SNAPSHOT [2/3]
2026-03-25T12:12:09.5999608Z [INFO] from ***3-server-core/pom.xml
2026-03-25T12:12:09.5999870Z [INFO] --------------------------------[ jar ]---------------------------------
2026-03-25T12:12:09.9264378Z [INFO]
@@ -353,7 +353,7 @@
2026-03-25T12:12:17.3553610Z [INFO] Building jar: /workspace/***/***3-server/***3-server-core/target/***3-server-core-1.0-SNAPSHOT.jar
2026-03-25T12:12:17.4343059Z [INFO]
2026-03-25T12:12:17.4343761Z [INFO] -----------------< com.***3:***3-server-app >-----------------
-2026-03-25T12:12:17.4344006Z [INFO] Building Cameleer3 Server App 1.0-SNAPSHOT [3/3]
+2026-03-25T12:12:17.4344006Z [INFO] Building Cameleer Server App 1.0-SNAPSHOT [3/3]
2026-03-25T12:12:17.4346242Z [INFO] from ***3-server-app/pom.xml
2026-03-25T12:12:17.4347591Z [INFO] --------------------------------[ jar ]---------------------------------
2026-03-25T12:12:18.7737910Z [INFO]
@@ -395,11 +395,11 @@
2026-03-25T12:12:21.8492176Z [INFO] 6 errors
2026-03-25T12:12:21.8492385Z [INFO] -------------------------------------------------------------
2026-03-25T12:12:21.8502503Z [INFO] ------------------------------------------------------------------------
-2026-03-25T12:12:21.8503274Z [INFO] Reactor Summary for Cameleer3 Server Parent 1.0-SNAPSHOT:
+2026-03-25T12:12:21.8503274Z [INFO] Reactor Summary for Cameleer Server Parent 1.0-SNAPSHOT:
2026-03-25T12:12:21.8503850Z [INFO]
-2026-03-25T12:12:21.8524175Z [INFO] Cameleer3 Server Parent ............................ SUCCESS [ 0.178 s]
-2026-03-25T12:12:21.8524906Z [INFO] Cameleer3 Server Core .............................. SUCCESS [ 7.835 s]
-2026-03-25T12:12:21.8525142Z [INFO] Cameleer3 Server App ............................... FAILURE [ 4.416 s]
+2026-03-25T12:12:21.8524175Z [INFO] Cameleer Server Parent ............................ SUCCESS [ 0.178 s]
+2026-03-25T12:12:21.8524906Z [INFO] Cameleer Server Core .............................. SUCCESS [ 7.835 s]
+2026-03-25T12:12:21.8525142Z [INFO] Cameleer Server App ............................... FAILURE [ 4.416 s]
2026-03-25T12:12:21.8525315Z [INFO] ------------------------------------------------------------------------
2026-03-25T12:12:21.8525608Z [INFO] BUILD FAILURE
2026-03-25T12:12:21.8525797Z [INFO] ------------------------------------------------------------------------
diff --git a/deploy/base/server.yaml b/deploy/base/server.yaml
index ab22820e..08a1f423 100644
--- a/deploy/base/server.yaml
+++ b/deploy/base/server.yaml
@@ -1,16 +1,16 @@
apiVersion: apps/v1
kind: Deployment
metadata:
- name: cameleer3-server
+ name: cameleer-server
spec:
replicas: 1
selector:
matchLabels:
- app: cameleer3-server
+ app: cameleer-server
template:
metadata:
labels:
- app: cameleer3-server
+ app: cameleer-server
spec:
imagePullSecrets:
- name: gitea-registry
@@ -19,7 +19,7 @@ spec:
runAsUser: 1000
containers:
- name: server
- image: gitea.siegeln.net/cameleer/cameleer3-server:latest
+ image: gitea.siegeln.net/cameleer/cameleer-server:latest
ports:
- containerPort: 8081
env:
@@ -110,11 +110,11 @@ spec:
apiVersion: v1
kind: Service
metadata:
- name: cameleer3-server
+ name: cameleer-server
spec:
type: ClusterIP
selector:
- app: cameleer3-server
+ app: cameleer-server
ports:
- port: 8081
targetPort: 8081
diff --git a/deploy/base/ui.yaml b/deploy/base/ui.yaml
index 12033e50..37b96567 100644
--- a/deploy/base/ui.yaml
+++ b/deploy/base/ui.yaml
@@ -1,7 +1,7 @@
apiVersion: v1
kind: ConfigMap
metadata:
- name: cameleer3-ui-config
+ name: cameleer-ui-config
data:
config.js: |
window.__CAMELEER_CONFIG__ = {
@@ -11,27 +11,27 @@ data:
apiVersion: apps/v1
kind: Deployment
metadata:
- name: cameleer3-ui
+ name: cameleer-ui
spec:
replicas: 1
selector:
matchLabels:
- app: cameleer3-ui
+ app: cameleer-ui
template:
metadata:
labels:
- app: cameleer3-ui
+ app: cameleer-ui
spec:
imagePullSecrets:
- name: gitea-registry
containers:
- name: ui
- image: gitea.siegeln.net/cameleer/cameleer3-server-ui:latest
+ image: gitea.siegeln.net/cameleer/cameleer-server-ui:latest
ports:
- containerPort: 80
env:
- name: CAMELEER_API_URL
- value: "http://cameleer3-server:8081"
+ value: "http://cameleer-server:8081"
volumeMounts:
- name: config
mountPath: /usr/share/nginx/html/config.js
@@ -56,16 +56,16 @@ spec:
volumes:
- name: config
configMap:
- name: cameleer3-ui-config
+ name: cameleer-ui-config
---
apiVersion: v1
kind: Service
metadata:
- name: cameleer3-ui
+ name: cameleer-ui
spec:
type: ClusterIP
selector:
- app: cameleer3-ui
+ app: cameleer-ui
ports:
- port: 80
targetPort: 80
diff --git a/deploy/cameleer-postgres.yaml b/deploy/cameleer-postgres.yaml
index c65135e4..d9e9f710 100644
--- a/deploy/cameleer-postgres.yaml
+++ b/deploy/cameleer-postgres.yaml
@@ -26,7 +26,7 @@ spec:
name: cameleer-pg
env:
- name: POSTGRES_DB
- value: cameleer3
+ value: cameleer
- name: POSTGRES_USER
valueFrom:
secretKeyRef:
@@ -52,7 +52,7 @@ spec:
command:
- sh
- -c
- - pg_isready -U "$POSTGRES_USER" -d cameleer3
+ - pg_isready -U "$POSTGRES_USER" -d cameleer
initialDelaySeconds: 15
periodSeconds: 10
timeoutSeconds: 3
@@ -62,7 +62,7 @@ spec:
command:
- sh
- -c
- - pg_isready -U "$POSTGRES_USER" -d cameleer3
+ - pg_isready -U "$POSTGRES_USER" -d cameleer
initialDelaySeconds: 5
periodSeconds: 5
timeoutSeconds: 3
diff --git a/deploy/overlays/feature/ingress.yaml b/deploy/overlays/feature/ingress.yaml
index eb4d8e53..e98030c1 100644
--- a/deploy/overlays/feature/ingress.yaml
+++ b/deploy/overlays/feature/ingress.yaml
@@ -11,6 +11,6 @@ spec:
pathType: Prefix
backend:
service:
- name: cameleer3-ui
+ name: cameleer-ui
port:
number: 80
diff --git a/deploy/overlays/feature/init-job.yaml b/deploy/overlays/feature/init-job.yaml
index 0222321d..a5305e62 100644
--- a/deploy/overlays/feature/init-job.yaml
+++ b/deploy/overlays/feature/init-job.yaml
@@ -14,7 +14,7 @@ spec:
- |
PGPASSWORD=$POSTGRES_PASSWORD psql \
-h cameleer-postgres.cameleer.svc.cluster.local \
- -U $POSTGRES_USER -d cameleer3 \
+ -U $POSTGRES_USER -d cameleer \
-c "CREATE SCHEMA IF NOT EXISTS BRANCH_SCHEMA"
env:
- name: POSTGRES_USER
diff --git a/deploy/overlays/feature/kustomization.yaml b/deploy/overlays/feature/kustomization.yaml
index 4b88fd13..8c823f9f 100644
--- a/deploy/overlays/feature/kustomization.yaml
+++ b/deploy/overlays/feature/kustomization.yaml
@@ -6,9 +6,9 @@ resources:
- ingress.yaml
- init-job.yaml
images:
- - name: gitea.siegeln.net/cameleer/cameleer3-server
+ - name: gitea.siegeln.net/cameleer/cameleer-server
newTag: BRANCH_SHA
- - name: gitea.siegeln.net/cameleer/cameleer3-server-ui
+ - name: gitea.siegeln.net/cameleer/cameleer-server-ui
newTag: BRANCH_SHA
patches:
# Server Deployment: branch-specific schema, index prefix, UI origin
@@ -16,7 +16,7 @@ patches:
apiVersion: apps/v1
kind: Deployment
metadata:
- name: cameleer3-server
+ name: cameleer-server
spec:
template:
spec:
@@ -24,13 +24,13 @@ patches:
- name: server
env:
- name: SPRING_DATASOURCE_URL
- value: "jdbc:postgresql://cameleer-postgres.cameleer.svc.cluster.local:5432/cameleer3?currentSchema=BRANCH_SCHEMA&ApplicationName=BRANCH_SCHEMA"
+ value: "jdbc:postgresql://cameleer-postgres.cameleer.svc.cluster.local:5432/cameleer?currentSchema=BRANCH_SCHEMA&ApplicationName=BRANCH_SCHEMA"
- name: CAMELEER_SERVER_SECURITY_UIORIGIN
value: "http://BRANCH_SLUG.cameleer.siegeln.net"
# UI ConfigMap: branch-specific API URL
- target:
kind: ConfigMap
- name: cameleer3-ui-config
+ name: cameleer-ui-config
patch: |
- op: replace
path: /data/config.js
diff --git a/deploy/overlays/main/kustomization.yaml b/deploy/overlays/main/kustomization.yaml
index 6cb8a93d..38efa635 100644
--- a/deploy/overlays/main/kustomization.yaml
+++ b/deploy/overlays/main/kustomization.yaml
@@ -7,7 +7,7 @@ patches:
# Server Service: NodePort 30081
- target:
kind: Service
- name: cameleer3-server
+ name: cameleer-server
patch: |
- op: replace
path: /spec/type
@@ -18,7 +18,7 @@ patches:
# UI Service: NodePort 30090
- target:
kind: Service
- name: cameleer3-ui
+ name: cameleer-ui
patch: |
- op: replace
path: /spec/type
@@ -31,7 +31,7 @@ patches:
apiVersion: apps/v1
kind: Deployment
metadata:
- name: cameleer3-server
+ name: cameleer-server
spec:
template:
spec:
@@ -41,11 +41,11 @@ patches:
- name: CAMELEER_SERVER_SECURITY_UIORIGIN
value: "http://192.168.50.86:30090"
- name: SPRING_DATASOURCE_URL
- value: "jdbc:postgresql://cameleer-postgres:5432/cameleer3?currentSchema=public&ApplicationName=tenant_default"
+ value: "jdbc:postgresql://cameleer-postgres:5432/cameleer?currentSchema=public&ApplicationName=tenant_default"
# UI ConfigMap: production API URL
- target:
kind: ConfigMap
- name: cameleer3-ui-config
+ name: cameleer-ui-config
patch: |
- op: replace
path: /data/config.js
diff --git a/docker-compose.yml b/docker-compose.yml
index ff35acff..5439cb51 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -4,7 +4,7 @@ services:
ports:
- "5432:5432"
environment:
- POSTGRES_DB: cameleer3
+ POSTGRES_DB: cameleer
POSTGRES_USER: cameleer
POSTGRES_PASSWORD: cameleer_dev
volumes:
diff --git a/docs/SERVER-CAPABILITIES.md b/docs/SERVER-CAPABILITIES.md
index 18acf41b..11fb3cf6 100644
--- a/docs/SERVER-CAPABILITIES.md
+++ b/docs/SERVER-CAPABILITIES.md
@@ -1,11 +1,11 @@
-# Cameleer3 Server — Capabilities Reference
+# Cameleer Server — Capabilities Reference
-> Standalone reference for systems integrating with or managing Cameleer3 Server instances.
+> Standalone reference for systems integrating with or managing Cameleer Server instances.
> Generated 2026-04-04. Source of truth: the codebase and OpenAPI spec at `/api/v1/api-docs`.
## What It Does
-Cameleer3 Server is an observability platform for Apache Camel applications. It receives execution traces, metrics, logs, and route diagrams from instrumented Camel agents, stores them in ClickHouse, and serves a web UI for searching, visualizing, and controlling routes.
+Cameleer Server is an observability platform for Apache Camel applications. It receives execution traces, metrics, logs, and route diagrams from instrumented Camel agents, stores them in ClickHouse, and serves a web UI for searching, visualizing, and controlling routes.
**Core capabilities:**
- Real-time execution tracing with processor-level detail
@@ -393,7 +393,7 @@ Stats tables are fed by Materialized Views from base tables. Query with `-Merge(
Multi-stage Docker build: Maven 3.9 + JDK 17 (build) → JRE 17 (runtime). Port 8081. No default credentials baked in — all database config comes from env vars at runtime.
-Registry: `gitea.siegeln.net/cameleer/cameleer3-server`
+Registry: `gitea.siegeln.net/cameleer/cameleer-server`
### Infrastructure Requirements
@@ -416,7 +416,7 @@ Registry: `gitea.siegeln.net/cameleer/cameleer3-server`
| `CAMELEER_SERVER_CLICKHOUSE_URL` | No | `jdbc:clickhouse://localhost:8123/cameleer` | ClickHouse JDBC URL |
| `CAMELEER_SERVER_CLICKHOUSE_USERNAME` | No | `default` | ClickHouse user |
| `CAMELEER_SERVER_CLICKHOUSE_PASSWORD` | No | (empty) | ClickHouse password |
-| `SPRING_DATASOURCE_URL` | No | `jdbc:postgresql://localhost:5432/cameleer3` | PostgreSQL JDBC URL |
+| `SPRING_DATASOURCE_URL` | No | `jdbc:postgresql://localhost:5432/cameleer` | PostgreSQL JDBC URL |
| `SPRING_DATASOURCE_USERNAME` | No | `cameleer` | PostgreSQL user |
| `SPRING_DATASOURCE_PASSWORD` | No | `cameleer_dev` | PostgreSQL password |
| `CAMELEER_SERVER_INGESTION_BODYSIZELIMIT` | No | `16384` | Max body size per execution (bytes) |
diff --git a/docs/design-system-update-instructions.md b/docs/design-system-update-instructions.md
index d25813da..b1c4f64f 100644
--- a/docs/design-system-update-instructions.md
+++ b/docs/design-system-update-instructions.md
@@ -1,6 +1,6 @@
# Design System Update Instructions
-Status: Both changes below were implemented in `@cameleer/design-system` v0.1.19 and consumed by cameleer3-server.
+Status: Both changes below were implemented in `@cameleer/design-system` v0.1.19 and consumed by cameleer-server.
## 1. Sidebar: `onNavigate` callback prop — DONE (v0.1.19)
diff --git a/docs/superpowers/plans/2026-03-16-storage-layer-refactor.md b/docs/superpowers/plans/2026-03-16-storage-layer-refactor.md
index b4f7777a..bace6f3f 100644
--- a/docs/superpowers/plans/2026-03-16-storage-layer-refactor.md
+++ b/docs/superpowers/plans/2026-03-16-storage-layer-refactor.md
@@ -16,7 +16,7 @@
### New files
-**Core module** (`cameleer3-server-core/src/main/java/com/cameleer3/server/core/`):
+**Core module** (`cameleer-server-core/src/main/java/com/cameleer/server/core/`):
- `storage/ExecutionStore.java` — new interface replacing ExecutionRepository
- `storage/StatsStore.java` — new interface for stats from continuous aggregates
- `storage/SearchIndex.java` — new interface for OpenSearch operations
@@ -28,7 +28,7 @@
- `indexing/SearchIndexer.java` — debounced event listener for OpenSearch indexing
- `indexing/ExecutionUpdatedEvent.java` — event published after execution write
-**App module** (`cameleer3-server-app/src/main/java/com/cameleer3/server/app/`):
+**App module** (`cameleer-server-app/src/main/java/com/cameleer/server/app/`):
- `storage/PostgresExecutionStore.java` — ExecutionStore impl with upsert
- `storage/PostgresStatsStore.java` — StatsStore impl querying continuous aggregates
- `storage/PostgresDiagramStore.java` — DiagramStore impl
@@ -41,7 +41,7 @@
- `ingestion/MetricsFlushScheduler.java` — scheduled metrics buffer flush (replaces ClickHouseFlushScheduler, metrics only)
- `retention/RetentionScheduler.java` — scheduled job for drop_chunks and OpenSearch index deletion
-**Flyway migrations** (`cameleer3-server-app/src/main/resources/db/migration/`):
+**Flyway migrations** (`cameleer-server-app/src/main/resources/db/migration/`):
- `V1__extensions.sql` — CREATE EXTENSION timescaledb, timescaledb_toolkit
- `V2__executions.sql` — executions hypertable
- `V3__processor_executions.sql` — processor_executions hypertable
@@ -53,7 +53,7 @@
Note: Retention is NOT in a Flyway migration (Flyway migrations are immutable once applied). No V9 file. Retention is handled by `RetentionScheduler` at runtime with configurable intervals.
-**Test files** (`cameleer3-server-app/src/test/java/com/cameleer3/server/app/`):
+**Test files** (`cameleer-server-app/src/test/java/com/cameleer/server/app/`):
- `AbstractPostgresIT.java` — replaces AbstractClickHouseIT (TimescaleDB Testcontainer)
- `storage/PostgresExecutionStoreIT.java` — upsert, dedup, chunked arrival tests
- `storage/PostgresStatsStoreIT.java` — continuous aggregate query tests
@@ -64,35 +64,35 @@ Note: Retention is NOT in a Flyway migration (Flyway migrations are immutable on
### Files to modify
- `pom.xml` (root) — no changes needed
-- `cameleer3-server-app/pom.xml` — swap clickhouse-jdbc for postgresql + opensearch-java + flyway
-- `cameleer3-server-core/.../core/search/SearchService.java` — split: search delegates to SearchIndex, stats/timeseries to StatsStore
-- `cameleer3-server-core/.../core/detail/DetailService.java` — use ExecutionStore instead of ExecutionRepository
-- `cameleer3-server-core/.../core/detail/RawExecutionRow.java` — remove (replaced by normalized model)
-- `cameleer3-server-core/.../core/ingestion/IngestionService.java` — synchronous execution/diagram writes, keep buffer for metrics
-- `cameleer3-server-app/.../app/config/SearchBeanConfig.java` — wire StatsStore into SearchService
-- `cameleer3-server-app/.../app/config/IngestionBeanConfig.java` — update bean wiring
-- `cameleer3-server-app/src/main/resources/application.yml` — PostgreSQL + OpenSearch config
-- `cameleer3-server-app/src/test/resources/application-test.yml` — test config
+- `cameleer-server-app/pom.xml` — swap clickhouse-jdbc for postgresql + opensearch-java + flyway
+- `cameleer-server-core/.../core/search/SearchService.java` — split: search delegates to SearchIndex, stats/timeseries to StatsStore
+- `cameleer-server-core/.../core/detail/DetailService.java` — use ExecutionStore instead of ExecutionRepository
+- `cameleer-server-core/.../core/detail/RawExecutionRow.java` — remove (replaced by normalized model)
+- `cameleer-server-core/.../core/ingestion/IngestionService.java` — synchronous execution/diagram writes, keep buffer for metrics
+- `cameleer-server-app/.../app/config/SearchBeanConfig.java` — wire StatsStore into SearchService
+- `cameleer-server-app/.../app/config/IngestionBeanConfig.java` — update bean wiring
+- `cameleer-server-app/src/main/resources/application.yml` — PostgreSQL + OpenSearch config
+- `cameleer-server-app/src/test/resources/application-test.yml` — test config
### Files to delete
-- `cameleer3-server-app/.../app/storage/ClickHouseExecutionRepository.java`
-- `cameleer3-server-app/.../app/storage/ClickHouseDiagramRepository.java`
-- `cameleer3-server-app/.../app/storage/ClickHouseMetricsRepository.java`
-- `cameleer3-server-app/.../app/storage/ClickHouseUserRepository.java`
-- `cameleer3-server-app/.../app/storage/ClickHouseOidcConfigRepository.java`
-- `cameleer3-server-app/.../app/search/ClickHouseSearchEngine.java`
-- `cameleer3-server-app/.../app/ingestion/ClickHouseFlushScheduler.java`
-- `cameleer3-server-app/.../app/config/ClickHouseConfig.java`
-- `cameleer3-server-core/.../core/storage/ExecutionRepository.java`
-- `cameleer3-server-core/.../core/storage/DiagramRepository.java`
-- `cameleer3-server-core/.../core/storage/MetricsRepository.java`
-- `cameleer3-server-core/.../core/search/SearchEngine.java`
-- `cameleer3-server-core/.../core/detail/RawExecutionRow.java`
+- `cameleer-server-app/.../app/storage/ClickHouseExecutionRepository.java`
+- `cameleer-server-app/.../app/storage/ClickHouseDiagramRepository.java`
+- `cameleer-server-app/.../app/storage/ClickHouseMetricsRepository.java`
+- `cameleer-server-app/.../app/storage/ClickHouseUserRepository.java`
+- `cameleer-server-app/.../app/storage/ClickHouseOidcConfigRepository.java`
+- `cameleer-server-app/.../app/search/ClickHouseSearchEngine.java`
+- `cameleer-server-app/.../app/ingestion/ClickHouseFlushScheduler.java`
+- `cameleer-server-app/.../app/config/ClickHouseConfig.java`
+- `cameleer-server-core/.../core/storage/ExecutionRepository.java`
+- `cameleer-server-core/.../core/storage/DiagramRepository.java`
+- `cameleer-server-core/.../core/storage/MetricsRepository.java`
+- `cameleer-server-core/.../core/search/SearchEngine.java`
+- `cameleer-server-core/.../core/detail/RawExecutionRow.java`
Note: `UserRepository` and `OidcConfigRepository` interfaces in `core.security` are **kept** — the new Postgres implementations implement these existing interfaces. No rename needed since their contracts are unchanged.
-- `cameleer3-server-app/src/main/resources/clickhouse/*.sql` (all 8 files)
-- `cameleer3-server-app/src/test/.../app/AbstractClickHouseIT.java`
+- `cameleer-server-app/src/main/resources/clickhouse/*.sql` (all 8 files)
+- `cameleer-server-app/src/test/.../app/AbstractClickHouseIT.java`
---
@@ -101,11 +101,11 @@ Note: `UserRepository` and `OidcConfigRepository` interfaces in `core.security`
### Task 1: Update Maven dependencies
**Files:**
-- Modify: `cameleer3-server-app/pom.xml`
+- Modify: `cameleer-server-app/pom.xml`
- [ ] **Step 1: Replace ClickHouse JDBC with PostgreSQL driver + Flyway + OpenSearch client**
-In `cameleer3-server-app/pom.xml`, replace the ClickHouse dependency and add new ones:
+In `cameleer-server-app/pom.xml`, replace the ClickHouse dependency and add new ones:
Remove:
```xml
@@ -165,22 +165,22 @@ Note: `postgresql` driver and `flyway-core` versions are managed by Spring Boot
- [ ] **Step 2: Commit** (compilation will fail until ClickHouse code is deleted in Task 16 — this is expected)
```bash
-git add cameleer3-server-app/pom.xml
+git add cameleer-server-app/pom.xml
git commit -m "chore: swap ClickHouse deps for PostgreSQL, Flyway, OpenSearch"
```
### Task 2: Write Flyway migrations
**Files:**
-- Create: `cameleer3-server-app/src/main/resources/db/migration/V1__extensions.sql`
-- Create: `cameleer3-server-app/src/main/resources/db/migration/V2__executions.sql`
-- Create: `cameleer3-server-app/src/main/resources/db/migration/V3__processor_executions.sql`
-- Create: `cameleer3-server-app/src/main/resources/db/migration/V4__agent_metrics.sql`
-- Create: `cameleer3-server-app/src/main/resources/db/migration/V5__route_diagrams.sql`
-- Create: `cameleer3-server-app/src/main/resources/db/migration/V6__users.sql`
-- Create: `cameleer3-server-app/src/main/resources/db/migration/V7__oidc_config.sql`
-- Create: `cameleer3-server-app/src/main/resources/db/migration/V8__continuous_aggregates.sql`
-- Create: `cameleer3-server-app/src/main/resources/db/migration/V9__retention_policies.sql`
+- Create: `cameleer-server-app/src/main/resources/db/migration/V1__extensions.sql`
+- Create: `cameleer-server-app/src/main/resources/db/migration/V2__executions.sql`
+- Create: `cameleer-server-app/src/main/resources/db/migration/V3__processor_executions.sql`
+- Create: `cameleer-server-app/src/main/resources/db/migration/V4__agent_metrics.sql`
+- Create: `cameleer-server-app/src/main/resources/db/migration/V5__route_diagrams.sql`
+- Create: `cameleer-server-app/src/main/resources/db/migration/V6__users.sql`
+- Create: `cameleer-server-app/src/main/resources/db/migration/V7__oidc_config.sql`
+- Create: `cameleer-server-app/src/main/resources/db/migration/V8__continuous_aggregates.sql`
+- Create: `cameleer-server-app/src/main/resources/db/migration/V9__retention_policies.sql`
- [ ] **Step 1: Create V1__extensions.sql**
@@ -405,19 +405,19 @@ SELECT add_continuous_aggregate_policy('stats_1m_processor',
- [ ] **Step 9: Commit**
```bash
-git add cameleer3-server-app/src/main/resources/db/migration/
+git add cameleer-server-app/src/main/resources/db/migration/
git commit -m "feat: add Flyway migrations for PostgreSQL/TimescaleDB schema"
```
### Task 3: Create test base class with TimescaleDB Testcontainer
**Files:**
-- Create: `cameleer3-server-app/src/test/java/com/cameleer3/server/app/AbstractPostgresIT.java`
+- Create: `cameleer-server-app/src/test/java/com/cameleer/server/app/AbstractPostgresIT.java`
- [ ] **Step 1: Write AbstractPostgresIT**
```java
-package com.cameleer3.server.app;
+package com.cameleer.server.app;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.DynamicPropertyRegistry;
@@ -433,7 +433,7 @@ public abstract class AbstractPostgresIT {
@Container
static final PostgreSQLContainer> postgres =
new PostgreSQLContainer<>("timescale/timescaledb:latest-pg16")
- .withDatabaseName("cameleer3")
+ .withDatabaseName("cameleer")
.withUsername("cameleer")
.withPassword("test");
@@ -450,12 +450,12 @@ public abstract class AbstractPostgresIT {
- [ ] **Step 2: Write a smoke test to verify migrations run**
-Create `cameleer3-server-app/src/test/java/com/cameleer3/server/app/storage/FlywayMigrationIT.java`:
+Create `cameleer-server-app/src/test/java/com/cameleer/server/app/storage/FlywayMigrationIT.java`:
```java
-package com.cameleer3.server.app.storage;
+package com.cameleer.server.app.storage;
-import com.cameleer3.server.app.AbstractPostgresIT;
+import com.cameleer.server.app.AbstractPostgresIT;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
@@ -493,22 +493,22 @@ class FlywayMigrationIT extends AbstractPostgresIT {
- [ ] **Step 3: Verify test passes** (this test will not compile until Task 16 deletes ClickHouse code. Run it after Task 16 is complete. Listed here for logical grouping.)
-Run: `mvn test -pl cameleer3-server-app -Dtest=FlywayMigrationIT -q`
+Run: `mvn test -pl cameleer-server-app -Dtest=FlywayMigrationIT -q`
Expected: PASS — all migrations apply, tables and continuous aggregates exist
- [ ] **Step 4: Commit**
```bash
-git add cameleer3-server-app/src/test/java/com/cameleer3/server/app/AbstractPostgresIT.java
-git add cameleer3-server-app/src/test/java/com/cameleer3/server/app/storage/FlywayMigrationIT.java
+git add cameleer-server-app/src/test/java/com/cameleer/server/app/AbstractPostgresIT.java
+git add cameleer-server-app/src/test/java/com/cameleer/server/app/storage/FlywayMigrationIT.java
git commit -m "test: add TimescaleDB test base class and Flyway migration smoke test"
```
### Task 4: Update application.yml for PostgreSQL + OpenSearch
**Files:**
-- Modify: `cameleer3-server-app/src/main/resources/application.yml`
-- Modify: `cameleer3-server-app/src/test/resources/application-test.yml`
+- Modify: `cameleer-server-app/src/main/resources/application.yml`
+- Modify: `cameleer-server-app/src/test/resources/application-test.yml`
- [ ] **Step 1: Update application.yml datasource section**
@@ -516,7 +516,7 @@ Replace:
```yaml
spring:
datasource:
- url: jdbc:ch://localhost:8123/cameleer3
+ url: jdbc:ch://localhost:8123/cameleer
username: cameleer
password: cameleer_dev
driver-class-name: com.clickhouse.jdbc.ClickHouseDriver
@@ -526,7 +526,7 @@ With:
```yaml
spring:
datasource:
- url: jdbc:postgresql://localhost:5432/cameleer3
+ url: jdbc:postgresql://localhost:5432/cameleer
username: cameleer
password: ${CAMELEER_DB_PASSWORD:cameleer_dev}
driver-class-name: org.postgresql.Driver
@@ -565,8 +565,8 @@ opensearch:
- [ ] **Step 3: Commit**
```bash
-git add cameleer3-server-app/src/main/resources/application.yml
-git add cameleer3-server-app/src/test/resources/application-test.yml
+git add cameleer-server-app/src/main/resources/application.yml
+git add cameleer-server-app/src/test/resources/application-test.yml
git commit -m "config: switch datasource to PostgreSQL, add OpenSearch and Flyway config"
```
@@ -577,18 +577,18 @@ git commit -m "config: switch datasource to PostgreSQL, add OpenSearch and Flywa
### Task 5: Create new storage interfaces in core module
**Files:**
-- Create: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/storage/ExecutionStore.java`
-- Create: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/storage/StatsStore.java`
-- Create: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/storage/SearchIndex.java`
-- Create: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/storage/DiagramStore.java`
-- Create: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/storage/MetricsStore.java`
+- Create: `cameleer-server-core/src/main/java/com/cameleer/server/core/storage/ExecutionStore.java`
+- Create: `cameleer-server-core/src/main/java/com/cameleer/server/core/storage/StatsStore.java`
+- Create: `cameleer-server-core/src/main/java/com/cameleer/server/core/storage/SearchIndex.java`
+- Create: `cameleer-server-core/src/main/java/com/cameleer/server/core/storage/DiagramStore.java`
+- Create: `cameleer-server-core/src/main/java/com/cameleer/server/core/storage/MetricsStore.java`
- [ ] **Step 1: Create ExecutionStore interface**
```java
-package com.cameleer3.server.core.storage;
+package com.cameleer.server.core.storage;
-import com.cameleer3.server.core.detail.ProcessorNode;
+import com.cameleer.server.core.detail.ProcessorNode;
import java.time.Instant;
import java.util.List;
@@ -629,10 +629,10 @@ public interface ExecutionStore {
Supports all 4 aggregation levels: global, per-app, per-route, per-processor.
```java
-package com.cameleer3.server.core.storage;
+package com.cameleer.server.core.storage;
-import com.cameleer3.server.core.search.ExecutionStats;
-import com.cameleer3.server.core.search.StatsTimeseries;
+import com.cameleer.server.core.search.ExecutionStats;
+import com.cameleer.server.core.search.StatsTimeseries;
import java.time.Instant;
import java.util.List;
@@ -670,12 +670,12 @@ public interface StatsStore {
- [ ] **Step 3: Create SearchIndex interface**
```java
-package com.cameleer3.server.core.storage;
+package com.cameleer.server.core.storage;
-import com.cameleer3.server.core.search.ExecutionSummary;
-import com.cameleer3.server.core.search.SearchRequest;
-import com.cameleer3.server.core.search.SearchResult;
-import com.cameleer3.server.core.storage.model.ExecutionDocument;
+import com.cameleer.server.core.search.ExecutionSummary;
+import com.cameleer.server.core.search.SearchRequest;
+import com.cameleer.server.core.search.SearchResult;
+import com.cameleer.server.core.storage.model.ExecutionDocument;
public interface SearchIndex {
@@ -692,10 +692,10 @@ public interface SearchIndex {
- [ ] **Step 4: Create DiagramStore interface**
```java
-package com.cameleer3.server.core.storage;
+package com.cameleer.server.core.storage;
-import com.cameleer3.common.graph.RouteGraph;
-import com.cameleer3.server.core.ingestion.TaggedDiagram;
+import com.cameleer.common.graph.RouteGraph;
+import com.cameleer.server.core.ingestion.TaggedDiagram;
import java.util.List;
import java.util.Optional;
@@ -715,9 +715,9 @@ public interface DiagramStore {
- [ ] **Step 5: Create MetricsStore interface**
```java
-package com.cameleer3.server.core.storage;
+package com.cameleer.server.core.storage;
-import com.cameleer3.server.core.storage.model.MetricsSnapshot;
+import com.cameleer.server.core.storage.model.MetricsSnapshot;
import java.util.List;
@@ -730,20 +730,20 @@ public interface MetricsStore {
- [ ] **Step 6: Commit**
```bash
-git add cameleer3-server-core/src/main/java/com/cameleer3/server/core/storage/
+git add cameleer-server-core/src/main/java/com/cameleer/server/core/storage/
git commit -m "feat: add new storage interfaces for PostgreSQL/OpenSearch backends"
```
### Task 6: Create ExecutionDocument model and indexing event
**Files:**
-- Create: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/storage/model/ExecutionDocument.java`
-- Create: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/indexing/ExecutionUpdatedEvent.java`
+- Create: `cameleer-server-core/src/main/java/com/cameleer/server/core/storage/model/ExecutionDocument.java`
+- Create: `cameleer-server-core/src/main/java/com/cameleer/server/core/indexing/ExecutionUpdatedEvent.java`
- [ ] **Step 1: Create ExecutionDocument**
```java
-package com.cameleer3.server.core.storage.model;
+package com.cameleer.server.core.storage.model;
import java.time.Instant;
import java.util.List;
@@ -767,7 +767,7 @@ public record ExecutionDocument(
- [ ] **Step 2: Create ExecutionUpdatedEvent**
```java
-package com.cameleer3.server.core.indexing;
+package com.cameleer.server.core.indexing;
import java.time.Instant;
@@ -777,25 +777,25 @@ public record ExecutionUpdatedEvent(String executionId, Instant startTime) {}
- [ ] **Step 3: Commit**
```bash
-git add cameleer3-server-core/src/main/java/com/cameleer3/server/core/storage/model/ExecutionDocument.java
-git add cameleer3-server-core/src/main/java/com/cameleer3/server/core/indexing/
+git add cameleer-server-core/src/main/java/com/cameleer/server/core/storage/model/ExecutionDocument.java
+git add cameleer-server-core/src/main/java/com/cameleer/server/core/indexing/
git commit -m "feat: add ExecutionDocument model and ExecutionUpdatedEvent"
```
### Task 7: Update SearchService to use StatsStore for stats/timeseries
**Files:**
-- Modify: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/search/SearchService.java`
+- Modify: `cameleer-server-core/src/main/java/com/cameleer/server/core/search/SearchService.java`
- [ ] **Step 1: Refactor SearchService to accept SearchIndex + StatsStore**
Replace the single `SearchEngine` dependency with two dependencies:
```java
-package com.cameleer3.server.core.search;
+package com.cameleer.server.core.search;
-import com.cameleer3.server.core.storage.SearchIndex;
-import com.cameleer3.server.core.storage.StatsStore;
+import com.cameleer.server.core.storage.SearchIndex;
+import com.cameleer.server.core.storage.StatsStore;
import java.time.Instant;
import java.util.List;
@@ -840,24 +840,24 @@ public class SearchService {
- [ ] **Step 2: Commit**
```bash
-git add cameleer3-server-core/src/main/java/com/cameleer3/server/core/search/SearchService.java
+git add cameleer-server-core/src/main/java/com/cameleer/server/core/search/SearchService.java
git commit -m "refactor: SearchService uses SearchIndex + StatsStore instead of SearchEngine"
```
### Task 8: Update DetailService to use ExecutionStore
**Files:**
-- Modify: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/detail/DetailService.java`
+- Modify: `cameleer-server-core/src/main/java/com/cameleer/server/core/detail/DetailService.java`
- [ ] **Step 1: Rewrite DetailService to use ExecutionStore**
The tree reconstruction from parallel arrays is no longer needed. Processors are now individual records with `parentProcessorId` for tree structure.
```java
-package com.cameleer3.server.core.detail;
+package com.cameleer.server.core.detail;
-import com.cameleer3.server.core.storage.ExecutionStore;
-import com.cameleer3.server.core.storage.ExecutionStore.ProcessorRecord;
+import com.cameleer.server.core.storage.ExecutionStore;
+import com.cameleer.server.core.storage.ExecutionStore.ProcessorRecord;
import java.util.*;
@@ -920,30 +920,30 @@ public class DetailService {
- [ ] **Step 2: Commit**
```bash
-git add cameleer3-server-core/src/main/java/com/cameleer3/server/core/detail/DetailService.java
+git add cameleer-server-core/src/main/java/com/cameleer/server/core/detail/DetailService.java
git commit -m "refactor: DetailService uses ExecutionStore, tree built from parentProcessorId"
```
### Task 9: Update IngestionService for synchronous writes
**Files:**
-- Modify: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/ingestion/IngestionService.java`
+- Modify: `cameleer-server-core/src/main/java/com/cameleer/server/core/ingestion/IngestionService.java`
- [ ] **Step 1: Rewrite IngestionService**
Executions and diagrams become synchronous writes. Metrics keep the write buffer. Add event publishing for OpenSearch indexing.
```java
-package com.cameleer3.server.core.ingestion;
+package com.cameleer.server.core.ingestion;
-import com.cameleer3.common.model.ProcessorExecution;
-import com.cameleer3.common.model.RouteExecution;
-import com.cameleer3.server.core.indexing.ExecutionUpdatedEvent;
-import com.cameleer3.server.core.storage.DiagramStore;
-import com.cameleer3.server.core.storage.ExecutionStore;
-import com.cameleer3.server.core.storage.ExecutionStore.ExecutionRecord;
-import com.cameleer3.server.core.storage.ExecutionStore.ProcessorRecord;
-import com.cameleer3.server.core.storage.model.MetricsSnapshot;
+import com.cameleer.common.model.ProcessorExecution;
+import com.cameleer.common.model.RouteExecution;
+import com.cameleer.server.core.indexing.ExecutionUpdatedEvent;
+import com.cameleer.server.core.storage.DiagramStore;
+import com.cameleer.server.core.storage.ExecutionStore;
+import com.cameleer.server.core.storage.ExecutionStore.ExecutionRecord;
+import com.cameleer.server.core.storage.ExecutionStore.ProcessorRecord;
+import com.cameleer.server.core.storage.model.MetricsSnapshot;
import java.util.ArrayList;
import java.util.List;
@@ -1055,7 +1055,7 @@ public class IngestionService {
- [ ] **Step 2: Commit**
```bash
-git add cameleer3-server-core/src/main/java/com/cameleer3/server/core/ingestion/IngestionService.java
+git add cameleer-server-core/src/main/java/com/cameleer/server/core/ingestion/IngestionService.java
git commit -m "refactor: IngestionService uses synchronous ExecutionStore writes with event publishing"
```
@@ -1066,18 +1066,18 @@ git commit -m "refactor: IngestionService uses synchronous ExecutionStore writes
### Task 10: Implement PostgresExecutionStore
**Files:**
-- Create: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresExecutionStore.java`
-- Create: `cameleer3-server-app/src/test/java/com/cameleer3/server/app/storage/PostgresExecutionStoreIT.java`
+- Create: `cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresExecutionStore.java`
+- Create: `cameleer-server-app/src/test/java/com/cameleer/server/app/storage/PostgresExecutionStoreIT.java`
- [ ] **Step 1: Write the failing test**
```java
-package com.cameleer3.server.app.storage;
+package com.cameleer.server.app.storage;
-import com.cameleer3.server.app.AbstractPostgresIT;
-import com.cameleer3.server.core.storage.ExecutionStore;
-import com.cameleer3.server.core.storage.ExecutionStore.ExecutionRecord;
-import com.cameleer3.server.core.storage.ExecutionStore.ProcessorRecord;
+import com.cameleer.server.app.AbstractPostgresIT;
+import com.cameleer.server.core.storage.ExecutionStore;
+import com.cameleer.server.core.storage.ExecutionStore.ExecutionRecord;
+import com.cameleer.server.core.storage.ExecutionStore.ProcessorRecord;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
@@ -1159,15 +1159,15 @@ class PostgresExecutionStoreIT extends AbstractPostgresIT {
- [ ] **Step 2: Run test to verify it fails**
-Run: `mvn test -pl cameleer3-server-app -Dtest=PostgresExecutionStoreIT -q`
+Run: `mvn test -pl cameleer-server-app -Dtest=PostgresExecutionStoreIT -q`
Expected: FAIL — `ExecutionStore` bean not found
- [ ] **Step 3: Implement PostgresExecutionStore**
```java
-package com.cameleer3.server.app.storage;
+package com.cameleer.server.app.storage;
-import com.cameleer3.server.core.storage.ExecutionStore;
+import com.cameleer.server.core.storage.ExecutionStore;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Repository;
@@ -1300,34 +1300,34 @@ public class PostgresExecutionStore implements ExecutionStore {
- [ ] **Step 4: Run tests to verify they pass**
-Run: `mvn test -pl cameleer3-server-app -Dtest=PostgresExecutionStoreIT -q`
+Run: `mvn test -pl cameleer-server-app -Dtest=PostgresExecutionStoreIT -q`
Expected: PASS — all 3 tests green
- [ ] **Step 5: Commit**
```bash
-git add cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresExecutionStore.java
-git add cameleer3-server-app/src/test/java/com/cameleer3/server/app/storage/PostgresExecutionStoreIT.java
+git add cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresExecutionStore.java
+git add cameleer-server-app/src/test/java/com/cameleer/server/app/storage/PostgresExecutionStoreIT.java
git commit -m "feat: implement PostgresExecutionStore with upsert and dedup"
```
### Task 11: Implement PostgresStatsStore
**Files:**
-- Create: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresStatsStore.java`
-- Create: `cameleer3-server-app/src/test/java/com/cameleer3/server/app/storage/PostgresStatsStoreIT.java`
+- Create: `cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresStatsStore.java`
+- Create: `cameleer-server-app/src/test/java/com/cameleer/server/app/storage/PostgresStatsStoreIT.java`
- [ ] **Step 1: Write the failing test**
```java
-package com.cameleer3.server.app.storage;
+package com.cameleer.server.app.storage;
-import com.cameleer3.server.app.AbstractPostgresIT;
-import com.cameleer3.server.core.search.ExecutionStats;
-import com.cameleer3.server.core.search.StatsTimeseries;
-import com.cameleer3.server.core.storage.ExecutionStore;
-import com.cameleer3.server.core.storage.ExecutionStore.ExecutionRecord;
-import com.cameleer3.server.core.storage.StatsStore;
+import com.cameleer.server.app.AbstractPostgresIT;
+import com.cameleer.server.core.search.ExecutionStats;
+import com.cameleer.server.core.search.StatsTimeseries;
+import com.cameleer.server.core.storage.ExecutionStore;
+import com.cameleer.server.core.storage.ExecutionStore.ExecutionRecord;
+import com.cameleer.server.core.storage.StatsStore;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
@@ -1385,18 +1385,18 @@ class PostgresStatsStoreIT extends AbstractPostgresIT {
- [ ] **Step 2: Run test to verify it fails**
-Run: `mvn test -pl cameleer3-server-app -Dtest=PostgresStatsStoreIT -q`
+Run: `mvn test -pl cameleer-server-app -Dtest=PostgresStatsStoreIT -q`
Expected: FAIL — `StatsStore` bean not found
- [ ] **Step 3: Implement PostgresStatsStore**
```java
-package com.cameleer3.server.app.storage;
+package com.cameleer.server.app.storage;
-import com.cameleer3.server.core.search.ExecutionStats;
-import com.cameleer3.server.core.search.StatsTimeseries;
-import com.cameleer3.server.core.search.StatsTimeseries.TimeseriesBucket;
-import com.cameleer3.server.core.storage.StatsStore;
+import com.cameleer.server.core.search.ExecutionStats;
+import com.cameleer.server.core.search.StatsTimeseries;
+import com.cameleer.server.core.search.StatsTimeseries.TimeseriesBucket;
+import com.cameleer.server.core.storage.StatsStore;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;
@@ -1582,24 +1582,24 @@ public class PostgresStatsStore implements StatsStore {
- [ ] **Step 4: Run tests to verify they pass**
-Run: `mvn test -pl cameleer3-server-app -Dtest=PostgresStatsStoreIT -q`
+Run: `mvn test -pl cameleer-server-app -Dtest=PostgresStatsStoreIT -q`
Expected: PASS
- [ ] **Step 5: Commit**
```bash
-git add cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresStatsStore.java
-git add cameleer3-server-app/src/test/java/com/cameleer3/server/app/storage/PostgresStatsStoreIT.java
+git add cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresStatsStore.java
+git add cameleer-server-app/src/test/java/com/cameleer/server/app/storage/PostgresStatsStoreIT.java
git commit -m "feat: implement PostgresStatsStore querying continuous aggregates"
```
### Task 12: Implement PostgresDiagramStore, PostgresUserRepository, PostgresOidcConfigRepository, PostgresMetricsStore
**Files:**
-- Create: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresDiagramStore.java`
-- Create: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresUserRepository.java`
-- Create: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresOidcConfigRepository.java`
-- Create: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresMetricsStore.java`
+- Create: `cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresDiagramStore.java`
+- Create: `cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresUserRepository.java`
+- Create: `cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresOidcConfigRepository.java`
+- Create: `cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresMetricsStore.java`
- [ ] **Step 1: Write failing test for PostgresDiagramStore**
@@ -1620,10 +1620,10 @@ Straightforward CRUD with `ON CONFLICT (content_hash) DO NOTHING`. Port the SHA-
Implements `UserRepository` interface (existing interface in `core.security`, unchanged).
```java
-package com.cameleer3.server.app.storage;
+package com.cameleer.server.app.storage;
-import com.cameleer3.server.core.security.UserInfo;
-import com.cameleer3.server.core.security.UserRepository;
+import com.cameleer.server.core.security.UserInfo;
+import com.cameleer.server.core.security.UserRepository;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;
@@ -1696,10 +1696,10 @@ public class PostgresUserRepository implements UserRepository {
Implements `OidcConfigRepository` interface (existing interface in `core.security`).
```java
-package com.cameleer3.server.app.storage;
+package com.cameleer.server.app.storage;
-import com.cameleer3.server.core.security.OidcConfig;
-import com.cameleer3.server.core.security.OidcConfigRepository;
+import com.cameleer.server.core.security.OidcConfig;
+import com.cameleer.server.core.security.OidcConfigRepository;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;
@@ -1760,10 +1760,10 @@ public class PostgresOidcConfigRepository implements OidcConfigRepository {
- [ ] **Step 6: Implement PostgresMetricsStore**
```java
-package com.cameleer3.server.app.storage;
+package com.cameleer.server.app.storage;
-import com.cameleer3.server.core.storage.MetricsStore;
-import com.cameleer3.server.core.storage.model.MetricsSnapshot;
+import com.cameleer.server.core.storage.MetricsStore;
+import com.cameleer.server.core.storage.model.MetricsSnapshot;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.jdbc.core.JdbcTemplate;
@@ -1806,13 +1806,13 @@ public class PostgresMetricsStore implements MetricsStore {
- [ ] **Step 7: Run all store tests, verify pass**
-Run: `mvn test -pl cameleer3-server-app -Dtest="Postgres*IT" -q`
+Run: `mvn test -pl cameleer-server-app -Dtest="Postgres*IT" -q`
- [ ] **Step 8: Commit**
```bash
-git add cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/Postgres*.java
-git add cameleer3-server-app/src/test/java/com/cameleer3/server/app/storage/Postgres*.java
+git add cameleer-server-app/src/main/java/com/cameleer/server/app/storage/Postgres*.java
+git add cameleer-server-app/src/test/java/com/cameleer/server/app/storage/Postgres*.java
git commit -m "feat: implement PostgresDiagramStore, PostgresUserRepository, PostgresOidcConfigRepository, PostgresMetricsStore"
```
@@ -1823,22 +1823,22 @@ git commit -m "feat: implement PostgresDiagramStore, PostgresUserRepository, Pos
### Task 13: Implement OpenSearchIndex
**Files:**
-- Create: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/OpenSearchConfig.java`
-- Create: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/search/OpenSearchIndex.java`
-- Create: `cameleer3-server-app/src/test/java/com/cameleer3/server/app/search/OpenSearchIndexIT.java`
+- Create: `cameleer-server-app/src/main/java/com/cameleer/server/app/config/OpenSearchConfig.java`
+- Create: `cameleer-server-app/src/main/java/com/cameleer/server/app/search/OpenSearchIndex.java`
+- Create: `cameleer-server-app/src/test/java/com/cameleer/server/app/search/OpenSearchIndexIT.java`
- [ ] **Step 1: Write failing test**
```java
-package com.cameleer3.server.app.search;
+package com.cameleer.server.app.search;
-import com.cameleer3.server.app.AbstractPostgresIT;
-import com.cameleer3.server.core.search.ExecutionSummary;
-import com.cameleer3.server.core.search.SearchRequest;
-import com.cameleer3.server.core.search.SearchResult;
-import com.cameleer3.server.core.storage.SearchIndex;
-import com.cameleer3.server.core.storage.model.ExecutionDocument;
-import com.cameleer3.server.core.storage.model.ExecutionDocument.ProcessorDoc;
+import com.cameleer.server.app.AbstractPostgresIT;
+import com.cameleer.server.core.search.ExecutionSummary;
+import com.cameleer.server.core.search.SearchRequest;
+import com.cameleer.server.core.search.SearchResult;
+import com.cameleer.server.core.storage.SearchIndex;
+import com.cameleer.server.core.storage.model.ExecutionDocument;
+import com.cameleer.server.core.storage.model.ExecutionDocument.ProcessorDoc;
import org.junit.jupiter.api.Test;
import org.opensearch.testcontainers.OpensearchContainer;
import org.springframework.beans.factory.annotation.Autowired;
@@ -1922,7 +1922,7 @@ class OpenSearchIndexIT extends AbstractPostgresIT {
- [ ] **Step 2: Create OpenSearchConfig**
```java
-package com.cameleer3.server.app.config;
+package com.cameleer.server.app.config;
import org.apache.hc.client5.http.impl.nio.PoolingAsyncClientConnectionManagerBuilder;
import org.apache.hc.core5.http.HttpHost;
@@ -1950,14 +1950,14 @@ public class OpenSearchConfig {
- [ ] **Step 3: Implement OpenSearchIndex**
```java
-package com.cameleer3.server.app.search;
+package com.cameleer.server.app.search;
-import com.cameleer3.server.core.search.ExecutionSummary;
-import com.cameleer3.server.core.search.SearchRequest;
-import com.cameleer3.server.core.search.SearchResult;
-import com.cameleer3.server.core.storage.SearchIndex;
-import com.cameleer3.server.core.storage.model.ExecutionDocument;
-import com.cameleer3.server.core.storage.model.ExecutionDocument.ProcessorDoc;
+import com.cameleer.server.core.search.ExecutionSummary;
+import com.cameleer.server.core.search.SearchRequest;
+import com.cameleer.server.core.search.SearchResult;
+import com.cameleer.server.core.storage.SearchIndex;
+import com.cameleer.server.core.storage.model.ExecutionDocument;
+import com.cameleer.server.core.storage.model.ExecutionDocument.ProcessorDoc;
import jakarta.annotation.PostConstruct;
import org.opensearch.client.opensearch.OpenSearchClient;
import org.opensearch.client.opensearch._types.FieldValue;
@@ -2264,34 +2264,34 @@ public class OpenSearchIndex implements SearchIndex {
- [ ] **Step 4: Run tests to verify they pass**
-Run: `mvn test -pl cameleer3-server-app -Dtest=OpenSearchIndexIT -q`
+Run: `mvn test -pl cameleer-server-app -Dtest=OpenSearchIndexIT -q`
Expected: PASS
- [ ] **Step 5: Commit**
```bash
-git add cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/OpenSearchConfig.java
-git add cameleer3-server-app/src/main/java/com/cameleer3/server/app/search/OpenSearchIndex.java
-git add cameleer3-server-app/src/test/java/com/cameleer3/server/app/search/OpenSearchIndexIT.java
+git add cameleer-server-app/src/main/java/com/cameleer/server/app/config/OpenSearchConfig.java
+git add cameleer-server-app/src/main/java/com/cameleer/server/app/search/OpenSearchIndex.java
+git add cameleer-server-app/src/test/java/com/cameleer/server/app/search/OpenSearchIndexIT.java
git commit -m "feat: implement OpenSearchIndex with full-text and wildcard search"
```
### Task 14: Implement SearchIndexer (debounced event-driven indexer)
**Files:**
-- Create: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/indexing/SearchIndexer.java`
+- Create: `cameleer-server-core/src/main/java/com/cameleer/server/core/indexing/SearchIndexer.java`
- [ ] **Step 1: Implement SearchIndexer**
```java
-package com.cameleer3.server.core.indexing;
+package com.cameleer.server.core.indexing;
-import com.cameleer3.server.core.storage.ExecutionStore;
-import com.cameleer3.server.core.storage.ExecutionStore.ExecutionRecord;
-import com.cameleer3.server.core.storage.ExecutionStore.ProcessorRecord;
-import com.cameleer3.server.core.storage.SearchIndex;
-import com.cameleer3.server.core.storage.model.ExecutionDocument;
-import com.cameleer3.server.core.storage.model.ExecutionDocument.ProcessorDoc;
+import com.cameleer.server.core.storage.ExecutionStore;
+import com.cameleer.server.core.storage.ExecutionStore.ExecutionRecord;
+import com.cameleer.server.core.storage.ExecutionStore.ProcessorRecord;
+import com.cameleer.server.core.storage.SearchIndex;
+import com.cameleer.server.core.storage.model.ExecutionDocument;
+import com.cameleer.server.core.storage.model.ExecutionDocument.ProcessorDoc;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -2368,7 +2368,7 @@ public class SearchIndexer {
- [ ] **Step 2: Commit**
```bash
-git add cameleer3-server-core/src/main/java/com/cameleer3/server/core/indexing/SearchIndexer.java
+git add cameleer-server-core/src/main/java/com/cameleer/server/core/indexing/SearchIndexer.java
git commit -m "feat: implement debounced SearchIndexer for async OpenSearch indexing"
```
@@ -2379,25 +2379,25 @@ git commit -m "feat: implement debounced SearchIndexer for async OpenSearch inde
### Task 15: Create bean configuration and wire everything
**Files:**
-- Create: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/StorageBeanConfig.java`
-- Create: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/ingestion/MetricsFlushScheduler.java`
-- Create: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/retention/RetentionScheduler.java`
-- Modify: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/SearchBeanConfig.java`
-- Modify: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/IngestionBeanConfig.java`
+- Create: `cameleer-server-app/src/main/java/com/cameleer/server/app/config/StorageBeanConfig.java`
+- Create: `cameleer-server-app/src/main/java/com/cameleer/server/app/ingestion/MetricsFlushScheduler.java`
+- Create: `cameleer-server-app/src/main/java/com/cameleer/server/app/retention/RetentionScheduler.java`
+- Modify: `cameleer-server-app/src/main/java/com/cameleer/server/app/config/SearchBeanConfig.java`
+- Modify: `cameleer-server-app/src/main/java/com/cameleer/server/app/config/IngestionBeanConfig.java`
- [ ] **Step 1: Create StorageBeanConfig**
Wire `DetailService`, `SearchIndexer`, `IngestionService` with new store beans:
```java
-package com.cameleer3.server.app.config;
+package com.cameleer.server.app.config;
-import com.cameleer3.server.core.detail.DetailService;
-import com.cameleer3.server.core.indexing.SearchIndexer;
-import com.cameleer3.server.core.ingestion.IngestionService;
-import com.cameleer3.server.core.ingestion.WriteBuffer;
-import com.cameleer3.server.core.storage.*;
-import com.cameleer3.server.core.storage.model.MetricsSnapshot;
+import com.cameleer.server.core.detail.DetailService;
+import com.cameleer.server.core.indexing.SearchIndexer;
+import com.cameleer.server.core.ingestion.IngestionService;
+import com.cameleer.server.core.ingestion.WriteBuffer;
+import com.cameleer.server.core.storage.*;
+import com.cameleer.server.core.storage.model.MetricsSnapshot;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@@ -2453,15 +2453,15 @@ public WriteBuffer metricsBuffer(IngestionConfig config) {
- [ ] **Step 4: Create MetricsFlushScheduler**
-Create `cameleer3-server-app/src/main/java/com/cameleer3/server/app/ingestion/MetricsFlushScheduler.java`:
+Create `cameleer-server-app/src/main/java/com/cameleer/server/app/ingestion/MetricsFlushScheduler.java`:
```java
-package com.cameleer3.server.app.ingestion;
+package com.cameleer.server.app.ingestion;
-import com.cameleer3.server.app.config.IngestionConfig;
-import com.cameleer3.server.core.ingestion.WriteBuffer;
-import com.cameleer3.server.core.storage.MetricsStore;
-import com.cameleer3.server.core.storage.model.MetricsSnapshot;
+import com.cameleer.server.app.config.IngestionConfig;
+import com.cameleer.server.core.ingestion.WriteBuffer;
+import com.cameleer.server.core.storage.MetricsStore;
+import com.cameleer.server.core.storage.model.MetricsSnapshot;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.SmartLifecycle;
@@ -2519,10 +2519,10 @@ public class MetricsFlushScheduler implements SmartLifecycle {
- [ ] **Step 5: Create RetentionScheduler**
-Create `cameleer3-server-app/src/main/java/com/cameleer3/server/app/retention/RetentionScheduler.java`:
+Create `cameleer-server-app/src/main/java/com/cameleer/server/app/retention/RetentionScheduler.java`:
```java
-package com.cameleer3.server.app.retention;
+package com.cameleer.server.app.retention;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -2575,11 +2575,11 @@ public class RetentionScheduler {
- [ ] **Step 6: Commit**
```bash
-git add cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/StorageBeanConfig.java
-git add cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/SearchBeanConfig.java
-git add cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/IngestionBeanConfig.java
-git add cameleer3-server-app/src/main/java/com/cameleer3/server/app/ingestion/MetricsFlushScheduler.java
-git add cameleer3-server-app/src/main/java/com/cameleer3/server/app/retention/RetentionScheduler.java
+git add cameleer-server-app/src/main/java/com/cameleer/server/app/config/StorageBeanConfig.java
+git add cameleer-server-app/src/main/java/com/cameleer/server/app/config/SearchBeanConfig.java
+git add cameleer-server-app/src/main/java/com/cameleer/server/app/config/IngestionBeanConfig.java
+git add cameleer-server-app/src/main/java/com/cameleer/server/app/ingestion/MetricsFlushScheduler.java
+git add cameleer-server-app/src/main/java/com/cameleer/server/app/retention/RetentionScheduler.java
git commit -m "feat: wire new storage beans, add MetricsFlushScheduler and RetentionScheduler"
```
@@ -2591,10 +2591,10 @@ git commit -m "feat: wire new storage beans, add MetricsFlushScheduler and Reten
- [ ] **Step 1: Delete ClickHouse implementations**
```bash
-rm cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/ClickHouse*.java
-rm cameleer3-server-app/src/main/java/com/cameleer3/server/app/search/ClickHouseSearchEngine.java
-rm cameleer3-server-app/src/main/java/com/cameleer3/server/app/ingestion/ClickHouseFlushScheduler.java
-rm cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/ClickHouseConfig.java
+rm cameleer-server-app/src/main/java/com/cameleer/server/app/storage/ClickHouse*.java
+rm cameleer-server-app/src/main/java/com/cameleer/server/app/search/ClickHouseSearchEngine.java
+rm cameleer-server-app/src/main/java/com/cameleer/server/app/ingestion/ClickHouseFlushScheduler.java
+rm cameleer-server-app/src/main/java/com/cameleer/server/app/config/ClickHouseConfig.java
```
- [ ] **Step 2: Delete old core interfaces replaced by new ones**
@@ -2602,23 +2602,23 @@ rm cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/ClickHouse
`UserRepository` and `OidcConfigRepository` in `core.security` are **kept** — the new Postgres implementations implement them. Only interfaces replaced by new storage interfaces are deleted.
```bash
-rm cameleer3-server-core/src/main/java/com/cameleer3/server/core/storage/ExecutionRepository.java
-rm cameleer3-server-core/src/main/java/com/cameleer3/server/core/storage/DiagramRepository.java
-rm cameleer3-server-core/src/main/java/com/cameleer3/server/core/storage/MetricsRepository.java
-rm cameleer3-server-core/src/main/java/com/cameleer3/server/core/search/SearchEngine.java
-rm cameleer3-server-core/src/main/java/com/cameleer3/server/core/detail/RawExecutionRow.java
+rm cameleer-server-core/src/main/java/com/cameleer/server/core/storage/ExecutionRepository.java
+rm cameleer-server-core/src/main/java/com/cameleer/server/core/storage/DiagramRepository.java
+rm cameleer-server-core/src/main/java/com/cameleer/server/core/storage/MetricsRepository.java
+rm cameleer-server-core/src/main/java/com/cameleer/server/core/search/SearchEngine.java
+rm cameleer-server-core/src/main/java/com/cameleer/server/core/detail/RawExecutionRow.java
```
- [ ] **Step 3: Delete ClickHouse SQL migrations**
```bash
-rm -r cameleer3-server-app/src/main/resources/clickhouse/
+rm -r cameleer-server-app/src/main/resources/clickhouse/
```
- [ ] **Step 4: Delete old test base class**
```bash
-rm cameleer3-server-app/src/test/java/com/cameleer3/server/app/AbstractClickHouseIT.java
+rm cameleer-server-app/src/test/java/com/cameleer/server/app/AbstractClickHouseIT.java
```
- [ ] **Step 5: Fix compilation errors in specific files**
@@ -2651,7 +2651,7 @@ git commit -m "refactor: remove all ClickHouse code, old interfaces, and SQL mig
### Task 17: Update existing integration tests
**Files:**
-- Modify: all IT files under `cameleer3-server-app/src/test/`
+- Modify: all IT files under `cameleer-server-app/src/test/`
- [ ] **Step 1: Update all ITs to extend AbstractPostgresIT**
@@ -2689,7 +2689,7 @@ git commit -m "test: migrate all integration tests from ClickHouse to PostgreSQL
- [ ] **Step 1: Update Dockerfile**
-No JDBC driver changes needed in Dockerfile (drivers are in the fat JAR). Just verify the `REGISTRY_TOKEN` build arg still works for `cameleer3-common` resolution.
+No JDBC driver changes needed in Dockerfile (drivers are in the fat JAR). Just verify the `REGISTRY_TOKEN` build arg still works for `cameleer-common` resolution.
- [ ] **Step 2: Update K8s manifests**
@@ -2717,7 +2717,7 @@ Changes needed:
- Docker build: no ClickHouse references in the image (it's a fat JAR, driver is bundled)
- Deploy step: update K8s secret names from `clickhouse-credentials` to `postgres-credentials`
- Deploy step: add OpenSearch deployment manifests
-- Verify `REGISTRY_TOKEN` build arg still works for `cameleer3-common`
+- Verify `REGISTRY_TOKEN` build arg still works for `cameleer-common`
- Integration tests still skipped in CI (`-DskipITs`) — Testcontainers needs Docker-in-Docker
- [ ] **Step 2: Commit**
@@ -2738,7 +2738,7 @@ Run: `mvn spring-boot:run` (briefly, to generate spec), then fetch `/api/v1/api-
- [ ] **Step 2: Commit**
```bash
-git add cameleer3-server-app/src/main/resources/static/openapi.json
+git add cameleer-server-app/src/main/resources/static/openapi.json
git commit -m "docs: regenerate openapi.json after storage layer refactor"
```
diff --git a/docs/superpowers/plans/2026-03-17-infrastructure-overview.md b/docs/superpowers/plans/2026-03-17-infrastructure-overview.md
index 2146d846..412899f0 100644
--- a/docs/superpowers/plans/2026-03-17-infrastructure-overview.md
+++ b/docs/superpowers/plans/2026-03-17-infrastructure-overview.md
@@ -27,7 +27,7 @@
| `core/.../admin/ThresholdRepository.java` | Interface: find + save |
| `core/.../indexing/SearchIndexerStats.java` | Interface: queue depth, failed count, rate, etc. |
-> `core/...` = `cameleer3-server-core/src/main/java/com/cameleer3/server/core`
+> `core/...` = `cameleer-server-core/src/main/java/com/cameleer/server/core`
### New Files — Backend (App Module)
@@ -53,8 +53,8 @@
| `resources/db/migration/V9__admin_thresholds.sql` | Flyway: admin_thresholds table |
| `resources/db/migration/V10__audit_log.sql` | Flyway: audit_log table |
-> `app/...` = `cameleer3-server-app/src/main/java/com/cameleer3/server/app`
-> `resources/...` = `cameleer3-server-app/src/main/resources`
+> `app/...` = `cameleer-server-app/src/main/java/com/cameleer/server/app`
+> `resources/...` = `cameleer-server-app/src/main/resources`
### New Files — Backend (Tests)
@@ -66,7 +66,7 @@
| `test/.../controller/ThresholdAdminControllerIT.java` | Integration test: threshold endpoints |
| `test/.../admin/AuditServiceTest.java` | Unit test: audit service logic |
-> `test/...` = `cameleer3-server-app/src/test/java/com/cameleer3/server/app`
+> `test/...` = `cameleer-server-app/src/test/java/com/cameleer/server/app`
### New Files — Frontend
@@ -110,8 +110,8 @@
### Task 1: Flyway Migrations
**Files:**
-- Create: `cameleer3-server-app/src/main/resources/db/migration/V9__admin_thresholds.sql`
-- Create: `cameleer3-server-app/src/main/resources/db/migration/V10__audit_log.sql`
+- Create: `cameleer-server-app/src/main/resources/db/migration/V9__admin_thresholds.sql`
+- Create: `cameleer-server-app/src/main/resources/db/migration/V10__audit_log.sql`
- [ ] **Step 1: Create V9 migration**
@@ -150,14 +150,14 @@ CREATE INDEX idx_audit_log_target ON audit_log (target);
- [ ] **Step 3: Verify migrations compile**
-Run: `cd cameleer3-server && mvn clean compile -pl cameleer3-server-app`
+Run: `cd cameleer-server && mvn clean compile -pl cameleer-server-app`
Expected: BUILD SUCCESS
- [ ] **Step 4: Commit**
```bash
-git add cameleer3-server-app/src/main/resources/db/migration/V9__admin_thresholds.sql \
- cameleer3-server-app/src/main/resources/db/migration/V10__audit_log.sql
+git add cameleer-server-app/src/main/resources/db/migration/V9__admin_thresholds.sql \
+ cameleer-server-app/src/main/resources/db/migration/V10__audit_log.sql
git commit -m "feat: add Flyway V9 (thresholds) and V10 (audit_log) migrations"
```
@@ -166,16 +166,16 @@ git commit -m "feat: add Flyway V9 (thresholds) and V10 (audit_log) migrations"
### Task 2: Core Module — Audit Domain Model + Repository Interface
**Files:**
-- Create: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/admin/AuditCategory.java`
-- Create: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/admin/AuditResult.java`
-- Create: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/admin/AuditRecord.java`
-- Create: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/admin/AuditRepository.java`
-- Create: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/admin/AuditService.java`
+- Create: `cameleer-server-core/src/main/java/com/cameleer/server/core/admin/AuditCategory.java`
+- Create: `cameleer-server-core/src/main/java/com/cameleer/server/core/admin/AuditResult.java`
+- Create: `cameleer-server-core/src/main/java/com/cameleer/server/core/admin/AuditRecord.java`
+- Create: `cameleer-server-core/src/main/java/com/cameleer/server/core/admin/AuditRepository.java`
+- Create: `cameleer-server-core/src/main/java/com/cameleer/server/core/admin/AuditService.java`
- [ ] **Step 1: Create AuditCategory enum**
```java
-package com.cameleer3.server.core.admin;
+package com.cameleer.server.core.admin;
public enum AuditCategory {
INFRA, AUTH, USER_MGMT, CONFIG
@@ -185,7 +185,7 @@ public enum AuditCategory {
- [ ] **Step 2: Create AuditResult enum**
```java
-package com.cameleer3.server.core.admin;
+package com.cameleer.server.core.admin;
public enum AuditResult {
SUCCESS, FAILURE
@@ -195,7 +195,7 @@ public enum AuditResult {
- [ ] **Step 3: Create AuditRecord**
```java
-package com.cameleer3.server.core.admin;
+package com.cameleer.server.core.admin;
import java.time.Instant;
import java.util.Map;
@@ -224,7 +224,7 @@ public record AuditRecord(
- [ ] **Step 4: Create AuditRepository interface**
```java
-package com.cameleer3.server.core.admin;
+package com.cameleer.server.core.admin;
import java.time.Instant;
import java.util.List;
@@ -256,7 +256,7 @@ public interface AuditRepository {
The service lives in core so it can be referenced by any controller. It depends on `AuditRepository` (interface) and uses SLF4J for dual logging. It extracts username/IP/user-agent from Spring Security context and servlet request.
```java
-package com.cameleer3.server.core.admin;
+package com.cameleer.server.core.admin;
import jakarta.servlet.http.HttpServletRequest;
import org.slf4j.Logger;
@@ -307,7 +307,7 @@ public class AuditService {
}
```
-**Note:** This class uses `jakarta.servlet` and `org.springframework.security` — the core POM must have these as `provided` scope dependencies if not already present. Check `cameleer3-server-core/pom.xml` and add if needed:
+**Note:** This class uses `jakarta.servlet` and `org.springframework.security` — the core POM must have these as `provided` scope dependencies if not already present. Check `cameleer-server-core/pom.xml` and add if needed:
```xml
jakarta.servlet
@@ -364,14 +364,14 @@ class AuditServiceTest {
- [ ] **Step 7: Verify core module compiles and test passes**
-Run: `mvn clean compile -pl cameleer3-server-core`
-Run: `mvn test -pl cameleer3-server-app -Dtest=AuditServiceTest`
+Run: `mvn clean compile -pl cameleer-server-core`
+Run: `mvn test -pl cameleer-server-app -Dtest=AuditServiceTest`
Expected: BUILD SUCCESS, tests PASS
- [ ] **Step 8: Commit**
```bash
-git add cameleer3-server-core/ cameleer3-server-app/src/test/
+git add cameleer-server-core/ cameleer-server-app/src/test/
git commit -m "feat: add audit domain model, repository interface, AuditService, and unit test"
```
@@ -380,13 +380,13 @@ git commit -m "feat: add audit domain model, repository interface, AuditService,
### Task 3: Core Module — Threshold Model + Repository Interface
**Files:**
-- Create: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/admin/ThresholdConfig.java`
-- Create: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/admin/ThresholdRepository.java`
+- Create: `cameleer-server-core/src/main/java/com/cameleer/server/core/admin/ThresholdConfig.java`
+- Create: `cameleer-server-core/src/main/java/com/cameleer/server/core/admin/ThresholdRepository.java`
- [ ] **Step 1: Create ThresholdConfig record**
```java
-package com.cameleer3.server.core.admin;
+package com.cameleer.server.core.admin;
public record ThresholdConfig(
DatabaseThresholds database,
@@ -427,7 +427,7 @@ public record ThresholdConfig(
- [ ] **Step 2: Create ThresholdRepository interface**
```java
-package com.cameleer3.server.core.admin;
+package com.cameleer.server.core.admin;
import java.util.Optional;
@@ -439,10 +439,10 @@ public interface ThresholdRepository {
- [ ] **Step 3: Compile and commit**
-Run: `mvn clean compile -pl cameleer3-server-core`
+Run: `mvn clean compile -pl cameleer-server-core`
```bash
-git add cameleer3-server-core/
+git add cameleer-server-core/
git commit -m "feat: add ThresholdConfig model and ThresholdRepository interface"
```
@@ -451,13 +451,13 @@ git commit -m "feat: add ThresholdConfig model and ThresholdRepository interface
### Task 4: Core Module — SearchIndexerStats Interface + Instrumentation
**Files:**
-- Create: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/indexing/SearchIndexerStats.java`
-- Modify: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/indexing/SearchIndexer.java`
+- Create: `cameleer-server-core/src/main/java/com/cameleer/server/core/indexing/SearchIndexerStats.java`
+- Modify: `cameleer-server-core/src/main/java/com/cameleer/server/core/indexing/SearchIndexer.java`
- [ ] **Step 1: Create SearchIndexerStats interface**
```java
-package com.cameleer3.server.core.indexing;
+package com.cameleer.server.core.indexing;
import java.time.Instant;
@@ -518,10 +518,10 @@ private void updateRate() {
- [ ] **Step 3: Compile and commit**
-Run: `mvn clean compile -pl cameleer3-server-core`
+Run: `mvn clean compile -pl cameleer-server-core`
```bash
-git add cameleer3-server-core/
+git add cameleer-server-core/
git commit -m "feat: add SearchIndexerStats interface and instrument SearchIndexer"
```
@@ -530,8 +530,8 @@ git commit -m "feat: add SearchIndexerStats interface and instrument SearchIndex
### Task 5: App Module — Postgres Repository Implementations
**Files:**
-- Create: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresAuditRepository.java`
-- Create: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresThresholdRepository.java`
+- Create: `cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresAuditRepository.java`
+- Create: `cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresThresholdRepository.java`
- [ ] **Step 1: Create PostgresAuditRepository**
@@ -686,10 +686,10 @@ public class PostgresThresholdRepository implements ThresholdRepository {
- [ ] **Step 3: Compile and commit**
-Run: `mvn clean compile -pl cameleer3-server-app`
+Run: `mvn clean compile -pl cameleer-server-app`
```bash
-git add cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/
+git add cameleer-server-app/src/main/java/com/cameleer/server/app/storage/
git commit -m "feat: add Postgres implementations for AuditRepository and ThresholdRepository"
```
@@ -698,10 +698,10 @@ git commit -m "feat: add Postgres implementations for AuditRepository and Thresh
### Task 6: App Module — Bean Wiring + Security Retrofit
**Files:**
-- Modify: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/StorageBeanConfig.java`
-- Modify: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/security/SecurityConfig.java`
-- Modify: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/OidcConfigAdminController.java`
-- Modify: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/UserAdminController.java`
+- Modify: `cameleer-server-app/src/main/java/com/cameleer/server/app/config/StorageBeanConfig.java`
+- Modify: `cameleer-server-app/src/main/java/com/cameleer/server/app/security/SecurityConfig.java`
+- Modify: `cameleer-server-app/src/main/java/com/cameleer/server/app/controller/OidcConfigAdminController.java`
+- Modify: `cameleer-server-app/src/main/java/com/cameleer/server/app/controller/UserAdminController.java`
- [ ] **Step 1: Wire AuditService bean in StorageBeanConfig**
@@ -757,7 +757,7 @@ Log OIDC login:
Run: `mvn clean compile`
```bash
-git add cameleer3-server-app/
+git add cameleer-server-app/
git commit -m "feat: wire AuditService, enable method security, retrofit audit logging into existing controllers"
```
@@ -898,10 +898,10 @@ public record ThresholdConfigRequest(
- [ ] **Step 4: Compile and commit**
-Run: `mvn clean compile -pl cameleer3-server-app`
+Run: `mvn clean compile -pl cameleer-server-app`
```bash
-git add cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/
+git add cameleer-server-app/src/main/java/com/cameleer/server/app/dto/
git commit -m "feat: add response/request DTOs for admin infrastructure endpoints"
```
@@ -910,8 +910,8 @@ git commit -m "feat: add response/request DTOs for admin infrastructure endpoint
### Task 8: App Module — DatabaseAdminController
**Files:**
-- Create: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/DatabaseAdminController.java`
-- Create: `cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/DatabaseAdminControllerIT.java`
+- Create: `cameleer-server-app/src/main/java/com/cameleer/server/app/controller/DatabaseAdminController.java`
+- Create: `cameleer-server-app/src/test/java/com/cameleer/server/app/controller/DatabaseAdminControllerIT.java`
- [ ] **Step 1: Write integration test**
@@ -926,7 +926,7 @@ Use `TestRestTemplate` with admin JWT for authentication. Create a helper that g
- [ ] **Step 2: Run test to verify it fails**
-Run: `mvn test -pl cameleer3-server-app -Dtest=DatabaseAdminControllerIT`
+Run: `mvn test -pl cameleer-server-app -Dtest=DatabaseAdminControllerIT`
Expected: FAIL — controller class does not exist
- [ ] **Step 3: Implement DatabaseAdminController**
@@ -1025,13 +1025,13 @@ public class DatabaseAdminController {
- [ ] **Step 4: Run integration test**
-Run: `mvn test -pl cameleer3-server-app -Dtest=DatabaseAdminControllerIT`
+Run: `mvn test -pl cameleer-server-app -Dtest=DatabaseAdminControllerIT`
Expected: PASS
- [ ] **Step 5: Commit**
```bash
-git add cameleer3-server-app/
+git add cameleer-server-app/
git commit -m "feat: add DatabaseAdminController with status, pool, tables, queries, and kill endpoints"
```
@@ -1040,8 +1040,8 @@ git commit -m "feat: add DatabaseAdminController with status, pool, tables, quer
### Task 9: App Module — OpenSearchAdminController
**Files:**
-- Create: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/OpenSearchAdminController.java`
-- Create: `cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/OpenSearchAdminControllerIT.java`
+- Create: `cameleer-server-app/src/main/java/com/cameleer/server/app/controller/OpenSearchAdminController.java`
+- Create: `cameleer-server-app/src/test/java/com/cameleer/server/app/controller/OpenSearchAdminControllerIT.java`
- [ ] **Step 1: Write integration test**
@@ -1054,7 +1054,7 @@ Extend `AbstractPostgresIT` (which starts both PG and OpenSearch containers). Te
- [ ] **Step 2: Run test to verify it fails**
-Run: `mvn test -pl cameleer3-server-app -Dtest=OpenSearchAdminControllerIT`
+Run: `mvn test -pl cameleer-server-app -Dtest=OpenSearchAdminControllerIT`
Expected: FAIL
- [ ] **Step 3: Implement OpenSearchAdminController**
@@ -1242,13 +1242,13 @@ public class OpenSearchAdminController {
- [ ] **Step 4: Run integration test**
-Run: `mvn test -pl cameleer3-server-app -Dtest=OpenSearchAdminControllerIT`
+Run: `mvn test -pl cameleer-server-app -Dtest=OpenSearchAdminControllerIT`
Expected: PASS
- [ ] **Step 5: Commit**
```bash
-git add cameleer3-server-app/
+git add cameleer-server-app/
git commit -m "feat: add OpenSearchAdminController with status, pipeline, indices, performance, and delete endpoints"
```
@@ -1257,10 +1257,10 @@ git commit -m "feat: add OpenSearchAdminController with status, pipeline, indice
### Task 10: App Module — ThresholdAdminController + AuditLogController
**Files:**
-- Create: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/ThresholdAdminController.java`
-- Create: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/AuditLogController.java`
-- Create: `cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/ThresholdAdminControllerIT.java`
-- Create: `cameleer3-server-app/src/test/java/com/cameleer3/server/app/controller/AuditLogControllerIT.java`
+- Create: `cameleer-server-app/src/main/java/com/cameleer/server/app/controller/ThresholdAdminController.java`
+- Create: `cameleer-server-app/src/main/java/com/cameleer/server/app/controller/AuditLogController.java`
+- Create: `cameleer-server-app/src/test/java/com/cameleer/server/app/controller/ThresholdAdminControllerIT.java`
+- Create: `cameleer-server-app/src/test/java/com/cameleer/server/app/controller/AuditLogControllerIT.java`
- [ ] **Step 1: Write ThresholdAdminController integration test**
@@ -1351,13 +1351,13 @@ public class AuditLogController {
- [ ] **Step 5: Run tests**
-Run: `mvn test -pl cameleer3-server-app -Dtest="ThresholdAdminControllerIT,AuditLogControllerIT"`
+Run: `mvn test -pl cameleer-server-app -Dtest="ThresholdAdminControllerIT,AuditLogControllerIT"`
Expected: PASS
- [ ] **Step 6: Commit**
```bash
-git add cameleer3-server-app/
+git add cameleer-server-app/
git commit -m "feat: add ThresholdAdminController and AuditLogController with integration tests"
```
diff --git a/docs/superpowers/plans/2026-03-17-rbac-crud-gaps.md b/docs/superpowers/plans/2026-03-17-rbac-crud-gaps.md
index d5358fb5..fabae13f 100644
--- a/docs/superpowers/plans/2026-03-17-rbac-crud-gaps.md
+++ b/docs/superpowers/plans/2026-03-17-rbac-crud-gaps.md
@@ -17,9 +17,9 @@
### Backend
| File | Change |
|---|---|
-| Create: `cameleer3-server-app/src/main/resources/db/migration/V2__admin_group_seed.sql` | Seed Admins group + ADMIN role assignment |
-| Modify: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/SystemRole.java` | Add `ADMINS_GROUP_ID` |
-| Modify: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/security/UiAuthController.java` | Add admin user to Admins group on login |
+| Create: `cameleer-server-app/src/main/resources/db/migration/V2__admin_group_seed.sql` | Seed Admins group + ADMIN role assignment |
+| Modify: `cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/SystemRole.java` | Add `ADMINS_GROUP_ID` |
+| Modify: `cameleer-server-app/src/main/java/com/cameleer/server/app/security/UiAuthController.java` | Add admin user to Admins group on login |
### Frontend
| File | Change |
@@ -38,9 +38,9 @@
### Task 1: Backend — Admins Group Seed + SystemRole Constant + Auth
**Files:**
-- Create: `cameleer3-server-app/src/main/resources/db/migration/V2__admin_group_seed.sql`
-- Modify: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/SystemRole.java`
-- Modify: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/security/UiAuthController.java`
+- Create: `cameleer-server-app/src/main/resources/db/migration/V2__admin_group_seed.sql`
+- Modify: `cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/SystemRole.java`
+- Modify: `cameleer-server-app/src/main/java/com/cameleer/server/app/security/UiAuthController.java`
- [ ] **Step 1: Create V2 migration**
@@ -56,7 +56,7 @@ INSERT INTO group_roles (group_id, role_id) VALUES
- [ ] **Step 2: Add ADMINS_GROUP_ID to SystemRole.java**
-Read `cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/SystemRole.java` and add after the existing UUID constants:
+Read `cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/SystemRole.java` and add after the existing UUID constants:
```java
public static final UUID ADMINS_GROUP_ID = UUID.fromString("00000000-0000-0000-0000-000000000010");
@@ -64,7 +64,7 @@ public static final UUID ADMINS_GROUP_ID = UUID.fromString("00000000-0000-0000-0
- [ ] **Step 3: Update UiAuthController.login()**
-Read `cameleer3-server-app/src/main/java/com/cameleer3/server/app/security/UiAuthController.java`. In the `login()` method, after the line that assigns ADMIN role (`rbacService.assignRoleToUser(subject, SystemRole.ADMIN_ID)`), add:
+Read `cameleer-server-app/src/main/java/com/cameleer/server/app/security/UiAuthController.java`. In the `login()` method, after the line that assigns ADMIN role (`rbacService.assignRoleToUser(subject, SystemRole.ADMIN_ID)`), add:
```java
rbacService.addUserToGroup(subject, SystemRole.ADMINS_GROUP_ID);
@@ -79,7 +79,7 @@ mvn clean compile
- [ ] **Step 5: Commit**
```bash
-git add cameleer3-server-app/src/main/resources/db/migration/V2__admin_group_seed.sql cameleer3-server-core/ cameleer3-server-app/src/main/java/
+git add cameleer-server-app/src/main/resources/db/migration/V2__admin_group_seed.sql cameleer-server-core/ cameleer-server-app/src/main/java/
git commit -m "feat: seed built-in Admins group and assign admin users on login"
```
diff --git a/docs/superpowers/plans/2026-03-17-rbac-management.md b/docs/superpowers/plans/2026-03-17-rbac-management.md
index 96100636..3fadb829 100644
--- a/docs/superpowers/plans/2026-03-17-rbac-management.md
+++ b/docs/superpowers/plans/2026-03-17-rbac-management.md
@@ -17,51 +17,51 @@
### Backend — New Files
| File | Responsibility |
|---|---|
-| `cameleer3-server-app/src/main/resources/db/migration/V1__init.sql` | Consolidated schema (replaces V1–V10) |
-| `cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/RbacService.java` | Inheritance computation interface |
-| `cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/GroupRepository.java` | Group CRUD interface |
-| `cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/RoleRepository.java` | Role CRUD interface |
-| `cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/UserDetail.java` | Enriched user record |
-| `cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/GroupDetail.java` | Group detail record |
-| `cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/RoleDetail.java` | Role detail record |
-| `cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/UserSummary.java` | Embedded user ref |
-| `cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/GroupSummary.java` | Embedded group ref |
-| `cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/RoleSummary.java` | Embedded role ref |
-| `cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/RbacStats.java` | Dashboard stats record |
-| `cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/SystemRole.java` | System role constants + fixed UUIDs |
-| `cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresGroupRepository.java` | Group repository impl |
-| `cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresRoleRepository.java` | Role repository impl |
-| `cameleer3-server-app/src/main/java/com/cameleer3/server/app/rbac/RbacServiceImpl.java` | Inheritance computation impl |
-| `cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/GroupAdminController.java` | Group CRUD endpoints |
-| `cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/RoleAdminController.java` | Role CRUD endpoints |
-| `cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/RbacStatsController.java` | Dashboard stats endpoint |
+| `cameleer-server-app/src/main/resources/db/migration/V1__init.sql` | Consolidated schema (replaces V1–V10) |
+| `cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/RbacService.java` | Inheritance computation interface |
+| `cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/GroupRepository.java` | Group CRUD interface |
+| `cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/RoleRepository.java` | Role CRUD interface |
+| `cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/UserDetail.java` | Enriched user record |
+| `cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/GroupDetail.java` | Group detail record |
+| `cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/RoleDetail.java` | Role detail record |
+| `cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/UserSummary.java` | Embedded user ref |
+| `cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/GroupSummary.java` | Embedded group ref |
+| `cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/RoleSummary.java` | Embedded role ref |
+| `cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/RbacStats.java` | Dashboard stats record |
+| `cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/SystemRole.java` | System role constants + fixed UUIDs |
+| `cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresGroupRepository.java` | Group repository impl |
+| `cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresRoleRepository.java` | Role repository impl |
+| `cameleer-server-app/src/main/java/com/cameleer/server/app/rbac/RbacServiceImpl.java` | Inheritance computation impl |
+| `cameleer-server-app/src/main/java/com/cameleer/server/app/controller/GroupAdminController.java` | Group CRUD endpoints |
+| `cameleer-server-app/src/main/java/com/cameleer/server/app/controller/RoleAdminController.java` | Role CRUD endpoints |
+| `cameleer-server-app/src/main/java/com/cameleer/server/app/controller/RbacStatsController.java` | Dashboard stats endpoint |
### Backend — Modified Files
| File | Change |
|---|---|
-| `cameleer3-server-core/.../security/UserInfo.java` | Remove `roles` field |
-| `cameleer3-server-core/.../security/UserRepository.java` | Remove `updateRoles`, add `findSystemRoles` |
-| `cameleer3-server-core/.../admin/AuditCategory.java` | Add `RBAC` category |
-| `cameleer3-server-app/.../storage/PostgresUserRepository.java` | Rewrite for new schema (no roles column, use user_roles join) |
-| `cameleer3-server-app/.../controller/UserAdminController.java` | Rewrite: use RbacService, new endpoints |
-| `cameleer3-server-app/.../security/UiAuthController.java` | Use user_roles instead of UserInfo.roles |
-| `cameleer3-server-app/.../security/OidcAuthController.java` | Use user_roles for role resolution |
-| `cameleer3-server-app/.../security/JwtAuthenticationFilter.java` | No change (reads roles from JWT, not DB) |
-| `cameleer3-server-app/.../security/AgentRegistrationController.java` | Use user_roles for AGENT role |
-| `cameleer3-server-app/src/test/.../TestSecurityHelper.java` | No change (creates JWT directly) |
+| `cameleer-server-core/.../security/UserInfo.java` | Remove `roles` field |
+| `cameleer-server-core/.../security/UserRepository.java` | Remove `updateRoles`, add `findSystemRoles` |
+| `cameleer-server-core/.../admin/AuditCategory.java` | Add `RBAC` category |
+| `cameleer-server-app/.../storage/PostgresUserRepository.java` | Rewrite for new schema (no roles column, use user_roles join) |
+| `cameleer-server-app/.../controller/UserAdminController.java` | Rewrite: use RbacService, new endpoints |
+| `cameleer-server-app/.../security/UiAuthController.java` | Use user_roles instead of UserInfo.roles |
+| `cameleer-server-app/.../security/OidcAuthController.java` | Use user_roles for role resolution |
+| `cameleer-server-app/.../security/JwtAuthenticationFilter.java` | No change (reads roles from JWT, not DB) |
+| `cameleer-server-app/.../security/AgentRegistrationController.java` | Use user_roles for AGENT role |
+| `cameleer-server-app/src/test/.../TestSecurityHelper.java` | No change (creates JWT directly) |
### Backend — Deleted Files
| File |
|---|
-| `cameleer3-server-app/src/main/resources/db/migration/V2__executions.sql` |
-| `cameleer3-server-app/src/main/resources/db/migration/V3__processor_executions.sql` |
-| `cameleer3-server-app/src/main/resources/db/migration/V4__agent_metrics.sql` |
-| `cameleer3-server-app/src/main/resources/db/migration/V5__route_diagrams.sql` |
-| `cameleer3-server-app/src/main/resources/db/migration/V6__users.sql` |
-| `cameleer3-server-app/src/main/resources/db/migration/V7__oidc_config.sql` |
-| `cameleer3-server-app/src/main/resources/db/migration/V8__continuous_aggregates.sql` |
-| `cameleer3-server-app/src/main/resources/db/migration/V9__admin_thresholds.sql` |
-| `cameleer3-server-app/src/main/resources/db/migration/V10__audit_log.sql` |
+| `cameleer-server-app/src/main/resources/db/migration/V2__executions.sql` |
+| `cameleer-server-app/src/main/resources/db/migration/V3__processor_executions.sql` |
+| `cameleer-server-app/src/main/resources/db/migration/V4__agent_metrics.sql` |
+| `cameleer-server-app/src/main/resources/db/migration/V5__route_diagrams.sql` |
+| `cameleer-server-app/src/main/resources/db/migration/V6__users.sql` |
+| `cameleer-server-app/src/main/resources/db/migration/V7__oidc_config.sql` |
+| `cameleer-server-app/src/main/resources/db/migration/V8__continuous_aggregates.sql` |
+| `cameleer-server-app/src/main/resources/db/migration/V9__admin_thresholds.sql` |
+| `cameleer-server-app/src/main/resources/db/migration/V10__audit_log.sql` |
### Frontend — New Files
| File | Responsibility |
@@ -98,7 +98,7 @@
### Task 1: Consolidate Flyway Migrations
**Files:**
-- Create: `cameleer3-server-app/src/main/resources/db/migration/V1__init.sql`
+- Create: `cameleer-server-app/src/main/resources/db/migration/V1__init.sql`
- Delete: `V1__extensions.sql` through `V10__audit_log.sql` (10 files)
- [ ] **Step 1: Create consolidated V1__init.sql**
@@ -106,7 +106,7 @@
Combine all existing migration content (V1–V10) into a single file, replacing the `users` table definition to drop `roles TEXT[]`, and adding the new RBAC tables. Order: extensions → users (new) → roles (with seeds) → groups → join tables → executions → processor_executions → agent_metrics → route_diagrams → oidc_config → continuous_aggregates → admin_thresholds → audit_log → indexes.
```sql
--- V1__init.sql — Consolidated schema for Cameleer3
+-- V1__init.sql — Consolidated schema for Cameleer
-- Extensions
CREATE EXTENSION IF NOT EXISTS timescaledb;
@@ -400,7 +400,7 @@ CREATE INDEX idx_audit_log_target ON audit_log (target);
- [ ] **Step 2: Delete old migration files**
```bash
-cd cameleer3-server-app/src/main/resources/db/migration
+cd cameleer-server-app/src/main/resources/db/migration
rm V2__executions.sql V3__processor_executions.sql V4__agent_metrics.sql V5__route_diagrams.sql V6__users.sql V7__oidc_config.sql V8__continuous_aggregates.sql V9__admin_thresholds.sql V10__audit_log.sql
# Keep V1__extensions.sql but it's been replaced by V1__init.sql — rename the old one first
mv V1__extensions.sql V1__extensions.sql.bak
@@ -417,8 +417,8 @@ rm V1__extensions.sql V2__executions.sql V3__processor_executions.sql V4__agent_
- [ ] **Step 3: Verify the migration compiles**
```bash
-cd /c/Users/Hendrik/Documents/projects/cameleer3-server
-mvn clean compile -pl cameleer3-server-app
+cd /c/Users/Hendrik/Documents/projects/cameleer-server
+mvn clean compile -pl cameleer-server-app
```
Expected: BUILD SUCCESS (Flyway doesn't run at compile time, just packaging)
@@ -426,7 +426,7 @@ Expected: BUILD SUCCESS (Flyway doesn't run at compile time, just packaging)
- [ ] **Step 4: Commit**
```bash
-git add -A cameleer3-server-app/src/main/resources/db/migration/
+git add -A cameleer-server-app/src/main/resources/db/migration/
git commit -m "refactor: consolidate V1-V10 Flyway migrations into single V1__init.sql
Add RBAC tables (roles, groups, group_roles, user_groups, user_roles)
@@ -438,25 +438,25 @@ with system role seeds and join indexes. Drop users.roles TEXT[] column."
### Task 2: RBAC Domain Model (core module)
**Files:**
-- Create: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/SystemRole.java`
-- Create: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/UserDetail.java`
-- Create: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/GroupDetail.java`
-- Create: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/RoleDetail.java`
-- Create: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/UserSummary.java`
-- Create: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/GroupSummary.java`
-- Create: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/RoleSummary.java`
-- Create: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/RbacStats.java`
-- Create: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/GroupRepository.java`
-- Create: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/RoleRepository.java`
-- Create: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/rbac/RbacService.java`
-- Modify: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/security/UserInfo.java`
-- Modify: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/security/UserRepository.java`
-- Modify: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/admin/AuditCategory.java`
+- Create: `cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/SystemRole.java`
+- Create: `cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/UserDetail.java`
+- Create: `cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/GroupDetail.java`
+- Create: `cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/RoleDetail.java`
+- Create: `cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/UserSummary.java`
+- Create: `cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/GroupSummary.java`
+- Create: `cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/RoleSummary.java`
+- Create: `cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/RbacStats.java`
+- Create: `cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/GroupRepository.java`
+- Create: `cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/RoleRepository.java`
+- Create: `cameleer-server-core/src/main/java/com/cameleer/server/core/rbac/RbacService.java`
+- Modify: `cameleer-server-core/src/main/java/com/cameleer/server/core/security/UserInfo.java`
+- Modify: `cameleer-server-core/src/main/java/com/cameleer/server/core/security/UserRepository.java`
+- Modify: `cameleer-server-core/src/main/java/com/cameleer/server/core/admin/AuditCategory.java`
- [ ] **Step 1: Create SystemRole constants**
```java
-package com.cameleer3.server.core.rbac;
+package com.cameleer.server.core.rbac;
import java.util.Map;
import java.util.Set;
@@ -489,14 +489,14 @@ public final class SystemRole {
`UserSummary.java`:
```java
-package com.cameleer3.server.core.rbac;
+package com.cameleer.server.core.rbac;
public record UserSummary(String userId, String displayName, String provider) {}
```
`GroupSummary.java`:
```java
-package com.cameleer3.server.core.rbac;
+package com.cameleer.server.core.rbac;
import java.util.UUID;
@@ -505,7 +505,7 @@ public record GroupSummary(UUID id, String name) {}
`RoleSummary.java`:
```java
-package com.cameleer3.server.core.rbac;
+package com.cameleer.server.core.rbac;
import java.util.UUID;
@@ -514,7 +514,7 @@ public record RoleSummary(UUID id, String name, boolean system, String source) {
`RbacStats.java`:
```java
-package com.cameleer3.server.core.rbac;
+package com.cameleer.server.core.rbac;
public record RbacStats(int userCount, int activeUserCount, int groupCount, int maxGroupDepth, int roleCount) {}
```
@@ -523,7 +523,7 @@ public record RbacStats(int userCount, int activeUserCount, int groupCount, int
`UserDetail.java`:
```java
-package com.cameleer3.server.core.rbac;
+package com.cameleer.server.core.rbac;
import java.time.Instant;
import java.util.List;
@@ -543,7 +543,7 @@ public record UserDetail(
`GroupDetail.java`:
```java
-package com.cameleer3.server.core.rbac;
+package com.cameleer.server.core.rbac;
import java.time.Instant;
import java.util.List;
@@ -563,7 +563,7 @@ public record GroupDetail(
`RoleDetail.java`:
```java
-package com.cameleer3.server.core.rbac;
+package com.cameleer.server.core.rbac;
import java.time.Instant;
import java.util.List;
@@ -586,7 +586,7 @@ public record RoleDetail(
`GroupRepository.java`:
```java
-package com.cameleer3.server.core.rbac;
+package com.cameleer.server.core.rbac;
import java.util.List;
import java.util.Optional;
@@ -607,7 +607,7 @@ public interface GroupRepository {
`RoleRepository.java`:
```java
-package com.cameleer3.server.core.rbac;
+package com.cameleer.server.core.rbac;
import java.util.List;
import java.util.Optional;
@@ -624,7 +624,7 @@ public interface RoleRepository {
`RbacService.java`:
```java
-package com.cameleer3.server.core.rbac;
+package com.cameleer.server.core.rbac;
import java.util.List;
import java.util.UUID;
@@ -651,10 +651,10 @@ public interface RbacService {
- [ ] **Step 5: Update UserInfo — remove roles field**
-In `cameleer3-server-core/src/main/java/com/cameleer3/server/core/security/UserInfo.java`, change to:
+In `cameleer-server-core/src/main/java/com/cameleer/server/core/security/UserInfo.java`, change to:
```java
-package com.cameleer3.server.core.security;
+package com.cameleer.server.core.security;
import java.time.Instant;
@@ -669,10 +669,10 @@ public record UserInfo(
- [ ] **Step 6: Update UserRepository interface**
-In `cameleer3-server-core/src/main/java/com/cameleer3/server/core/security/UserRepository.java`, change to:
+In `cameleer-server-core/src/main/java/com/cameleer/server/core/security/UserRepository.java`, change to:
```java
-package com.cameleer3.server.core.security;
+package com.cameleer.server.core.security;
import java.util.List;
import java.util.Optional;
@@ -689,7 +689,7 @@ Remove `updateRoles` method (role management moves to `RbacService`).
- [ ] **Step 7: Add RBAC audit category**
-In `cameleer3-server-core/src/main/java/com/cameleer3/server/core/admin/AuditCategory.java`, add `RBAC`:
+In `cameleer-server-core/src/main/java/com/cameleer/server/core/admin/AuditCategory.java`, add `RBAC`:
```java
public enum AuditCategory {
@@ -700,7 +700,7 @@ public enum AuditCategory {
- [ ] **Step 8: Verify core module compiles**
```bash
-mvn clean compile -pl cameleer3-server-core
+mvn clean compile -pl cameleer-server-core
```
Expected: BUILD SUCCESS
@@ -712,17 +712,17 @@ Expected: BUILD SUCCESS
### Task 3: PostgresUserRepository — Adapt to New Schema
**Files:**
-- Modify: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresUserRepository.java`
+- Modify: `cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresUserRepository.java`
- [ ] **Step 1: Rewrite PostgresUserRepository**
The `upsert` no longer writes roles (no `roles` column). The `mapUser` no longer reads a roles array. Remove `updateRoles` method.
```java
-package com.cameleer3.server.app.storage;
+package com.cameleer.server.app.storage;
-import com.cameleer3.server.core.security.UserInfo;
-import com.cameleer3.server.core.security.UserRepository;
+import com.cameleer.server.core.security.UserInfo;
+import com.cameleer.server.core.security.UserRepository;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;
@@ -793,15 +793,15 @@ public class PostgresUserRepository implements UserRepository {
### Task 4: PostgresGroupRepository and PostgresRoleRepository
**Files:**
-- Create: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresGroupRepository.java`
-- Create: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresRoleRepository.java`
+- Create: `cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresGroupRepository.java`
+- Create: `cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresRoleRepository.java`
- [ ] **Step 1: Implement PostgresGroupRepository**
```java
-package com.cameleer3.server.app.storage;
+package com.cameleer.server.app.storage;
-import com.cameleer3.server.core.rbac.*;
+import com.cameleer.server.core.rbac.*;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;
@@ -920,9 +920,9 @@ public class PostgresGroupRepository implements GroupRepository {
- [ ] **Step 2: Implement PostgresRoleRepository**
```java
-package com.cameleer3.server.app.storage;
+package com.cameleer.server.app.storage;
-import com.cameleer3.server.core.rbac.*;
+import com.cameleer.server.core.rbac.*;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;
@@ -1010,7 +1010,7 @@ public class PostgresRoleRepository implements RoleRepository {
- [ ] **Step 3: Verify compile**
```bash
-mvn clean compile -pl cameleer3-server-app
+mvn clean compile -pl cameleer-server-app
```
Expected: May still have errors from files referencing `UserInfo.roles()` — those are fixed in Task 6.
@@ -1022,18 +1022,18 @@ Expected: May still have errors from files referencing `UserInfo.roles()` — th
### Task 5: RbacServiceImpl — Inheritance Logic
**Files:**
-- Create: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/rbac/RbacServiceImpl.java`
+- Create: `cameleer-server-app/src/main/java/com/cameleer/server/app/rbac/RbacServiceImpl.java`
- [ ] **Step 1: Implement RbacServiceImpl**
This is the core service that computes inheritance. It reads from `user_roles`, `user_groups`, `group_roles`, and `groups` tables to compute effective roles/groups.
```java
-package com.cameleer3.server.app.rbac;
+package com.cameleer.server.app.rbac;
-import com.cameleer3.server.core.rbac.*;
-import com.cameleer3.server.core.security.UserInfo;
-import com.cameleer3.server.core.security.UserRepository;
+import com.cameleer.server.core.rbac.*;
+import com.cameleer.server.core.security.UserInfo;
+import com.cameleer.server.core.security.UserRepository;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
@@ -1304,9 +1304,9 @@ public class RbacServiceImpl implements RbacService {
### Task 6: Auth Integration — Update Login and OIDC Flows
**Files:**
-- Modify: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/security/UiAuthController.java`
-- Modify: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/security/OidcAuthController.java`
-- Modify: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/AgentRegistrationController.java`
+- Modify: `cameleer-server-app/src/main/java/com/cameleer/server/app/security/UiAuthController.java`
+- Modify: `cameleer-server-app/src/main/java/com/cameleer/server/app/security/OidcAuthController.java`
+- Modify: `cameleer-server-app/src/main/java/com/cameleer/server/app/controller/AgentRegistrationController.java`
These controllers currently embed roles in `UserInfo` and pass them to JWT creation. After the change, they must:
1. Create/upsert the `UserInfo` (without roles)
@@ -1357,10 +1357,10 @@ Expected: BUILD SUCCESS (all `UserInfo.roles()` references resolved)
This is the single commit for the entire backend RBAC model. Tasks 2–6 must all be done before committing since intermediate states don't compile.
```bash
-git add cameleer3-server-core/ cameleer3-server-app/src/main/java/
+git add cameleer-server-core/ cameleer-server-app/src/main/java/
git commit -m "feat: replace flat users.roles with relational RBAC model
-New package com.cameleer3.server.core.rbac with SystemRole constants,
+New package com.cameleer.server.core.rbac with SystemRole constants,
detail/summary records, GroupRepository, RoleRepository, RbacService.
Remove roles field from UserInfo. Implement PostgresGroupRepository,
PostgresRoleRepository, RbacServiceImpl with inheritance computation.
@@ -1373,19 +1373,19 @@ to assign roles via user_roles table. JWT populated from effective system roles.
### Task 7: Admin Controllers — Users, Groups, Roles, Stats
**Files:**
-- Modify: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/UserAdminController.java`
-- Create: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/GroupAdminController.java`
-- Create: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/RoleAdminController.java`
-- Create: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/RbacStatsController.java`
+- Modify: `cameleer-server-app/src/main/java/com/cameleer/server/app/controller/UserAdminController.java`
+- Create: `cameleer-server-app/src/main/java/com/cameleer/server/app/controller/GroupAdminController.java`
+- Create: `cameleer-server-app/src/main/java/com/cameleer/server/app/controller/RoleAdminController.java`
+- Create: `cameleer-server-app/src/main/java/com/cameleer/server/app/controller/RbacStatsController.java`
- [ ] **Step 1: Rewrite UserAdminController**
```java
-package com.cameleer3.server.app.controller;
+package com.cameleer.server.app.controller;
-import com.cameleer3.server.core.admin.*;
-import com.cameleer3.server.core.rbac.*;
-import com.cameleer3.server.core.security.UserRepository;
+import com.cameleer.server.core.admin.*;
+import com.cameleer.server.core.rbac.*;
+import com.cameleer.server.core.security.UserRepository;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletRequest;
@@ -1485,10 +1485,10 @@ public class UserAdminController {
- [ ] **Step 2: Create GroupAdminController**
```java
-package com.cameleer3.server.app.controller;
+package com.cameleer.server.app.controller;
-import com.cameleer3.server.core.admin.*;
-import com.cameleer3.server.core.rbac.*;
+import com.cameleer.server.core.admin.*;
+import com.cameleer.server.core.rbac.*;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletRequest;
@@ -1608,10 +1608,10 @@ public class GroupAdminController {
- [ ] **Step 3: Create RoleAdminController**
```java
-package com.cameleer3.server.app.controller;
+package com.cameleer.server.app.controller;
-import com.cameleer3.server.core.admin.*;
-import com.cameleer3.server.core.rbac.*;
+import com.cameleer.server.core.admin.*;
+import com.cameleer.server.core.rbac.*;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletRequest;
@@ -1701,10 +1701,10 @@ public class RoleAdminController {
- [ ] **Step 4: Create RbacStatsController**
```java
-package com.cameleer3.server.app.controller;
+package com.cameleer.server.app.controller;
-import com.cameleer3.server.core.rbac.RbacService;
-import com.cameleer3.server.core.rbac.RbacStats;
+import com.cameleer.server.core.rbac.RbacService;
+import com.cameleer.server.core.rbac.RbacStats;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.http.ResponseEntity;
@@ -1742,7 +1742,7 @@ Expected: BUILD SUCCESS
- [ ] **Step 6: Commit**
```bash
-git add cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/
+git add cameleer-server-app/src/main/java/com/cameleer/server/app/controller/
git commit -m "feat: add Group, Role, and RBAC stats admin controllers
GroupAdminController with cycle detection, RoleAdminController
@@ -1763,8 +1763,8 @@ Rewrite UserAdminController to use RbacService."
Search for references to `UserInfo` constructor with 6 args (now 5) or `.roles()` calls in test files. Update constructor calls, remove roles parameter.
```bash
-grep -rn "UserInfo(" cameleer3-server-app/src/test/
-grep -rn "\.roles()" cameleer3-server-app/src/test/
+grep -rn "UserInfo(" cameleer-server-app/src/test/
+grep -rn "\.roles()" cameleer-server-app/src/test/
```
Fix each reference. `TestSecurityHelper` creates JWT directly with roles — this doesn't change since JWT creation still takes `List roles`.
diff --git a/docs/superpowers/plans/2026-03-23-ui-mock-alignment.md b/docs/superpowers/plans/2026-03-23-ui-mock-alignment.md
index e1651486..db3224d8 100644
--- a/docs/superpowers/plans/2026-03-23-ui-mock-alignment.md
+++ b/docs/superpowers/plans/2026-03-23-ui-mock-alignment.md
@@ -2,7 +2,7 @@
> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
-**Goal:** Close all visual and functional gaps between the `@cameleer/design-system` v0.0.2 mocks and the cameleer3-server UI.
+**Goal:** Close all visual and functional gaps between the `@cameleer/design-system` v0.0.2 mocks and the cameleer-server UI.
**Architecture:** Backend-first (new endpoints + migration), then frontend page-by-page alignment. Each task produces one git commit. Backend tasks use Spring Boot controllers querying TimescaleDB continuous aggregates. Frontend tasks modify React pages consuming design system components with TanStack Query hooks.
@@ -15,20 +15,20 @@
## File Structure
### New backend files
-- `cameleer3-server-app/src/main/resources/db/migration/V7__processor_stats_by_id.sql`
-- `cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/ProcessorMetrics.java`
-- `cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/AgentMetricsResponse.java`
-- `cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/MetricBucket.java`
-- `cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/SetPasswordRequest.java`
-- `cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/AgentMetricsController.java`
+- `cameleer-server-app/src/main/resources/db/migration/V7__processor_stats_by_id.sql`
+- `cameleer-server-app/src/main/java/com/cameleer/server/app/dto/ProcessorMetrics.java`
+- `cameleer-server-app/src/main/java/com/cameleer/server/app/dto/AgentMetricsResponse.java`
+- `cameleer-server-app/src/main/java/com/cameleer/server/app/dto/MetricBucket.java`
+- `cameleer-server-app/src/main/java/com/cameleer/server/app/dto/SetPasswordRequest.java`
+- `cameleer-server-app/src/main/java/com/cameleer/server/app/controller/AgentMetricsController.java`
### Modified backend files
-- `cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/AgentInstanceResponse.java` — add `version`, `capabilities`
-- `cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/AgentRegistrationController.java` — map new fields
-- `cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/RouteMetricsController.java` — add processor stats method
-- `cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/UserAdminController.java` — add password reset
-- `cameleer3-server-app/src/main/java/com/cameleer3/server/app/security/SecurityConfig.java` — agent metrics rule
-- `cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/OpenApiConfig.java` — register new DTOs
+- `cameleer-server-app/src/main/java/com/cameleer/server/app/dto/AgentInstanceResponse.java` — add `version`, `capabilities`
+- `cameleer-server-app/src/main/java/com/cameleer/server/app/controller/AgentRegistrationController.java` — map new fields
+- `cameleer-server-app/src/main/java/com/cameleer/server/app/controller/RouteMetricsController.java` — add processor stats method
+- `cameleer-server-app/src/main/java/com/cameleer/server/app/controller/UserAdminController.java` — add password reset
+- `cameleer-server-app/src/main/java/com/cameleer/server/app/security/SecurityConfig.java` — agent metrics rule
+- `cameleer-server-app/src/main/java/com/cameleer/server/app/config/OpenApiConfig.java` — register new DTOs
### New frontend files
- `ui/src/pages/Routes/RouteDetail.tsx` + `RouteDetail.module.css`
@@ -58,7 +58,7 @@
## Task 1: V7 Migration — Processor Stats Continuous Aggregate
**Files:**
-- Create: `cameleer3-server-app/src/main/resources/db/migration/V7__processor_stats_by_id.sql`
+- Create: `cameleer-server-app/src/main/resources/db/migration/V7__processor_stats_by_id.sql`
- [ ] **Step 1: Create migration file**
@@ -88,13 +88,13 @@ SELECT add_continuous_aggregate_policy('stats_1m_processor_detail',
- [ ] **Step 2: Verify migration compiles**
-Run: `cd cameleer3-server-app && mvn clean compile -q 2>&1 | tail -5`
+Run: `cd cameleer-server-app && mvn clean compile -q 2>&1 | tail -5`
Expected: BUILD SUCCESS (Flyway picks up migration at runtime)
- [ ] **Step 3: Commit**
```bash
-git add cameleer3-server-app/src/main/resources/db/migration/V7__processor_stats_by_id.sql
+git add cameleer-server-app/src/main/resources/db/migration/V7__processor_stats_by_id.sql
git commit -m "feat: add V7 migration for per-processor-id continuous aggregate"
```
@@ -103,14 +103,14 @@ git commit -m "feat: add V7 migration for per-processor-id continuous aggregate"
## Task 2: Backend — Processor Stats Endpoint
**Files:**
-- Create: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/ProcessorMetrics.java`
-- Modify: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/RouteMetricsController.java`
-- Modify: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/OpenApiConfig.java`
+- Create: `cameleer-server-app/src/main/java/com/cameleer/server/app/dto/ProcessorMetrics.java`
+- Modify: `cameleer-server-app/src/main/java/com/cameleer/server/app/controller/RouteMetricsController.java`
+- Modify: `cameleer-server-app/src/main/java/com/cameleer/server/app/config/OpenApiConfig.java`
- [ ] **Step 1: Create ProcessorMetrics DTO**
```java
-package com.cameleer3.server.app.dto;
+package com.cameleer.server.app.dto;
import jakarta.validation.constraints.NotNull;
@@ -159,9 +159,9 @@ Expected: BUILD SUCCESS
- [ ] **Step 5: Commit**
```bash
-git add cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/ProcessorMetrics.java \
- cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/RouteMetricsController.java \
- cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/OpenApiConfig.java
+git add cameleer-server-app/src/main/java/com/cameleer/server/app/dto/ProcessorMetrics.java \
+ cameleer-server-app/src/main/java/com/cameleer/server/app/controller/RouteMetricsController.java \
+ cameleer-server-app/src/main/java/com/cameleer/server/app/config/OpenApiConfig.java
git commit -m "feat: add GET /routes/metrics/processors endpoint"
```
@@ -170,17 +170,17 @@ git commit -m "feat: add GET /routes/metrics/processors endpoint"
## Task 3: Backend — Agent Metrics Query Endpoint
**Files:**
-- Create: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/AgentMetricsResponse.java`
-- Create: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/MetricBucket.java`
-- Create: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/AgentMetricsController.java`
-- Modify: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/security/SecurityConfig.java`
-- Modify: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/OpenApiConfig.java`
+- Create: `cameleer-server-app/src/main/java/com/cameleer/server/app/dto/AgentMetricsResponse.java`
+- Create: `cameleer-server-app/src/main/java/com/cameleer/server/app/dto/MetricBucket.java`
+- Create: `cameleer-server-app/src/main/java/com/cameleer/server/app/controller/AgentMetricsController.java`
+- Modify: `cameleer-server-app/src/main/java/com/cameleer/server/app/security/SecurityConfig.java`
+- Modify: `cameleer-server-app/src/main/java/com/cameleer/server/app/config/OpenApiConfig.java`
- [ ] **Step 1: Create DTOs**
`MetricBucket.java`:
```java
-package com.cameleer3.server.app.dto;
+package com.cameleer.server.app.dto;
import java.time.Instant;
import jakarta.validation.constraints.NotNull;
@@ -193,7 +193,7 @@ public record MetricBucket(
`AgentMetricsResponse.java`:
```java
-package com.cameleer3.server.app.dto;
+package com.cameleer.server.app.dto;
import java.util.List;
import java.util.Map;
@@ -207,10 +207,10 @@ public record AgentMetricsResponse(
- [ ] **Step 2: Create AgentMetricsController**
```java
-package com.cameleer3.server.app.controller;
+package com.cameleer.server.app.controller;
-import com.cameleer3.server.app.dto.AgentMetricsResponse;
-import com.cameleer3.server.app.dto.MetricBucket;
+import com.cameleer.server.app.dto.AgentMetricsResponse;
+import com.cameleer.server.app.dto.MetricBucket;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.bind.annotation.*;
@@ -277,7 +277,7 @@ public class AgentMetricsController {
- [ ] **Step 3: Add SecurityConfig rule**
-In `SecurityConfig.java` (path: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/security/SecurityConfig.java`), add a new matcher for the agent metrics path. Find the section with VIEWER role matchers and add:
+In `SecurityConfig.java` (path: `cameleer-server-app/src/main/java/com/cameleer/server/app/security/SecurityConfig.java`), add a new matcher for the agent metrics path. Find the section with VIEWER role matchers and add:
```java
.requestMatchers(HttpMethod.GET, "/api/v1/agents/*/metrics").hasAnyRole("VIEWER", "OPERATOR", "ADMIN")
```
@@ -295,11 +295,11 @@ Expected: BUILD SUCCESS
- [ ] **Step 6: Commit**
```bash
-git add cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/MetricBucket.java \
- cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/AgentMetricsResponse.java \
- cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/AgentMetricsController.java \
- cameleer3-server-app/src/main/java/com/cameleer3/server/app/security/SecurityConfig.java \
- cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/OpenApiConfig.java
+git add cameleer-server-app/src/main/java/com/cameleer/server/app/dto/MetricBucket.java \
+ cameleer-server-app/src/main/java/com/cameleer/server/app/dto/AgentMetricsResponse.java \
+ cameleer-server-app/src/main/java/com/cameleer/server/app/controller/AgentMetricsController.java \
+ cameleer-server-app/src/main/java/com/cameleer/server/app/security/SecurityConfig.java \
+ cameleer-server-app/src/main/java/com/cameleer/server/app/config/OpenApiConfig.java
git commit -m "feat: add GET /agents/{id}/metrics endpoint for JVM metrics"
```
@@ -308,10 +308,10 @@ git commit -m "feat: add GET /agents/{id}/metrics endpoint for JVM metrics"
## Task 4: Backend — Enrich AgentInstanceResponse + Password Reset
**Files:**
-- Modify: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/AgentInstanceResponse.java`
-- Modify: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/AgentRegistrationController.java`
-- Create: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/SetPasswordRequest.java`
-- Modify: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/UserAdminController.java`
+- Modify: `cameleer-server-app/src/main/java/com/cameleer/server/app/dto/AgentInstanceResponse.java`
+- Modify: `cameleer-server-app/src/main/java/com/cameleer/server/app/controller/AgentRegistrationController.java`
+- Create: `cameleer-server-app/src/main/java/com/cameleer/server/app/dto/SetPasswordRequest.java`
+- Modify: `cameleer-server-app/src/main/java/com/cameleer/server/app/controller/UserAdminController.java`
- [ ] **Step 1: Add fields to AgentInstanceResponse**
@@ -347,7 +347,7 @@ public AgentInstanceResponse withMetrics(double tps, double errorRate, int activ
- [ ] **Step 2: Create SetPasswordRequest DTO**
```java
-package com.cameleer3.server.app.dto;
+package com.cameleer.server.app.dto;
import jakarta.validation.constraints.NotBlank;
@@ -400,10 +400,10 @@ Expected: BUILD SUCCESS
- [ ] **Step 5: Commit**
```bash
-git add cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/AgentInstanceResponse.java \
- cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/AgentRegistrationController.java \
- cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/SetPasswordRequest.java \
- cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/UserAdminController.java
+git add cameleer-server-app/src/main/java/com/cameleer/server/app/dto/AgentInstanceResponse.java \
+ cameleer-server-app/src/main/java/com/cameleer/server/app/controller/AgentRegistrationController.java \
+ cameleer-server-app/src/main/java/com/cameleer/server/app/dto/SetPasswordRequest.java \
+ cameleer-server-app/src/main/java/com/cameleer/server/app/controller/UserAdminController.java
git commit -m "feat: enrich AgentInstanceResponse with version/capabilities, add password reset endpoint"
```
diff --git a/docs/superpowers/plans/2026-03-26-taps-attributes-replay.md b/docs/superpowers/plans/2026-03-26-taps-attributes-replay.md
index b3e4384d..e179b9f5 100644
--- a/docs/superpowers/plans/2026-03-26-taps-attributes-replay.md
+++ b/docs/superpowers/plans/2026-03-26-taps-attributes-replay.md
@@ -15,26 +15,26 @@
## File Map
### Backend — New Files
-- `cameleer3-server-app/src/main/resources/db/migration/V5__attributes.sql` — Flyway migration adding `attributes JSONB` to executions and processor_executions tables
-- `cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/TestExpressionRequest.java` — Request DTO for test-expression endpoint
-- `cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/TestExpressionResponse.java` — Response DTO for test-expression endpoint
+- `cameleer-server-app/src/main/resources/db/migration/V5__attributes.sql` — Flyway migration adding `attributes JSONB` to executions and processor_executions tables
+- `cameleer-server-app/src/main/java/com/cameleer/server/app/dto/TestExpressionRequest.java` — Request DTO for test-expression endpoint
+- `cameleer-server-app/src/main/java/com/cameleer/server/app/dto/TestExpressionResponse.java` — Response DTO for test-expression endpoint
### Backend — Modified Files
-- `cameleer3-server-core/src/main/java/com/cameleer3/server/core/agent/CommandType.java` — add TEST_EXPRESSION
-- `cameleer3-server-core/src/main/java/com/cameleer3/server/core/storage/ExecutionStore.java` — add attributes to ExecutionRecord and ProcessorRecord
-- `cameleer3-server-core/src/main/java/com/cameleer3/server/core/detail/ExecutionDetail.java` — add attributes field
-- `cameleer3-server-core/src/main/java/com/cameleer3/server/core/detail/ProcessorNode.java` — add attributes field
-- `cameleer3-server-core/src/main/java/com/cameleer3/server/core/detail/DetailService.java` — pass attributes through tree reconstruction
-- `cameleer3-server-core/src/main/java/com/cameleer3/server/core/search/ExecutionSummary.java` — add attributes field
-- `cameleer3-server-core/src/main/java/com/cameleer3/server/core/ingestion/IngestionService.java` — extract attributes from RouteExecution/ProcessorExecution
-- `cameleer3-server-core/src/main/java/com/cameleer3/server/core/storage/model/ExecutionDocument.java` — add attributes to ProcessorDoc
-- `cameleer3-server-core/src/main/java/com/cameleer3/server/core/indexing/SearchIndexer.java` — include attributes in indexing
-- `cameleer3-server-core/src/main/java/com/cameleer3/server/core/agent/AgentRegistryService.java` — add CompletableFuture-based command reply support
-- `cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresExecutionStore.java` — add attributes to INSERT/UPDATE queries
-- `cameleer3-server-app/src/main/java/com/cameleer3/server/app/search/OpenSearchIndex.java` — add attributes to toMap() and fromSearchHit()
-- `cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/ApplicationConfigController.java` — add test-expression endpoint
-- `cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/AgentCommandController.java` — add test-expression mapping, complete futures on ACK
-- `cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/CommandAckRequest.java` — add optional data field
+- `cameleer-server-core/src/main/java/com/cameleer/server/core/agent/CommandType.java` — add TEST_EXPRESSION
+- `cameleer-server-core/src/main/java/com/cameleer/server/core/storage/ExecutionStore.java` — add attributes to ExecutionRecord and ProcessorRecord
+- `cameleer-server-core/src/main/java/com/cameleer/server/core/detail/ExecutionDetail.java` — add attributes field
+- `cameleer-server-core/src/main/java/com/cameleer/server/core/detail/ProcessorNode.java` — add attributes field
+- `cameleer-server-core/src/main/java/com/cameleer/server/core/detail/DetailService.java` — pass attributes through tree reconstruction
+- `cameleer-server-core/src/main/java/com/cameleer/server/core/search/ExecutionSummary.java` — add attributes field
+- `cameleer-server-core/src/main/java/com/cameleer/server/core/ingestion/IngestionService.java` — extract attributes from RouteExecution/ProcessorExecution
+- `cameleer-server-core/src/main/java/com/cameleer/server/core/storage/model/ExecutionDocument.java` — add attributes to ProcessorDoc
+- `cameleer-server-core/src/main/java/com/cameleer/server/core/indexing/SearchIndexer.java` — include attributes in indexing
+- `cameleer-server-core/src/main/java/com/cameleer/server/core/agent/AgentRegistryService.java` — add CompletableFuture-based command reply support
+- `cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresExecutionStore.java` — add attributes to INSERT/UPDATE queries
+- `cameleer-server-app/src/main/java/com/cameleer/server/app/search/OpenSearchIndex.java` — add attributes to toMap() and fromSearchHit()
+- `cameleer-server-app/src/main/java/com/cameleer/server/app/controller/ApplicationConfigController.java` — add test-expression endpoint
+- `cameleer-server-app/src/main/java/com/cameleer/server/app/controller/AgentCommandController.java` — add test-expression mapping, complete futures on ACK
+- `cameleer-server-app/src/main/java/com/cameleer/server/app/dto/CommandAckRequest.java` — add optional data field
### Frontend — Modified Files
- `ui/src/api/schema.d.ts` — add attributes to ExecutionDetail, ProcessorNode, ExecutionSummary
@@ -52,13 +52,13 @@
## Task 1: Verify Prerequisites and Database Migration
**Files:**
-- Create: `cameleer3-server-app/src/main/resources/db/migration/V5__attributes.sql`
+- Create: `cameleer-server-app/src/main/resources/db/migration/V5__attributes.sql`
-- [ ] **Step 1: Verify cameleer3-common has attributes support**
+- [ ] **Step 1: Verify cameleer-common has attributes support**
-Confirm the `cameleer3-common` SNAPSHOT dependency includes `RouteExecution.getAttributes()` and `ProcessorExecution.getAttributes()`. Run:
+Confirm the `cameleer-common` SNAPSHOT dependency includes `RouteExecution.getAttributes()` and `ProcessorExecution.getAttributes()`. Run:
```bash
-mvn dependency:sources -pl cameleer3-server-core -q
+mvn dependency:sources -pl cameleer-server-core -q
```
Then inspect the source jar for `RouteExecution.java` to confirm the `attributes` field exists. If it does not, the dependency must be updated first.
@@ -72,13 +72,13 @@ ALTER TABLE processor_executions ADD COLUMN IF NOT EXISTS attributes JSONB;
- [ ] **Step 3: Verify migration compiles**
-Run: `cd cameleer3-server-app && mvn compile -pl . -q`
+Run: `cd cameleer-server-app && mvn compile -pl . -q`
Expected: BUILD SUCCESS
- [ ] **Step 4: Commit**
```bash
-git add cameleer3-server-app/src/main/resources/db/migration/V5__attributes.sql
+git add cameleer-server-app/src/main/resources/db/migration/V5__attributes.sql
git commit -m "feat: add attributes JSONB columns to executions and processor_executions"
```
@@ -87,10 +87,10 @@ git commit -m "feat: add attributes JSONB columns to executions and processor_ex
## Task 2: Backend — Add Attributes to Storage Records and Detail Models
**Files:**
-- Modify: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/storage/ExecutionStore.java`
-- Modify: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/detail/ExecutionDetail.java`
-- Modify: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/detail/ProcessorNode.java`
-- Modify: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/search/ExecutionSummary.java`
+- Modify: `cameleer-server-core/src/main/java/com/cameleer/server/core/storage/ExecutionStore.java`
+- Modify: `cameleer-server-core/src/main/java/com/cameleer/server/core/detail/ExecutionDetail.java`
+- Modify: `cameleer-server-core/src/main/java/com/cameleer/server/core/detail/ProcessorNode.java`
+- Modify: `cameleer-server-core/src/main/java/com/cameleer/server/core/search/ExecutionSummary.java`
- [ ] **Step 1: Add `attributes` field to `ExecutionRecord`**
@@ -120,7 +120,7 @@ Expected: Compilation errors in files that construct these records — these wil
- [ ] **Step 7: Commit**
```bash
-git add cameleer3-server-core/
+git add cameleer-server-core/
git commit -m "feat: add attributes field to ExecutionRecord, ProcessorRecord, ExecutionDetail, ProcessorNode, ExecutionSummary"
```
@@ -129,8 +129,8 @@ git commit -m "feat: add attributes field to ExecutionRecord, ProcessorRecord, E
## Task 3: Backend — Attributes Ingestion Pipeline
**Files:**
-- Modify: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/ingestion/IngestionService.java`
-- Modify: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresExecutionStore.java`
+- Modify: `cameleer-server-core/src/main/java/com/cameleer/server/core/ingestion/IngestionService.java`
+- Modify: `cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresExecutionStore.java`
- [ ] **Step 1: Extract attributes in `IngestionService.toExecutionRecord()`**
@@ -169,8 +169,8 @@ Expected: BUILD SUCCESS (or remaining errors from DetailService/SearchIndexer wh
- [ ] **Step 6: Commit**
```bash
-git add cameleer3-server-core/src/main/java/com/cameleer3/server/core/ingestion/IngestionService.java
-git add cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresExecutionStore.java
+git add cameleer-server-core/src/main/java/com/cameleer/server/core/ingestion/IngestionService.java
+git add cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresExecutionStore.java
git commit -m "feat: store execution and processor attributes from agent data"
```
@@ -179,10 +179,10 @@ git commit -m "feat: store execution and processor attributes from agent data"
## Task 4: Backend — Attributes in Detail Service and OpenSearch Indexing
**Files:**
-- Modify: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/detail/DetailService.java`
-- Modify: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/storage/model/ExecutionDocument.java`
-- Modify: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/indexing/SearchIndexer.java`
-- Modify: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/search/OpenSearchIndex.java`
+- Modify: `cameleer-server-core/src/main/java/com/cameleer/server/core/detail/DetailService.java`
+- Modify: `cameleer-server-core/src/main/java/com/cameleer/server/core/storage/model/ExecutionDocument.java`
+- Modify: `cameleer-server-core/src/main/java/com/cameleer/server/core/indexing/SearchIndexer.java`
+- Modify: `cameleer-server-app/src/main/java/com/cameleer/server/app/search/OpenSearchIndex.java`
- [ ] **Step 1: Pass attributes through `DetailService.buildTree()`**
@@ -218,7 +218,7 @@ Expected: BUILD SUCCESS
- [ ] **Step 8: Commit**
```bash
-git add cameleer3-server-core/ cameleer3-server-app/
+git add cameleer-server-core/ cameleer-server-app/
git commit -m "feat: thread attributes through detail service and OpenSearch indexing"
```
@@ -227,13 +227,13 @@ git commit -m "feat: thread attributes through detail service and OpenSearch ind
## Task 5: Backend — TEST_EXPRESSION Command and Request-Reply Infrastructure
**Files:**
-- Modify: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/agent/CommandType.java`
-- Modify: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/agent/AgentRegistryService.java`
-- Modify: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/CommandAckRequest.java`
-- Modify: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/AgentCommandController.java`
-- Create: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/TestExpressionRequest.java`
-- Create: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/TestExpressionResponse.java`
-- Modify: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/ApplicationConfigController.java`
+- Modify: `cameleer-server-core/src/main/java/com/cameleer/server/core/agent/CommandType.java`
+- Modify: `cameleer-server-core/src/main/java/com/cameleer/server/core/agent/AgentRegistryService.java`
+- Modify: `cameleer-server-app/src/main/java/com/cameleer/server/app/dto/CommandAckRequest.java`
+- Modify: `cameleer-server-app/src/main/java/com/cameleer/server/app/controller/AgentCommandController.java`
+- Create: `cameleer-server-app/src/main/java/com/cameleer/server/app/dto/TestExpressionRequest.java`
+- Create: `cameleer-server-app/src/main/java/com/cameleer/server/app/dto/TestExpressionResponse.java`
+- Modify: `cameleer-server-app/src/main/java/com/cameleer/server/app/controller/ApplicationConfigController.java`
- [ ] **Step 1: Add TEST_EXPRESSION to CommandType enum**
@@ -327,7 +327,7 @@ Expected: BUILD SUCCESS
- [ ] **Step 9: Commit**
```bash
-git add cameleer3-server-core/ cameleer3-server-app/
+git add cameleer-server-core/ cameleer-server-app/
git commit -m "feat: add TEST_EXPRESSION command with request-reply infrastructure"
```
diff --git a/docs/superpowers/plans/2026-03-27-execution-overlay.md b/docs/superpowers/plans/2026-03-27-execution-overlay.md
index 357a6b29..f7a0da12 100644
--- a/docs/superpowers/plans/2026-03-27-execution-overlay.md
+++ b/docs/superpowers/plans/2026-03-27-execution-overlay.md
@@ -18,13 +18,13 @@
| Action | File | Responsibility |
|--------|------|---------------|
-| Create | `cameleer3-server-app/src/main/resources/db/migration/V8__processor_iteration_fields.sql` | Add iteration columns to processor_executions |
-| Modify | `cameleer3-server-core/.../storage/ExecutionStore.java` | Extend ProcessorRecord with iteration fields |
-| Modify | `cameleer3-server-app/.../storage/PostgresExecutionStore.java` | Update SQL queries for new columns |
-| Modify | `cameleer3-server-core/.../ingestion/IngestionService.java` | Store iteration fields during ingestion |
-| Modify | `cameleer3-server-core/.../detail/ProcessorNode.java` | Add iteration fields to detail model |
-| Modify | `cameleer3-server-core/.../detail/DetailService.java` | Pass iteration fields through tree builder |
-| Modify | `cameleer3-server-app/.../controller/DetailController.java` | Add snapshot-by-processorId endpoint |
+| Create | `cameleer-server-app/src/main/resources/db/migration/V8__processor_iteration_fields.sql` | Add iteration columns to processor_executions |
+| Modify | `cameleer-server-core/.../storage/ExecutionStore.java` | Extend ProcessorRecord with iteration fields |
+| Modify | `cameleer-server-app/.../storage/PostgresExecutionStore.java` | Update SQL queries for new columns |
+| Modify | `cameleer-server-core/.../ingestion/IngestionService.java` | Store iteration fields during ingestion |
+| Modify | `cameleer-server-core/.../detail/ProcessorNode.java` | Add iteration fields to detail model |
+| Modify | `cameleer-server-core/.../detail/DetailService.java` | Pass iteration fields through tree builder |
+| Modify | `cameleer-server-app/.../controller/DetailController.java` | Add snapshot-by-processorId endpoint |
### Frontend Changes
@@ -59,7 +59,7 @@
## Prerequisites
-Before starting, verify that the `cameleer3-common` dependency (in the agent repo) exposes iteration getters on `ProcessorExecution`: `getLoopIndex()`, `getLoopSize()`, `getSplitIndex()`, `getSplitSize()`, `getMulticastIndex()`. If these methods do not exist in the current published version, they must be added to `cameleer3-common` and a new SNAPSHOT or release published before Task 1 Step 4 can work. Check `cameleer3/cameleer3-common/src/main/java/com/cameleer3/common/model/ProcessorExecution.java`.
+Before starting, verify that the `cameleer-common` dependency (in the agent repo) exposes iteration getters on `ProcessorExecution`: `getLoopIndex()`, `getLoopSize()`, `getSplitIndex()`, `getSplitSize()`, `getMulticastIndex()`. If these methods do not exist in the current published version, they must be added to `cameleer-common` and a new SNAPSHOT or release published before Task 1 Step 4 can work. Check `cameleer/cameleer-common/src/main/java/com/cameleer/common/model/ProcessorExecution.java`.
Note on migration versioning: The next migration is V8. If other work merges before this plan executes, bump the version number accordingly.
@@ -72,12 +72,12 @@ Note on migration versioning: The next migration is V8. If other work merges bef
Add `loop_index`, `loop_size`, `split_index`, `split_size`, `multicast_index` columns to the database and thread them through the storage → ingestion → detail pipeline.
**Files:**
-- Create: `cameleer3-server-app/src/main/resources/db/migration/V8__processor_iteration_fields.sql`
-- Modify: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/storage/ExecutionStore.java`
-- Modify: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresExecutionStore.java`
-- Modify: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/ingestion/IngestionService.java`
-- Modify: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/detail/ProcessorNode.java`
-- Modify: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/detail/DetailService.java`
+- Create: `cameleer-server-app/src/main/resources/db/migration/V8__processor_iteration_fields.sql`
+- Modify: `cameleer-server-core/src/main/java/com/cameleer/server/core/storage/ExecutionStore.java`
+- Modify: `cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresExecutionStore.java`
+- Modify: `cameleer-server-core/src/main/java/com/cameleer/server/core/ingestion/IngestionService.java`
+- Modify: `cameleer-server-core/src/main/java/com/cameleer/server/core/detail/ProcessorNode.java`
+- Modify: `cameleer-server-core/src/main/java/com/cameleer/server/core/detail/DetailService.java`
- [ ] **Step 1: Create Flyway migration V8**
@@ -176,12 +176,12 @@ Expected: BUILD SUCCESS
- [ ] **Step 8: Commit**
```bash
-git add cameleer3-server-app/src/main/resources/db/migration/V8__processor_iteration_fields.sql \
- cameleer3-server-core/src/main/java/com/cameleer3/server/core/storage/ExecutionStore.java \
- cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresExecutionStore.java \
- cameleer3-server-core/src/main/java/com/cameleer3/server/core/ingestion/IngestionService.java \
- cameleer3-server-core/src/main/java/com/cameleer3/server/core/detail/ProcessorNode.java \
- cameleer3-server-core/src/main/java/com/cameleer3/server/core/detail/DetailService.java
+git add cameleer-server-app/src/main/resources/db/migration/V8__processor_iteration_fields.sql \
+ cameleer-server-core/src/main/java/com/cameleer/server/core/storage/ExecutionStore.java \
+ cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresExecutionStore.java \
+ cameleer-server-core/src/main/java/com/cameleer/server/core/ingestion/IngestionService.java \
+ cameleer-server-core/src/main/java/com/cameleer/server/core/detail/ProcessorNode.java \
+ cameleer-server-core/src/main/java/com/cameleer/server/core/detail/DetailService.java
git commit -m "feat: add iteration fields to processor storage and detail model"
```
@@ -192,10 +192,10 @@ git commit -m "feat: add iteration fields to processor storage and detail model"
Add a REST endpoint that fetches processor snapshot data by processorId instead of positional index.
**Files:**
-- Modify: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/storage/ExecutionStore.java`
-- Modify: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresExecutionStore.java`
-- Modify: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/detail/DetailService.java`
-- Modify: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/DetailController.java`
+- Modify: `cameleer-server-core/src/main/java/com/cameleer/server/core/storage/ExecutionStore.java`
+- Modify: `cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresExecutionStore.java`
+- Modify: `cameleer-server-core/src/main/java/com/cameleer/server/core/detail/DetailService.java`
+- Modify: `cameleer-server-app/src/main/java/com/cameleer/server/app/controller/DetailController.java`
- [ ] **Step 1: Add findProcessorById to ExecutionStore interface**
@@ -251,10 +251,10 @@ Expected: BUILD SUCCESS
- [ ] **Step 6: Commit**
```bash
-git add cameleer3-server-core/src/main/java/com/cameleer3/server/core/storage/ExecutionStore.java \
- cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresExecutionStore.java \
- cameleer3-server-core/src/main/java/com/cameleer3/server/core/detail/DetailService.java \
- cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/DetailController.java
+git add cameleer-server-core/src/main/java/com/cameleer/server/core/storage/ExecutionStore.java \
+ cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresExecutionStore.java \
+ cameleer-server-core/src/main/java/com/cameleer/server/core/detail/DetailService.java \
+ cameleer-server-app/src/main/java/com/cameleer/server/app/controller/DetailController.java
git commit -m "feat: add snapshot-by-processorId endpoint"
```
@@ -274,7 +274,7 @@ Run the server locally, then fetch the OpenAPI spec:
```bash
# Build and run
-cd cameleer3-server-app && mvn spring-boot:run -DskipTests &
+cd cameleer-server-app && mvn spring-boot:run -DskipTests &
# Wait for startup, then fetch
curl -s http://localhost:8080/v3/api-docs | python3 -m json.tool > ui/src/api/openapi.json
```
diff --git a/docs/superpowers/plans/2026-03-31-clickhouse-phase1-foundation.md b/docs/superpowers/plans/2026-03-31-clickhouse-phase1-foundation.md
index 6e84d575..7019d9f9 100644
--- a/docs/superpowers/plans/2026-03-31-clickhouse-phase1-foundation.md
+++ b/docs/superpowers/plans/2026-03-31-clickhouse-phase1-foundation.md
@@ -16,20 +16,20 @@
| Action | File | Responsibility |
|--------|------|----------------|
-| Modify | `cameleer3-server-app/pom.xml` | Add clickhouse-jdbc + testcontainers-clickhouse dependencies |
-| Modify | `cameleer3-server-app/src/main/resources/application.yml` | Add `clickhouse.*` and `cameleer.storage.metrics` config keys |
-| Create | `cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/ClickHouseConfig.java` | ClickHouse DataSource + JdbcTemplate beans |
-| Create | `cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/ClickHouseProperties.java` | Config properties class for `clickhouse.*` prefix |
-| Create | `cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/ClickHouseSchemaInitializer.java` | Runs idempotent DDL on startup |
-| Create | `cameleer3-server-app/src/main/resources/clickhouse/V1__agent_metrics.sql` | DDL for `agent_metrics` table |
-| Create | `cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/ClickHouseMetricsStore.java` | `MetricsStore` impl writing to ClickHouse |
-| Create | `cameleer3-server-core/src/main/java/com/cameleer3/server/core/storage/MetricsQueryStore.java` | Interface: query metrics time-series |
-| Create | `cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresMetricsQueryStore.java` | PG impl of MetricsQueryStore (extracted from controller) |
-| Create | `cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/ClickHouseMetricsQueryStore.java` | CH impl of MetricsQueryStore |
-| Modify | `cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/AgentMetricsController.java` | Use MetricsQueryStore instead of raw JdbcTemplate |
-| Modify | `cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/StorageBeanConfig.java` | Conditional beans for PG vs CH metrics stores |
-| Create | `cameleer3-server-app/src/test/java/com/cameleer3/server/app/storage/ClickHouseMetricsStoreTest.java` | Unit test |
-| Create | `cameleer3-server-app/src/test/java/com/cameleer3/server/app/storage/ClickHouseMetricsQueryStoreTest.java` | Unit test |
+| Modify | `cameleer-server-app/pom.xml` | Add clickhouse-jdbc + testcontainers-clickhouse dependencies |
+| Modify | `cameleer-server-app/src/main/resources/application.yml` | Add `clickhouse.*` and `cameleer.storage.metrics` config keys |
+| Create | `cameleer-server-app/src/main/java/com/cameleer/server/app/config/ClickHouseConfig.java` | ClickHouse DataSource + JdbcTemplate beans |
+| Create | `cameleer-server-app/src/main/java/com/cameleer/server/app/config/ClickHouseProperties.java` | Config properties class for `clickhouse.*` prefix |
+| Create | `cameleer-server-app/src/main/java/com/cameleer/server/app/config/ClickHouseSchemaInitializer.java` | Runs idempotent DDL on startup |
+| Create | `cameleer-server-app/src/main/resources/clickhouse/V1__agent_metrics.sql` | DDL for `agent_metrics` table |
+| Create | `cameleer-server-app/src/main/java/com/cameleer/server/app/storage/ClickHouseMetricsStore.java` | `MetricsStore` impl writing to ClickHouse |
+| Create | `cameleer-server-core/src/main/java/com/cameleer/server/core/storage/MetricsQueryStore.java` | Interface: query metrics time-series |
+| Create | `cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresMetricsQueryStore.java` | PG impl of MetricsQueryStore (extracted from controller) |
+| Create | `cameleer-server-app/src/main/java/com/cameleer/server/app/storage/ClickHouseMetricsQueryStore.java` | CH impl of MetricsQueryStore |
+| Modify | `cameleer-server-app/src/main/java/com/cameleer/server/app/controller/AgentMetricsController.java` | Use MetricsQueryStore instead of raw JdbcTemplate |
+| Modify | `cameleer-server-app/src/main/java/com/cameleer/server/app/config/StorageBeanConfig.java` | Conditional beans for PG vs CH metrics stores |
+| Create | `cameleer-server-app/src/test/java/com/cameleer/server/app/storage/ClickHouseMetricsStoreTest.java` | Unit test |
+| Create | `cameleer-server-app/src/test/java/com/cameleer/server/app/storage/ClickHouseMetricsQueryStoreTest.java` | Unit test |
| Create | `deploy/clickhouse.yaml` | K8s StatefulSet + Service for ClickHouse |
| Modify | `deploy/base/server.yaml` | Add CLICKHOUSE_URL env var |
@@ -38,11 +38,11 @@
### Task 1: Add ClickHouse Dependencies
**Files:**
-- Modify: `cameleer3-server-app/pom.xml`
+- Modify: `cameleer-server-app/pom.xml`
- [ ] **Step 1: Add clickhouse-jdbc and testcontainers-clickhouse to app POM**
-In `cameleer3-server-app/pom.xml`, add these two dependencies. Place the runtime dependency after the opensearch dependencies (around line 59), and the test dependency after the opensearch-testcontainers dependency (around line 128):
+In `cameleer-server-app/pom.xml`, add these two dependencies. Place the runtime dependency after the opensearch dependencies (around line 59), and the test dependency after the opensearch-testcontainers dependency (around line 128):
```xml
@@ -65,13 +65,13 @@ Note: The `all` classifier bundles the HTTP client, avoiding transitive dependen
- [ ] **Step 2: Verify compilation**
-Run: `mvn clean compile -pl cameleer3-server-app -am`
+Run: `mvn clean compile -pl cameleer-server-app -am`
Expected: BUILD SUCCESS
- [ ] **Step 3: Commit**
```bash
-git add cameleer3-server-app/pom.xml
+git add cameleer-server-app/pom.xml
git commit -m "build: add clickhouse-jdbc and testcontainers-clickhouse dependencies"
```
@@ -80,14 +80,14 @@ git commit -m "build: add clickhouse-jdbc and testcontainers-clickhouse dependen
### Task 2: ClickHouse Configuration
**Files:**
-- Create: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/ClickHouseProperties.java`
-- Create: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/ClickHouseConfig.java`
-- Modify: `cameleer3-server-app/src/main/resources/application.yml`
+- Create: `cameleer-server-app/src/main/java/com/cameleer/server/app/config/ClickHouseProperties.java`
+- Create: `cameleer-server-app/src/main/java/com/cameleer/server/app/config/ClickHouseConfig.java`
+- Modify: `cameleer-server-app/src/main/resources/application.yml`
- [ ] **Step 1: Create ClickHouseProperties**
```java
-package com.cameleer3.server.app.config;
+package com.cameleer.server.app.config;
import org.springframework.boot.context.properties.ConfigurationProperties;
@@ -112,7 +112,7 @@ public class ClickHouseProperties {
- [ ] **Step 2: Create ClickHouseConfig**
```java
-package com.cameleer3.server.app.config;
+package com.cameleer.server.app.config;
import com.zaxxer.hikari.HikariDataSource;
import org.springframework.beans.factory.annotation.Qualifier;
@@ -168,15 +168,15 @@ Note: The existing `cameleer:` block already has `body-size-limit` and `retentio
- [ ] **Step 4: Verify compilation**
-Run: `mvn clean compile -pl cameleer3-server-app -am`
+Run: `mvn clean compile -pl cameleer-server-app -am`
Expected: BUILD SUCCESS
- [ ] **Step 5: Commit**
```bash
-git add cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/ClickHouseProperties.java
-git add cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/ClickHouseConfig.java
-git add cameleer3-server-app/src/main/resources/application.yml
+git add cameleer-server-app/src/main/java/com/cameleer/server/app/config/ClickHouseProperties.java
+git add cameleer-server-app/src/main/java/com/cameleer/server/app/config/ClickHouseConfig.java
+git add cameleer-server-app/src/main/resources/application.yml
git commit -m "feat: add ClickHouse DataSource and JdbcTemplate configuration"
```
@@ -185,12 +185,12 @@ git commit -m "feat: add ClickHouse DataSource and JdbcTemplate configuration"
### Task 3: Schema Initializer + DDL Script
**Files:**
-- Create: `cameleer3-server-app/src/main/resources/clickhouse/V1__agent_metrics.sql`
-- Create: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/ClickHouseSchemaInitializer.java`
+- Create: `cameleer-server-app/src/main/resources/clickhouse/V1__agent_metrics.sql`
+- Create: `cameleer-server-app/src/main/java/com/cameleer/server/app/config/ClickHouseSchemaInitializer.java`
- [ ] **Step 1: Create DDL script**
-File: `cameleer3-server-app/src/main/resources/clickhouse/V1__agent_metrics.sql`
+File: `cameleer-server-app/src/main/resources/clickhouse/V1__agent_metrics.sql`
```sql
CREATE TABLE IF NOT EXISTS agent_metrics (
@@ -212,7 +212,7 @@ SETTINGS index_granularity = 8192;
- [ ] **Step 2: Create ClickHouseSchemaInitializer**
```java
-package com.cameleer3.server.app.config;
+package com.cameleer.server.app.config;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -268,14 +268,14 @@ public class ClickHouseSchemaInitializer {
- [ ] **Step 3: Verify compilation**
-Run: `mvn clean compile -pl cameleer3-server-app -am`
+Run: `mvn clean compile -pl cameleer-server-app -am`
Expected: BUILD SUCCESS
- [ ] **Step 4: Commit**
```bash
-git add cameleer3-server-app/src/main/resources/clickhouse/V1__agent_metrics.sql
-git add cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/ClickHouseSchemaInitializer.java
+git add cameleer-server-app/src/main/resources/clickhouse/V1__agent_metrics.sql
+git add cameleer-server-app/src/main/java/com/cameleer/server/app/config/ClickHouseSchemaInitializer.java
git commit -m "feat: add ClickHouse schema initializer with agent_metrics DDL"
```
@@ -284,15 +284,15 @@ git commit -m "feat: add ClickHouse schema initializer with agent_metrics DDL"
### Task 4: ClickHouseMetricsStore (TDD)
**Files:**
-- Create: `cameleer3-server-app/src/test/java/com/cameleer3/server/app/storage/ClickHouseMetricsStoreTest.java`
-- Create: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/ClickHouseMetricsStore.java`
+- Create: `cameleer-server-app/src/test/java/com/cameleer/server/app/storage/ClickHouseMetricsStoreTest.java`
+- Create: `cameleer-server-app/src/main/java/com/cameleer/server/app/storage/ClickHouseMetricsStore.java`
- [ ] **Step 1: Write the failing test**
```java
-package com.cameleer3.server.app.storage;
+package com.cameleer.server.app.storage;
-import com.cameleer3.server.core.storage.model.MetricsSnapshot;
+import com.cameleer.server.core.storage.model.MetricsSnapshot;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.jdbc.core.JdbcTemplate;
@@ -406,16 +406,16 @@ class ClickHouseMetricsStoreTest {
- [ ] **Step 2: Run test to verify it fails**
-Run: `mvn test -pl cameleer3-server-app -Dtest=ClickHouseMetricsStoreTest -DfailIfNoTests=false`
+Run: `mvn test -pl cameleer-server-app -Dtest=ClickHouseMetricsStoreTest -DfailIfNoTests=false`
Expected: FAIL — `ClickHouseMetricsStore` class does not exist
- [ ] **Step 3: Write ClickHouseMetricsStore**
```java
-package com.cameleer3.server.app.storage;
+package com.cameleer.server.app.storage;
-import com.cameleer3.server.core.storage.MetricsStore;
-import com.cameleer3.server.core.storage.model.MetricsSnapshot;
+import com.cameleer.server.core.storage.MetricsStore;
+import com.cameleer.server.core.storage.model.MetricsSnapshot;
import org.springframework.jdbc.core.JdbcTemplate;
import java.sql.Timestamp;
@@ -459,7 +459,7 @@ Note: ClickHouse JDBC driver handles `Map` natively for `Map(Str
- [ ] **Step 4: Run test to verify it passes**
-Run: `mvn test -pl cameleer3-server-app -Dtest=ClickHouseMetricsStoreTest`
+Run: `mvn test -pl cameleer-server-app -Dtest=ClickHouseMetricsStoreTest`
Expected: PASS — all 4 tests green
If the tags test fails due to JDBC Map handling, adjust `tagsToClickHouseMap` to return a `java.util.HashMap` (ClickHouse JDBC requires a mutable map). If needed, wrap: `return new HashMap<>(tags)`.
@@ -467,8 +467,8 @@ If the tags test fails due to JDBC Map handling, adjust `tagsToClickHouseMap` to
- [ ] **Step 5: Commit**
```bash
-git add cameleer3-server-app/src/test/java/com/cameleer3/server/app/storage/ClickHouseMetricsStoreTest.java
-git add cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/ClickHouseMetricsStore.java
+git add cameleer-server-app/src/test/java/com/cameleer/server/app/storage/ClickHouseMetricsStoreTest.java
+git add cameleer-server-app/src/main/java/com/cameleer/server/app/storage/ClickHouseMetricsStore.java
git commit -m "feat: add ClickHouseMetricsStore with batch insert"
```
@@ -479,16 +479,16 @@ git commit -m "feat: add ClickHouseMetricsStore with batch insert"
Extract the query logic from `AgentMetricsController` into an interface.
**Files:**
-- Create: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/storage/MetricsQueryStore.java`
-- Create: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresMetricsQueryStore.java`
-- Modify: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/AgentMetricsController.java`
+- Create: `cameleer-server-core/src/main/java/com/cameleer/server/core/storage/MetricsQueryStore.java`
+- Create: `cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresMetricsQueryStore.java`
+- Modify: `cameleer-server-app/src/main/java/com/cameleer/server/app/controller/AgentMetricsController.java`
- [ ] **Step 1: Create MetricsQueryStore interface**
```java
-package com.cameleer3.server.core.storage;
+package com.cameleer.server.core.storage;
-import com.cameleer3.server.core.storage.model.MetricTimeSeries;
+import com.cameleer.server.core.storage.model.MetricTimeSeries;
import java.time.Instant;
import java.util.List;
@@ -515,7 +515,7 @@ public interface MetricsQueryStore {
- [ ] **Step 2: Create MetricTimeSeries.Bucket record**
```java
-package com.cameleer3.server.core.storage.model;
+package com.cameleer.server.core.storage.model;
import java.time.Instant;
import java.util.List;
@@ -529,10 +529,10 @@ public record MetricTimeSeries(String metricName, List buckets) {
- [ ] **Step 3: Create PostgresMetricsQueryStore (extract from controller)**
```java
-package com.cameleer3.server.app.storage;
+package com.cameleer.server.app.storage;
-import com.cameleer3.server.core.storage.MetricsQueryStore;
-import com.cameleer3.server.core.storage.model.MetricTimeSeries;
+import com.cameleer.server.core.storage.MetricsQueryStore;
+import com.cameleer.server.core.storage.model.MetricTimeSeries;
import org.springframework.jdbc.core.JdbcTemplate;
import java.sql.Timestamp;
@@ -591,12 +591,12 @@ public class PostgresMetricsQueryStore implements MetricsQueryStore {
Replace the entire `AgentMetricsController.java` content:
```java
-package com.cameleer3.server.app.controller;
+package com.cameleer.server.app.controller;
-import com.cameleer3.server.app.dto.AgentMetricsResponse;
-import com.cameleer3.server.app.dto.MetricBucket;
-import com.cameleer3.server.core.storage.MetricsQueryStore;
-import com.cameleer3.server.core.storage.model.MetricTimeSeries;
+import com.cameleer.server.app.dto.AgentMetricsResponse;
+import com.cameleer.server.app.dto.MetricBucket;
+import com.cameleer.server.core.storage.MetricsQueryStore;
+import com.cameleer.server.core.storage.model.MetricTimeSeries;
import org.springframework.web.bind.annotation.*;
import java.time.Instant;
@@ -650,8 +650,8 @@ public class AgentMetricsController {
The refactored `AgentMetricsController` needs a `MetricsQueryStore` bean. Add this to `StorageBeanConfig.java`:
```java
-import com.cameleer3.server.app.storage.PostgresMetricsQueryStore;
-import com.cameleer3.server.core.storage.MetricsQueryStore;
+import com.cameleer.server.app.storage.PostgresMetricsQueryStore;
+import com.cameleer.server.core.storage.MetricsQueryStore;
// Add this bean method:
@Bean
@@ -664,17 +664,17 @@ This creates the PG implementation as the default. Task 7 will replace this with
- [ ] **Step 6: Verify compilation**
-Run: `mvn clean compile -pl cameleer3-server-app -am`
+Run: `mvn clean compile -pl cameleer-server-app -am`
Expected: BUILD SUCCESS
- [ ] **Step 7: Commit**
```bash
-git add cameleer3-server-core/src/main/java/com/cameleer3/server/core/storage/MetricsQueryStore.java
-git add cameleer3-server-core/src/main/java/com/cameleer3/server/core/storage/model/MetricTimeSeries.java
-git add cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresMetricsQueryStore.java
-git add cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/AgentMetricsController.java
-git add cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/StorageBeanConfig.java
+git add cameleer-server-core/src/main/java/com/cameleer/server/core/storage/MetricsQueryStore.java
+git add cameleer-server-core/src/main/java/com/cameleer/server/core/storage/model/MetricTimeSeries.java
+git add cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresMetricsQueryStore.java
+git add cameleer-server-app/src/main/java/com/cameleer/server/app/controller/AgentMetricsController.java
+git add cameleer-server-app/src/main/java/com/cameleer/server/app/config/StorageBeanConfig.java
git commit -m "refactor: extract MetricsQueryStore interface from AgentMetricsController"
```
@@ -683,15 +683,15 @@ git commit -m "refactor: extract MetricsQueryStore interface from AgentMetricsCo
### Task 6: ClickHouseMetricsQueryStore (TDD)
**Files:**
-- Create: `cameleer3-server-app/src/test/java/com/cameleer3/server/app/storage/ClickHouseMetricsQueryStoreTest.java`
-- Create: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/ClickHouseMetricsQueryStore.java`
+- Create: `cameleer-server-app/src/test/java/com/cameleer/server/app/storage/ClickHouseMetricsQueryStoreTest.java`
+- Create: `cameleer-server-app/src/main/java/com/cameleer/server/app/storage/ClickHouseMetricsQueryStore.java`
- [ ] **Step 1: Write the failing test**
```java
-package com.cameleer3.server.app.storage;
+package com.cameleer.server.app.storage;
-import com.cameleer3.server.core.storage.model.MetricTimeSeries;
+import com.cameleer.server.core.storage.model.MetricTimeSeries;
import com.zaxxer.hikari.HikariDataSource;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -807,16 +807,16 @@ class ClickHouseMetricsQueryStoreTest {
- [ ] **Step 2: Run test to verify it fails**
-Run: `mvn test -pl cameleer3-server-app -Dtest=ClickHouseMetricsQueryStoreTest -DfailIfNoTests=false`
+Run: `mvn test -pl cameleer-server-app -Dtest=ClickHouseMetricsQueryStoreTest -DfailIfNoTests=false`
Expected: FAIL — `ClickHouseMetricsQueryStore` class does not exist
- [ ] **Step 3: Write ClickHouseMetricsQueryStore**
```java
-package com.cameleer3.server.app.storage;
+package com.cameleer.server.app.storage;
-import com.cameleer3.server.core.storage.MetricsQueryStore;
-import com.cameleer3.server.core.storage.model.MetricTimeSeries;
+import com.cameleer.server.core.storage.MetricsQueryStore;
+import com.cameleer.server.core.storage.model.MetricTimeSeries;
import org.springframework.jdbc.core.JdbcTemplate;
import java.time.Instant;
@@ -896,14 +896,14 @@ public class ClickHouseMetricsQueryStore implements MetricsQueryStore {
- [ ] **Step 4: Run test to verify it passes**
-Run: `mvn test -pl cameleer3-server-app -Dtest=ClickHouseMetricsQueryStoreTest`
+Run: `mvn test -pl cameleer-server-app -Dtest=ClickHouseMetricsQueryStoreTest`
Expected: PASS — all 4 tests green
- [ ] **Step 5: Commit**
```bash
-git add cameleer3-server-app/src/test/java/com/cameleer3/server/app/storage/ClickHouseMetricsQueryStoreTest.java
-git add cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/ClickHouseMetricsQueryStore.java
+git add cameleer-server-app/src/test/java/com/cameleer/server/app/storage/ClickHouseMetricsQueryStoreTest.java
+git add cameleer-server-app/src/main/java/com/cameleer/server/app/storage/ClickHouseMetricsQueryStore.java
git commit -m "feat: add ClickHouseMetricsQueryStore with time-bucketed queries"
```
@@ -912,17 +912,17 @@ git commit -m "feat: add ClickHouseMetricsQueryStore with time-bucketed queries"
### Task 7: Wire Feature Flag in StorageBeanConfig
**Files:**
-- Modify: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/StorageBeanConfig.java`
+- Modify: `cameleer-server-app/src/main/java/com/cameleer/server/app/config/StorageBeanConfig.java`
- [ ] **Step 1: Replace simple beans with conditional MetricsStore and MetricsQueryStore beans**
In `StorageBeanConfig.java`, **remove** the unconditional `metricsQueryStore` bean added in Task 5. Replace with these conditional bean definitions:
```java
-import com.cameleer3.server.app.storage.ClickHouseMetricsStore;
-import com.cameleer3.server.app.storage.ClickHouseMetricsQueryStore;
-import com.cameleer3.server.app.storage.PostgresMetricsQueryStore;
-import com.cameleer3.server.core.storage.MetricsQueryStore;
+import com.cameleer.server.app.storage.ClickHouseMetricsStore;
+import com.cameleer.server.app.storage.ClickHouseMetricsQueryStore;
+import com.cameleer.server.app.storage.PostgresMetricsQueryStore;
+import com.cameleer.server.core.storage.MetricsQueryStore;
// ... existing beans ...
@@ -959,7 +959,7 @@ Add the necessary imports to `StorageBeanConfig.java`:
```java
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.beans.factory.annotation.Qualifier;
-import com.cameleer3.server.core.storage.MetricsStore;
+import com.cameleer.server.core.storage.MetricsStore;
```
- [ ] **Step 2: Remove @Repository from PostgresMetricsStore**
@@ -968,19 +968,19 @@ In `PostgresMetricsStore.java`, remove the `@Repository` annotation from the cla
- [ ] **Step 3: Verify compilation**
-Run: `mvn clean compile -pl cameleer3-server-app -am`
+Run: `mvn clean compile -pl cameleer-server-app -am`
Expected: BUILD SUCCESS
- [ ] **Step 4: Run existing tests to verify no regression**
-Run: `mvn test -pl cameleer3-server-app`
+Run: `mvn test -pl cameleer-server-app`
Expected: All existing tests pass. The default config (`cameleer.storage.metrics=postgres`) means the PG beans are created, ClickHouse beans are not (ClickHouse DataSource not needed).
- [ ] **Step 5: Commit**
```bash
-git add cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/StorageBeanConfig.java
-git add cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresMetricsStore.java
+git add cameleer-server-app/src/main/java/com/cameleer/server/app/config/StorageBeanConfig.java
+git add cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresMetricsStore.java
git commit -m "feat: wire MetricsStore and MetricsQueryStore with feature flag"
```
@@ -1076,7 +1076,7 @@ spec:
- [ ] **Step 2: Add ClickHouse env vars to server.yaml**
-Add these env vars to the `cameleer3-server` container in `deploy/base/server.yaml`, after the existing env vars (before `resources:`):
+Add these env vars to the `cameleer-server` container in `deploy/base/server.yaml`, after the existing env vars (before `resources:`):
```yaml
- name: CLICKHOUSE_ENABLED
@@ -1102,7 +1102,7 @@ git commit -m "deploy: add ClickHouse StatefulSet and server env vars"
### Task 9: Integration Smoke Test
**Files:**
-- Modify: `cameleer3-server-app/src/test/java/com/cameleer3/server/app/AbstractPostgresIT.java` (add ClickHouse container)
+- Modify: `cameleer-server-app/src/test/java/com/cameleer/server/app/AbstractPostgresIT.java` (add ClickHouse container)
- [ ] **Step 1: Update AbstractPostgresIT to optionally start ClickHouse**
@@ -1129,13 +1129,13 @@ registry.add("clickhouse.password", clickhouse::getPassword);
- [ ] **Step 2: Run all integration tests**
-Run: `mvn verify -pl cameleer3-server-app`
+Run: `mvn verify -pl cameleer-server-app`
Expected: All ITs pass. ClickHouse schema initializer runs and creates the `agent_metrics` table. The `MetricsControllerIT` still uses PG (default storage flag is `postgres`).
- [ ] **Step 3: Commit**
```bash
-git add cameleer3-server-app/src/test/java/com/cameleer3/server/app/AbstractPostgresIT.java
+git add cameleer-server-app/src/test/java/com/cameleer/server/app/AbstractPostgresIT.java
git commit -m "test: add ClickHouse testcontainer to integration test base"
```
@@ -1162,7 +1162,7 @@ curl "http://localhost:8123/" --data "CREATE DATABASE IF NOT EXISTS cameleer"
Start the server with ClickHouse enabled:
```bash
-CLICKHOUSE_ENABLED=true CAMELEER_STORAGE_METRICS=clickhouse java -jar cameleer3-server-app/target/cameleer3-server-app-1.0-SNAPSHOT.jar
+CLICKHOUSE_ENABLED=true CAMELEER_STORAGE_METRICS=clickhouse java -jar cameleer-server-app/target/cameleer-server-app-1.0-SNAPSHOT.jar
```
Verify schema initialization in the logs: `Executing ClickHouse schema script: V1__agent_metrics.sql`
diff --git a/docs/superpowers/plans/2026-03-31-clickhouse-phase2-executions-search.md b/docs/superpowers/plans/2026-03-31-clickhouse-phase2-executions-search.md
index 904b8d10..5f65d992 100644
--- a/docs/superpowers/plans/2026-03-31-clickhouse-phase2-executions-search.md
+++ b/docs/superpowers/plans/2026-03-31-clickhouse-phase2-executions-search.md
@@ -10,7 +10,7 @@
**Design Spec:** `docs/superpowers/specs/2026-03-31-clickhouse-migration-design.md`
-**Note on cameleer3-common:** The agent team is refactoring `cameleer3-common` to add `ExecutionChunk` and `FlatProcessorRecord`. Until that library is published, this plan defines server-side DTOs in `cameleer3-server-core` that mirror the common models. When the common lib is ready, swap the server DTOs for the shared classes (import change only).
+**Note on cameleer-common:** The agent team is refactoring `cameleer-common` to add `ExecutionChunk` and `FlatProcessorRecord`. Until that library is published, this plan defines server-side DTOs in `cameleer-server-core` that mirror the common models. When the common lib is ready, swap the server DTOs for the shared classes (import change only).
---
@@ -18,38 +18,38 @@
| File | Responsibility |
|------|----------------|
-| `cameleer3-server-app/.../resources/clickhouse/V2__executions.sql` | DDL for `executions` table (ReplacingMergeTree) |
-| `cameleer3-server-app/.../resources/clickhouse/V3__processor_executions.sql` | DDL for `processor_executions` table (MergeTree) — uses seq/parentSeq/iteration |
-| `cameleer3-server-core/.../model/ExecutionChunk.java` | Server-side DTO mirroring agent's ExecutionChunk (temporary until common lib ready) |
-| `cameleer3-server-core/.../model/FlatProcessorRecord.java` | Server-side DTO mirroring agent's FlatProcessorRecord (temporary until common lib ready) |
-| `cameleer3-server-core/.../ingestion/ChunkAccumulator.java` | Accumulates exchange envelope across chunks, pushes processor records + final execution row to WriteBuffers |
-| `cameleer3-server-core/.../ingestion/MergedExecution.java` | Record holding merged execution envelope + version + tenant |
-| `cameleer3-server-app/.../storage/ClickHouseExecutionStore.java` | Batch INSERT for executions + processor_executions to ClickHouse |
-| `cameleer3-server-app/.../search/ClickHouseSearchIndex.java` | SearchIndex impl using SQL with ngram indexes |
-| `cameleer3-server-app/.../ingestion/ExecutionFlushScheduler.java` | Drains execution + processor WriteBuffers → ClickHouseExecutionStore |
-| `cameleer3-server-app/.../controller/ChunkIngestionController.java` | REST endpoint `POST /api/v1/data/chunks` accepting ExecutionChunk |
-| `cameleer3-server-app/.../config/StorageBeanConfig.java` | Modified: add chunk accumulator + CH search beans |
-| `cameleer3-server-app/.../config/IngestionBeanConfig.java` | Modified: add execution + processor WriteBuffer beans |
-| `cameleer3-server-app/.../resources/application.yml` | Modified: add `cameleer.storage.search` flag |
-| `cameleer3-server-app/...test.../storage/ClickHouseExecutionStoreIT.java` | Integration test for CH execution writes |
-| `cameleer3-server-app/...test.../search/ClickHouseSearchIndexIT.java` | Integration test for CH search |
-| `cameleer3-server-core/...test.../ingestion/ChunkAccumulatorTest.java` | Unit test for accumulator logic |
+| `cameleer-server-app/.../resources/clickhouse/V2__executions.sql` | DDL for `executions` table (ReplacingMergeTree) |
+| `cameleer-server-app/.../resources/clickhouse/V3__processor_executions.sql` | DDL for `processor_executions` table (MergeTree) — uses seq/parentSeq/iteration |
+| `cameleer-server-core/.../model/ExecutionChunk.java` | Server-side DTO mirroring agent's ExecutionChunk (temporary until common lib ready) |
+| `cameleer-server-core/.../model/FlatProcessorRecord.java` | Server-side DTO mirroring agent's FlatProcessorRecord (temporary until common lib ready) |
+| `cameleer-server-core/.../ingestion/ChunkAccumulator.java` | Accumulates exchange envelope across chunks, pushes processor records + final execution row to WriteBuffers |
+| `cameleer-server-core/.../ingestion/MergedExecution.java` | Record holding merged execution envelope + version + tenant |
+| `cameleer-server-app/.../storage/ClickHouseExecutionStore.java` | Batch INSERT for executions + processor_executions to ClickHouse |
+| `cameleer-server-app/.../search/ClickHouseSearchIndex.java` | SearchIndex impl using SQL with ngram indexes |
+| `cameleer-server-app/.../ingestion/ExecutionFlushScheduler.java` | Drains execution + processor WriteBuffers → ClickHouseExecutionStore |
+| `cameleer-server-app/.../controller/ChunkIngestionController.java` | REST endpoint `POST /api/v1/data/chunks` accepting ExecutionChunk |
+| `cameleer-server-app/.../config/StorageBeanConfig.java` | Modified: add chunk accumulator + CH search beans |
+| `cameleer-server-app/.../config/IngestionBeanConfig.java` | Modified: add execution + processor WriteBuffer beans |
+| `cameleer-server-app/.../resources/application.yml` | Modified: add `cameleer.storage.search` flag |
+| `cameleer-server-app/...test.../storage/ClickHouseExecutionStoreIT.java` | Integration test for CH execution writes |
+| `cameleer-server-app/...test.../search/ClickHouseSearchIndexIT.java` | Integration test for CH search |
+| `cameleer-server-core/...test.../ingestion/ChunkAccumulatorTest.java` | Unit test for accumulator logic |
---
### Task 1: Server-Side DTOs (ExecutionChunk + FlatProcessorRecord)
**Files:**
-- Create: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/storage/model/FlatProcessorRecord.java`
-- Create: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/storage/model/ExecutionChunk.java`
+- Create: `cameleer-server-core/src/main/java/com/cameleer/server/core/storage/model/FlatProcessorRecord.java`
+- Create: `cameleer-server-core/src/main/java/com/cameleer/server/core/storage/model/ExecutionChunk.java`
-These mirror the agent's models exactly. When `cameleer3-common` is published with these classes, delete these files and update imports.
+These mirror the agent's models exactly. When `cameleer-common` is published with these classes, delete these files and update imports.
- [ ] **Step 1: Create FlatProcessorRecord**
```java
-// cameleer3-server-core/src/main/java/com/cameleer3/server/core/storage/model/FlatProcessorRecord.java
-package com.cameleer3.server.core.storage.model;
+// cameleer-server-core/src/main/java/com/cameleer/server/core/storage/model/FlatProcessorRecord.java
+package com.cameleer.server.core.storage.model;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
@@ -59,7 +59,7 @@ import java.util.Map;
/**
* Flat processor execution record with seq/parentSeq for tree reconstruction.
- * Mirrors cameleer3-common FlatProcessorRecord — replace with common lib import when available.
+ * Mirrors cameleer-common FlatProcessorRecord — replace with common lib import when available.
*/
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
@@ -96,8 +96,8 @@ public record FlatProcessorRecord(
- [ ] **Step 2: Create ExecutionChunk**
```java
-// cameleer3-server-core/src/main/java/com/cameleer3/server/core/storage/model/ExecutionChunk.java
-package com.cameleer3.server.core.storage.model;
+// cameleer-server-core/src/main/java/com/cameleer/server/core/storage/model/ExecutionChunk.java
+package com.cameleer.server.core.storage.model;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
@@ -109,7 +109,7 @@ import java.util.Map;
/**
* Chunk document: exchange envelope + list of FlatProcessorRecords.
- * Mirrors cameleer3-common ExecutionChunk — replace with common lib import when available.
+ * Mirrors cameleer-common ExecutionChunk — replace with common lib import when available.
*/
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
@@ -144,8 +144,8 @@ public record ExecutionChunk(
- [ ] **Step 3: Write deserialization test**
```java
-// cameleer3-server-core/src/test/java/com/cameleer3/server/core/storage/model/ExecutionChunkDeserializationTest.java
-package com.cameleer3.server.core.storage.model;
+// cameleer-server-core/src/test/java/com/cameleer/server/core/storage/model/ExecutionChunkDeserializationTest.java
+package com.cameleer.server.core.storage.model;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
@@ -259,7 +259,7 @@ class ExecutionChunkDeserializationTest {
- [ ] **Step 4: Run tests**
```bash
-mvn test -pl cameleer3-server-core -Dtest=ExecutionChunkDeserializationTest
+mvn test -pl cameleer-server-core -Dtest=ExecutionChunkDeserializationTest
```
Expected: PASS (3 tests).
@@ -267,9 +267,9 @@ Expected: PASS (3 tests).
- [ ] **Step 5: Commit**
```bash
-git add cameleer3-server-core/src/main/java/com/cameleer3/server/core/storage/model/FlatProcessorRecord.java \
- cameleer3-server-core/src/main/java/com/cameleer3/server/core/storage/model/ExecutionChunk.java \
- cameleer3-server-core/src/test/java/com/cameleer3/server/core/storage/model/ExecutionChunkDeserializationTest.java
+git add cameleer-server-core/src/main/java/com/cameleer/server/core/storage/model/FlatProcessorRecord.java \
+ cameleer-server-core/src/main/java/com/cameleer/server/core/storage/model/ExecutionChunk.java \
+ cameleer-server-core/src/test/java/com/cameleer/server/core/storage/model/ExecutionChunkDeserializationTest.java
git commit -m "feat: add server-side ExecutionChunk and FlatProcessorRecord DTOs"
```
@@ -278,8 +278,8 @@ git commit -m "feat: add server-side ExecutionChunk and FlatProcessorRecord DTOs
### Task 2: DDL Scripts for executions and processor_executions
**Files:**
-- Create: `cameleer3-server-app/src/main/resources/clickhouse/V2__executions.sql`
-- Create: `cameleer3-server-app/src/main/resources/clickhouse/V3__processor_executions.sql`
+- Create: `cameleer-server-app/src/main/resources/clickhouse/V2__executions.sql`
+- Create: `cameleer-server-app/src/main/resources/clickhouse/V3__processor_executions.sql`
- [ ] **Step 1: Create executions DDL**
@@ -395,7 +395,7 @@ SETTINGS index_granularity = 8192;
- [ ] **Step 3: Verify DDL loads**
```bash
-mvn clean compile -pl cameleer3-server-app
+mvn clean compile -pl cameleer-server-app
```
`ClickHouseSchemaInitializer` scans `classpath:clickhouse/*.sql` automatically.
@@ -403,8 +403,8 @@ mvn clean compile -pl cameleer3-server-app
- [ ] **Step 4: Commit**
```bash
-git add cameleer3-server-app/src/main/resources/clickhouse/V2__executions.sql \
- cameleer3-server-app/src/main/resources/clickhouse/V3__processor_executions.sql
+git add cameleer-server-app/src/main/resources/clickhouse/V2__executions.sql \
+ cameleer-server-app/src/main/resources/clickhouse/V3__processor_executions.sql
git commit -m "feat(clickhouse): add executions and processor_executions DDL for chunked transport"
```
@@ -413,17 +413,17 @@ git commit -m "feat(clickhouse): add executions and processor_executions DDL for
### Task 3: MergedExecution + ClickHouseExecutionStore
**Files:**
-- Create: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/ingestion/MergedExecution.java`
-- Create: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/ClickHouseExecutionStore.java`
-- Create: `cameleer3-server-app/src/test/java/com/cameleer3/server/app/storage/ClickHouseExecutionStoreIT.java`
+- Create: `cameleer-server-core/src/main/java/com/cameleer/server/core/ingestion/MergedExecution.java`
+- Create: `cameleer-server-app/src/main/java/com/cameleer/server/app/storage/ClickHouseExecutionStore.java`
+- Create: `cameleer-server-app/src/test/java/com/cameleer/server/app/storage/ClickHouseExecutionStoreIT.java`
The store handles batch INSERT for both `executions` (from MergedExecution) and `processor_executions` (from FlatProcessorRecord). It does NOT implement the `ExecutionStore` interface — it has its own batch API consumed by the flush scheduler.
- [ ] **Step 1: Create MergedExecution record**
```java
-// cameleer3-server-core/src/main/java/com/cameleer3/server/core/ingestion/MergedExecution.java
-package com.cameleer3.server.core.ingestion;
+// cameleer-server-core/src/main/java/com/cameleer/server/core/ingestion/MergedExecution.java
+package com.cameleer.server.core.ingestion;
import java.time.Instant;
import java.util.Map;
@@ -468,11 +468,11 @@ public record MergedExecution(
- [ ] **Step 2: Write the failing integration test**
```java
-// cameleer3-server-app/src/test/java/com/cameleer3/server/app/storage/ClickHouseExecutionStoreIT.java
-package com.cameleer3.server.app.storage;
+// cameleer-server-app/src/test/java/com/cameleer/server/app/storage/ClickHouseExecutionStoreIT.java
+package com.cameleer.server.app.storage;
-import com.cameleer3.server.core.ingestion.MergedExecution;
-import com.cameleer3.server.core.storage.model.FlatProcessorRecord;
+import com.cameleer.server.core.ingestion.MergedExecution;
+import com.cameleer.server.core.storage.model.FlatProcessorRecord;
import com.zaxxer.hikari.HikariDataSource;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -654,7 +654,7 @@ class ClickHouseExecutionStoreIT {
- [ ] **Step 3: Run test to verify it fails**
```bash
-mvn test -pl cameleer3-server-app -Dtest=ClickHouseExecutionStoreIT -Dfailsafe.provider=surefire -DfailIfNoTests=false
+mvn test -pl cameleer-server-app -Dtest=ClickHouseExecutionStoreIT -Dfailsafe.provider=surefire -DfailIfNoTests=false
```
Expected: compilation error — `ClickHouseExecutionStore` does not exist.
@@ -662,11 +662,11 @@ Expected: compilation error — `ClickHouseExecutionStore` does not exist.
- [ ] **Step 4: Implement ClickHouseExecutionStore**
```java
-// cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/ClickHouseExecutionStore.java
-package com.cameleer3.server.app.storage;
+// cameleer-server-app/src/main/java/com/cameleer/server/app/storage/ClickHouseExecutionStore.java
+package com.cameleer.server.app.storage;
-import com.cameleer3.server.core.ingestion.MergedExecution;
-import com.cameleer3.server.core.storage.model.FlatProcessorRecord;
+import com.cameleer.server.core.ingestion.MergedExecution;
+import com.cameleer.server.core.storage.model.FlatProcessorRecord;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.jdbc.core.JdbcTemplate;
@@ -840,7 +840,7 @@ public class ClickHouseExecutionStore {
- [ ] **Step 5: Run test to verify it passes**
```bash
-mvn test -pl cameleer3-server-app -Dtest=ClickHouseExecutionStoreIT -Dfailsafe.provider=surefire
+mvn test -pl cameleer-server-app -Dtest=ClickHouseExecutionStoreIT -Dfailsafe.provider=surefire
```
Expected: all 5 tests PASS.
@@ -848,9 +848,9 @@ Expected: all 5 tests PASS.
- [ ] **Step 6: Commit**
```bash
-git add cameleer3-server-core/src/main/java/com/cameleer3/server/core/ingestion/MergedExecution.java \
- cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/ClickHouseExecutionStore.java \
- cameleer3-server-app/src/test/java/com/cameleer3/server/app/storage/ClickHouseExecutionStoreIT.java
+git add cameleer-server-core/src/main/java/com/cameleer/server/core/ingestion/MergedExecution.java \
+ cameleer-server-app/src/main/java/com/cameleer/server/app/storage/ClickHouseExecutionStore.java \
+ cameleer-server-app/src/test/java/com/cameleer/server/app/storage/ClickHouseExecutionStoreIT.java
git commit -m "feat(clickhouse): add ClickHouseExecutionStore with batch insert for chunked format"
```
@@ -859,8 +859,8 @@ git commit -m "feat(clickhouse): add ClickHouseExecutionStore with batch insert
### Task 4: ChunkAccumulator
**Files:**
-- Create: `cameleer3-server-core/src/test/java/com/cameleer3/server/core/ingestion/ChunkAccumulatorTest.java`
-- Create: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/ingestion/ChunkAccumulator.java`
+- Create: `cameleer-server-core/src/test/java/com/cameleer/server/core/ingestion/ChunkAccumulatorTest.java`
+- Create: `cameleer-server-core/src/main/java/com/cameleer/server/core/ingestion/ChunkAccumulator.java`
The ChunkAccumulator receives `ExecutionChunk` documents. For each chunk:
- Processor records are pushed to a sink immediately (they're append-only)
@@ -872,11 +872,11 @@ A scheduled sweep flushes stale exchanges (no final chunk received within 5 minu
- [ ] **Step 1: Write the failing unit test**
```java
-// cameleer3-server-core/src/test/java/com/cameleer3/server/core/ingestion/ChunkAccumulatorTest.java
-package com.cameleer3.server.core.ingestion;
+// cameleer-server-core/src/test/java/com/cameleer/server/core/ingestion/ChunkAccumulatorTest.java
+package com.cameleer.server.core.ingestion;
-import com.cameleer3.server.core.storage.model.ExecutionChunk;
-import com.cameleer3.server.core.storage.model.FlatProcessorRecord;
+import com.cameleer.server.core.storage.model.ExecutionChunk;
+import com.cameleer.server.core.storage.model.FlatProcessorRecord;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -1060,7 +1060,7 @@ class ChunkAccumulatorTest {
- [ ] **Step 2: Run test to verify it fails**
```bash
-mvn test -pl cameleer3-server-core -Dtest=ChunkAccumulatorTest -DfailIfNoTests=false
+mvn test -pl cameleer-server-core -Dtest=ChunkAccumulatorTest -DfailIfNoTests=false
```
Expected: compilation error — `ChunkAccumulator` does not exist.
@@ -1068,11 +1068,11 @@ Expected: compilation error — `ChunkAccumulator` does not exist.
- [ ] **Step 3: Implement ChunkAccumulator**
```java
-// cameleer3-server-core/src/main/java/com/cameleer3/server/core/ingestion/ChunkAccumulator.java
-package com.cameleer3.server.core.ingestion;
+// cameleer-server-core/src/main/java/com/cameleer/server/core/ingestion/ChunkAccumulator.java
+package com.cameleer.server.core.ingestion;
-import com.cameleer3.server.core.storage.model.ExecutionChunk;
-import com.cameleer3.server.core.storage.model.FlatProcessorRecord;
+import com.cameleer.server.core.storage.model.ExecutionChunk;
+import com.cameleer.server.core.storage.model.FlatProcessorRecord;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.slf4j.Logger;
@@ -1267,7 +1267,7 @@ public class ChunkAccumulator {
- [ ] **Step 4: Run test to verify it passes**
```bash
-mvn test -pl cameleer3-server-core -Dtest=ChunkAccumulatorTest
+mvn test -pl cameleer-server-core -Dtest=ChunkAccumulatorTest
```
Expected: all 5 tests PASS.
@@ -1275,8 +1275,8 @@ Expected: all 5 tests PASS.
- [ ] **Step 5: Commit**
```bash
-git add cameleer3-server-core/src/main/java/com/cameleer3/server/core/ingestion/ChunkAccumulator.java \
- cameleer3-server-core/src/test/java/com/cameleer3/server/core/ingestion/ChunkAccumulatorTest.java
+git add cameleer-server-core/src/main/java/com/cameleer/server/core/ingestion/ChunkAccumulator.java \
+ cameleer-server-core/src/test/java/com/cameleer/server/core/ingestion/ChunkAccumulatorTest.java
git commit -m "feat(clickhouse): add ChunkAccumulator for chunked execution ingestion"
```
@@ -1285,22 +1285,22 @@ git commit -m "feat(clickhouse): add ChunkAccumulator for chunked execution inge
### Task 5: ExecutionFlushScheduler + ChunkIngestionController
**Files:**
-- Create: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/ingestion/ExecutionFlushScheduler.java`
-- Create: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/ChunkIngestionController.java`
+- Create: `cameleer-server-app/src/main/java/com/cameleer/server/app/ingestion/ExecutionFlushScheduler.java`
+- Create: `cameleer-server-app/src/main/java/com/cameleer/server/app/controller/ChunkIngestionController.java`
- [ ] **Step 1: Implement ExecutionFlushScheduler**
Follows `MetricsFlushScheduler` pattern. Drains two WriteBuffers (executions + processor batches) and calls ClickHouseExecutionStore. Also runs the stale sweep.
```java
-// cameleer3-server-app/src/main/java/com/cameleer3/server/app/ingestion/ExecutionFlushScheduler.java
-package com.cameleer3.server.app.ingestion;
+// cameleer-server-app/src/main/java/com/cameleer/server/app/ingestion/ExecutionFlushScheduler.java
+package com.cameleer.server.app.ingestion;
-import com.cameleer3.server.app.config.IngestionConfig;
-import com.cameleer3.server.app.storage.ClickHouseExecutionStore;
-import com.cameleer3.server.core.ingestion.ChunkAccumulator;
-import com.cameleer3.server.core.ingestion.MergedExecution;
-import com.cameleer3.server.core.ingestion.WriteBuffer;
+import com.cameleer.server.app.config.IngestionConfig;
+import com.cameleer.server.app.storage.ClickHouseExecutionStore;
+import com.cameleer.server.core.ingestion.ChunkAccumulator;
+import com.cameleer.server.core.ingestion.MergedExecution;
+import com.cameleer.server.core.ingestion.WriteBuffer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.SmartLifecycle;
@@ -1395,11 +1395,11 @@ public class ExecutionFlushScheduler implements SmartLifecycle {
- [ ] **Step 2: Implement ChunkIngestionController**
```java
-// cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/ChunkIngestionController.java
-package com.cameleer3.server.app.controller;
+// cameleer-server-app/src/main/java/com/cameleer/server/app/controller/ChunkIngestionController.java
+package com.cameleer.server.app.controller;
-import com.cameleer3.server.core.ingestion.ChunkAccumulator;
-import com.cameleer3.server.core.storage.model.ExecutionChunk;
+import com.cameleer.server.core.ingestion.ChunkAccumulator;
+import com.cameleer.server.core.storage.model.ExecutionChunk;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.http.ResponseEntity;
@@ -1450,14 +1450,14 @@ public class ChunkIngestionController {
- [ ] **Step 3: Compile**
```bash
-mvn clean compile -pl cameleer3-server-app
+mvn clean compile -pl cameleer-server-app
```
- [ ] **Step 4: Commit**
```bash
-git add cameleer3-server-app/src/main/java/com/cameleer3/server/app/ingestion/ExecutionFlushScheduler.java \
- cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/ChunkIngestionController.java
+git add cameleer-server-app/src/main/java/com/cameleer/server/app/ingestion/ExecutionFlushScheduler.java \
+ cameleer-server-app/src/main/java/com/cameleer/server/app/controller/ChunkIngestionController.java
git commit -m "feat(clickhouse): add ExecutionFlushScheduler and ChunkIngestionController"
```
@@ -1466,8 +1466,8 @@ git commit -m "feat(clickhouse): add ExecutionFlushScheduler and ChunkIngestionC
### Task 6: ClickHouseSearchIndex
**Files:**
-- Create: `cameleer3-server-app/src/test/java/com/cameleer3/server/app/search/ClickHouseSearchIndexIT.java`
-- Create: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/search/ClickHouseSearchIndex.java`
+- Create: `cameleer-server-app/src/test/java/com/cameleer/server/app/search/ClickHouseSearchIndexIT.java`
+- Create: `cameleer-server-app/src/main/java/com/cameleer/server/app/search/ClickHouseSearchIndex.java`
Same as the original plan — implements `SearchIndex` using SQL against ClickHouse. The search query patterns are unchanged: `_search_text LIKE '%term%'` on executions, subquery join on processor_executions for body/header/error scoped searches.
@@ -1480,7 +1480,7 @@ Use the same test class from the original plan's Task 5, Step 1. The test seeds
- [ ] **Step 2: Run test to verify it fails**
```bash
-mvn test -pl cameleer3-server-app -Dtest=ClickHouseSearchIndexIT -Dfailsafe.provider=surefire -DfailIfNoTests=false
+mvn test -pl cameleer-server-app -Dtest=ClickHouseSearchIndexIT -Dfailsafe.provider=surefire -DfailIfNoTests=false
```
- [ ] **Step 3: Implement ClickHouseSearchIndex**
@@ -1490,14 +1490,14 @@ Use the same implementation from the original plan's Task 5, Step 3. The SQL que
- [ ] **Step 4: Run test to verify it passes**
```bash
-mvn test -pl cameleer3-server-app -Dtest=ClickHouseSearchIndexIT -Dfailsafe.provider=surefire
+mvn test -pl cameleer-server-app -Dtest=ClickHouseSearchIndexIT -Dfailsafe.provider=surefire
```
- [ ] **Step 5: Commit**
```bash
-git add cameleer3-server-app/src/main/java/com/cameleer3/server/app/search/ClickHouseSearchIndex.java \
- cameleer3-server-app/src/test/java/com/cameleer3/server/app/search/ClickHouseSearchIndexIT.java
+git add cameleer-server-app/src/main/java/com/cameleer/server/app/search/ClickHouseSearchIndex.java \
+ cameleer-server-app/src/test/java/com/cameleer/server/app/search/ClickHouseSearchIndexIT.java
git commit -m "feat(clickhouse): add ClickHouseSearchIndex with ngram-accelerated SQL search"
```
@@ -1506,10 +1506,10 @@ git commit -m "feat(clickhouse): add ClickHouseSearchIndex with ngram-accelerate
### Task 7: Feature Flag Wiring
**Files:**
-- Modify: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/StorageBeanConfig.java`
-- Modify: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/IngestionBeanConfig.java`
-- Modify: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/search/OpenSearchIndex.java`
-- Modify: `cameleer3-server-app/src/main/resources/application.yml`
+- Modify: `cameleer-server-app/src/main/java/com/cameleer/server/app/config/StorageBeanConfig.java`
+- Modify: `cameleer-server-app/src/main/java/com/cameleer/server/app/config/IngestionBeanConfig.java`
+- Modify: `cameleer-server-app/src/main/java/com/cameleer/server/app/search/OpenSearchIndex.java`
+- Modify: `cameleer-server-app/src/main/resources/application.yml`
- Modify: `deploy/base/server.yaml`
Wire up the ChunkAccumulator, WriteBuffers, flush scheduler, and search switching.
@@ -1608,10 +1608,10 @@ mvn clean verify -DskipITs
- [ ] **Step 7: Commit**
```bash
-git add cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/StorageBeanConfig.java \
- cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/IngestionBeanConfig.java \
- cameleer3-server-app/src/main/java/com/cameleer3/server/app/search/OpenSearchIndex.java \
- cameleer3-server-app/src/main/resources/application.yml \
+git add cameleer-server-app/src/main/java/com/cameleer/server/app/config/StorageBeanConfig.java \
+ cameleer-server-app/src/main/java/com/cameleer/server/app/config/IngestionBeanConfig.java \
+ cameleer-server-app/src/main/java/com/cameleer/server/app/search/OpenSearchIndex.java \
+ cameleer-server-app/src/main/resources/application.yml \
deploy/base/server.yaml
git commit -m "feat(clickhouse): wire ChunkAccumulator, flush scheduler, and search feature flag"
```
@@ -1621,24 +1621,24 @@ git commit -m "feat(clickhouse): wire ChunkAccumulator, flush scheduler, and sea
### Task 8: End-to-End Integration Test
**Files:**
-- Create: `cameleer3-server-app/src/test/java/com/cameleer3/server/app/storage/ClickHouseChunkPipelineIT.java`
+- Create: `cameleer-server-app/src/test/java/com/cameleer/server/app/storage/ClickHouseChunkPipelineIT.java`
Validates the full pipeline: ChunkAccumulator → WriteBuffers → ClickHouseExecutionStore → ClickHouseSearchIndex.
- [ ] **Step 1: Write the integration test**
```java
-// cameleer3-server-app/src/test/java/com/cameleer3/server/app/storage/ClickHouseChunkPipelineIT.java
-package com.cameleer3.server.app.storage;
+// cameleer-server-app/src/test/java/com/cameleer/server/app/storage/ClickHouseChunkPipelineIT.java
+package com.cameleer.server.app.storage;
-import com.cameleer3.server.app.search.ClickHouseSearchIndex;
-import com.cameleer3.server.core.ingestion.ChunkAccumulator;
-import com.cameleer3.server.core.ingestion.MergedExecution;
-import com.cameleer3.server.core.search.ExecutionSummary;
-import com.cameleer3.server.core.search.SearchRequest;
-import com.cameleer3.server.core.search.SearchResult;
-import com.cameleer3.server.core.storage.model.ExecutionChunk;
-import com.cameleer3.server.core.storage.model.FlatProcessorRecord;
+import com.cameleer.server.app.search.ClickHouseSearchIndex;
+import com.cameleer.server.core.ingestion.ChunkAccumulator;
+import com.cameleer.server.core.ingestion.MergedExecution;
+import com.cameleer.server.core.search.ExecutionSummary;
+import com.cameleer.server.core.search.SearchRequest;
+import com.cameleer.server.core.search.SearchResult;
+import com.cameleer.server.core.storage.model.ExecutionChunk;
+import com.cameleer.server.core.storage.model.FlatProcessorRecord;
import com.zaxxer.hikari.HikariDataSource;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -1797,7 +1797,7 @@ class ClickHouseChunkPipelineIT {
- [ ] **Step 2: Run the integration test**
```bash
-mvn test -pl cameleer3-server-app -Dtest=ClickHouseChunkPipelineIT -Dfailsafe.provider=surefire
+mvn test -pl cameleer-server-app -Dtest=ClickHouseChunkPipelineIT -Dfailsafe.provider=surefire
```
Expected: PASS.
@@ -1805,7 +1805,7 @@ Expected: PASS.
- [ ] **Step 3: Commit**
```bash
-git add cameleer3-server-app/src/test/java/com/cameleer3/server/app/storage/ClickHouseChunkPipelineIT.java
+git add cameleer-server-app/src/test/java/com/cameleer/server/app/storage/ClickHouseChunkPipelineIT.java
git commit -m "test(clickhouse): add end-to-end chunk pipeline integration test"
```
diff --git a/docs/superpowers/plans/2026-03-31-clickhouse-phase3-stats-analytics.md b/docs/superpowers/plans/2026-03-31-clickhouse-phase3-stats-analytics.md
index e256924d..2077f3e2 100644
--- a/docs/superpowers/plans/2026-03-31-clickhouse-phase3-stats-analytics.md
+++ b/docs/superpowers/plans/2026-03-31-clickhouse-phase3-stats-analytics.md
@@ -16,13 +16,13 @@
| File | Responsibility |
|------|----------------|
-| `cameleer3-server-app/.../resources/clickhouse/V4__stats_tables_and_mvs.sql` | DDL for all 5 stats tables + 5 materialized views |
-| `cameleer3-server-app/.../storage/ClickHouseStatsStore.java` | StatsStore impl using -Merge functions on AggregatingMergeTree tables |
-| `cameleer3-server-app/.../config/StorageBeanConfig.java` | Modified: add CH stats store bean with feature flag |
-| `cameleer3-server-app/.../storage/PostgresStatsStore.java` | Modified: add ConditionalOnProperty |
-| `cameleer3-server-app/.../resources/application.yml` | Modified: add `cameleer.storage.stats` flag |
+| `cameleer-server-app/.../resources/clickhouse/V4__stats_tables_and_mvs.sql` | DDL for all 5 stats tables + 5 materialized views |
+| `cameleer-server-app/.../storage/ClickHouseStatsStore.java` | StatsStore impl using -Merge functions on AggregatingMergeTree tables |
+| `cameleer-server-app/.../config/StorageBeanConfig.java` | Modified: add CH stats store bean with feature flag |
+| `cameleer-server-app/.../storage/PostgresStatsStore.java` | Modified: add ConditionalOnProperty |
+| `cameleer-server-app/.../resources/application.yml` | Modified: add `cameleer.storage.stats` flag |
| `deploy/base/server.yaml` | Modified: add `CAMELEER_STORAGE_STATS` env var |
-| `cameleer3-server-app/...test.../storage/ClickHouseStatsStoreIT.java` | Integration test for CH stats queries |
+| `cameleer-server-app/...test.../storage/ClickHouseStatsStoreIT.java` | Integration test for CH stats queries |
---
@@ -49,7 +49,7 @@
### Task 1: DDL for Stats Tables and Materialized Views
**Files:**
-- Create: `cameleer3-server-app/src/main/resources/clickhouse/V4__stats_tables_and_mvs.sql`
+- Create: `cameleer-server-app/src/main/resources/clickhouse/V4__stats_tables_and_mvs.sql`
All 5 table+MV pairs in a single DDL file. Tables use `AggregatingMergeTree()`. MVs use `-State` combinators and trigger on INSERT to `executions` or `processor_executions`.
@@ -229,20 +229,20 @@ Note: The `ClickHouseSchemaInitializer` runs each `.sql` file as a single statem
- [ ] **Step 2: Check ClickHouseSchemaInitializer handles multi-statement**
-Read `cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/ClickHouseSchemaInitializer.java`. If it runs each file as a single `jdbc.execute()`, modify it to split on `;` and run each statement separately. If it already handles this, proceed.
+Read `cameleer-server-app/src/main/java/com/cameleer/server/app/config/ClickHouseSchemaInitializer.java`. If it runs each file as a single `jdbc.execute()`, modify it to split on `;` and run each statement separately. If it already handles this, proceed.
- [ ] **Step 3: Verify DDL loads in Testcontainers**
Write a quick smoke test or manually verify that all 10 objects (5 tables + 5 MVs) are created:
```bash
-mvn clean compile -pl cameleer3-server-app -f pom.xml
+mvn clean compile -pl cameleer-server-app -f pom.xml
```
- [ ] **Step 4: Commit**
```bash
-git add cameleer3-server-app/src/main/resources/clickhouse/V4__stats_tables_and_mvs.sql
+git add cameleer-server-app/src/main/resources/clickhouse/V4__stats_tables_and_mvs.sql
# also add ClickHouseSchemaInitializer if modified
git commit -m "feat(clickhouse): add stats materialized views DDL (5 tables + 5 MVs)"
```
@@ -252,8 +252,8 @@ git commit -m "feat(clickhouse): add stats materialized views DDL (5 tables + 5
### Task 2: ClickHouseStatsStore — Aggregate Queries
**Files:**
-- Create: `cameleer3-server-app/src/test/java/com/cameleer3/server/app/storage/ClickHouseStatsStoreIT.java`
-- Create: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/ClickHouseStatsStore.java`
+- Create: `cameleer-server-app/src/test/java/com/cameleer/server/app/storage/ClickHouseStatsStoreIT.java`
+- Create: `cameleer-server-app/src/main/java/com/cameleer/server/app/storage/ClickHouseStatsStore.java`
The store implements `StatsStore` using ClickHouse `-Merge` functions. It follows the same pattern as `PostgresStatsStore` but with ClickHouse SQL syntax.
@@ -333,7 +333,7 @@ Create `ClickHouseStatsStoreIT.java` with:
- [ ] **Step 2: Run test to verify it fails**
```bash
-mvn test -pl cameleer3-server-app -Dtest=ClickHouseStatsStoreIT -Dfailsafe.provider=surefire -DfailIfNoTests=false -f pom.xml
+mvn test -pl cameleer-server-app -Dtest=ClickHouseStatsStoreIT -Dfailsafe.provider=surefire -DfailIfNoTests=false -f pom.xml
```
- [ ] **Step 3: Implement ClickHouseStatsStore**
@@ -343,14 +343,14 @@ Follow the `PostgresStatsStore` structure closely. Same private `Filter` record,
- [ ] **Step 4: Run test to verify it passes**
```bash
-mvn test -pl cameleer3-server-app -Dtest=ClickHouseStatsStoreIT -Dfailsafe.provider=surefire -f pom.xml
+mvn test -pl cameleer-server-app -Dtest=ClickHouseStatsStoreIT -Dfailsafe.provider=surefire -f pom.xml
```
- [ ] **Step 5: Commit**
```bash
-git add cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/ClickHouseStatsStore.java \
- cameleer3-server-app/src/test/java/com/cameleer3/server/app/storage/ClickHouseStatsStoreIT.java
+git add cameleer-server-app/src/main/java/com/cameleer/server/app/storage/ClickHouseStatsStore.java \
+ cameleer-server-app/src/test/java/com/cameleer/server/app/storage/ClickHouseStatsStoreIT.java
git commit -m "feat(clickhouse): add ClickHouseStatsStore with -Merge aggregate queries"
```
@@ -359,9 +359,9 @@ git commit -m "feat(clickhouse): add ClickHouseStatsStore with -Merge aggregate
### Task 3: Feature Flag Wiring
**Files:**
-- Modify: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/StorageBeanConfig.java`
-- Modify: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresStatsStore.java`
-- Modify: `cameleer3-server-app/src/main/resources/application.yml`
+- Modify: `cameleer-server-app/src/main/java/com/cameleer/server/app/config/StorageBeanConfig.java`
+- Modify: `cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresStatsStore.java`
+- Modify: `cameleer-server-app/src/main/resources/application.yml`
- Modify: `deploy/base/server.yaml`
- [ ] **Step 1: Add ConditionalOnProperty to PostgresStatsStore**
@@ -407,9 +407,9 @@ mvn clean verify -DskipITs -f pom.xml
- [ ] **Step 6: Commit**
```bash
-git add cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/StorageBeanConfig.java \
- cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresStatsStore.java \
- cameleer3-server-app/src/main/resources/application.yml \
+git add cameleer-server-app/src/main/java/com/cameleer/server/app/config/StorageBeanConfig.java \
+ cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresStatsStore.java \
+ cameleer-server-app/src/main/resources/application.yml \
deploy/base/server.yaml
git commit -m "feat(clickhouse): wire ClickHouseStatsStore with cameleer.storage.stats feature flag"
```
diff --git a/docs/superpowers/plans/2026-03-31-clickhouse-phase4-remaining-tables.md b/docs/superpowers/plans/2026-03-31-clickhouse-phase4-remaining-tables.md
index 5c55fdf9..b87f84b4 100644
--- a/docs/superpowers/plans/2026-03-31-clickhouse-phase4-remaining-tables.md
+++ b/docs/superpowers/plans/2026-03-31-clickhouse-phase4-remaining-tables.md
@@ -16,17 +16,17 @@
| File | Responsibility |
|------|----------------|
-| `cameleer3-server-app/.../resources/clickhouse/V5__route_diagrams.sql` | DDL for `route_diagrams` (ReplacingMergeTree) |
-| `cameleer3-server-app/.../resources/clickhouse/V6__agent_events.sql` | DDL for `agent_events` (MergeTree) |
-| `cameleer3-server-app/.../resources/clickhouse/V7__logs.sql` | DDL for `logs` (MergeTree with ngram indexes) |
-| `cameleer3-server-app/.../storage/ClickHouseDiagramStore.java` | DiagramStore impl for ClickHouse |
-| `cameleer3-server-app/.../storage/ClickHouseAgentEventRepository.java` | AgentEventRepository impl for ClickHouse |
-| `cameleer3-server-app/.../search/ClickHouseLogStore.java` | Replaces OpenSearchLogIndex |
-| `cameleer3-server-app/.../config/StorageBeanConfig.java` | Modified: add CH beans with feature flags |
-| `cameleer3-server-app/.../storage/PostgresDiagramStore.java` | Modified: add ConditionalOnProperty |
-| `cameleer3-server-app/.../storage/PostgresAgentEventRepository.java` | Modified: add ConditionalOnProperty |
-| `cameleer3-server-app/.../search/OpenSearchLogIndex.java` | Modified: add ConditionalOnProperty |
-| `cameleer3-server-app/.../resources/application.yml` | Modified: add feature flags |
+| `cameleer-server-app/.../resources/clickhouse/V5__route_diagrams.sql` | DDL for `route_diagrams` (ReplacingMergeTree) |
+| `cameleer-server-app/.../resources/clickhouse/V6__agent_events.sql` | DDL for `agent_events` (MergeTree) |
+| `cameleer-server-app/.../resources/clickhouse/V7__logs.sql` | DDL for `logs` (MergeTree with ngram indexes) |
+| `cameleer-server-app/.../storage/ClickHouseDiagramStore.java` | DiagramStore impl for ClickHouse |
+| `cameleer-server-app/.../storage/ClickHouseAgentEventRepository.java` | AgentEventRepository impl for ClickHouse |
+| `cameleer-server-app/.../search/ClickHouseLogStore.java` | Replaces OpenSearchLogIndex |
+| `cameleer-server-app/.../config/StorageBeanConfig.java` | Modified: add CH beans with feature flags |
+| `cameleer-server-app/.../storage/PostgresDiagramStore.java` | Modified: add ConditionalOnProperty |
+| `cameleer-server-app/.../storage/PostgresAgentEventRepository.java` | Modified: add ConditionalOnProperty |
+| `cameleer-server-app/.../search/OpenSearchLogIndex.java` | Modified: add ConditionalOnProperty |
+| `cameleer-server-app/.../resources/application.yml` | Modified: add feature flags |
| `deploy/base/server.yaml` | Modified: add env vars |
---
@@ -34,9 +34,9 @@
### Task 1: DDL Scripts
**Files:**
-- Create: `cameleer3-server-app/src/main/resources/clickhouse/V5__route_diagrams.sql`
-- Create: `cameleer3-server-app/src/main/resources/clickhouse/V6__agent_events.sql`
-- Create: `cameleer3-server-app/src/main/resources/clickhouse/V7__logs.sql`
+- Create: `cameleer-server-app/src/main/resources/clickhouse/V5__route_diagrams.sql`
+- Create: `cameleer-server-app/src/main/resources/clickhouse/V6__agent_events.sql`
+- Create: `cameleer-server-app/src/main/resources/clickhouse/V7__logs.sql`
- [ ] **Step 1: Create route_diagrams DDL**
@@ -102,7 +102,7 @@ SETTINGS index_granularity = 8192
- [ ] **Step 4: Compile and commit**
```bash
-mvn clean compile -pl cameleer3-server-app -f pom.xml
+mvn clean compile -pl cameleer-server-app -f pom.xml
git commit -m "feat(clickhouse): add DDL for route_diagrams, agent_events, and logs tables"
```
@@ -111,8 +111,8 @@ git commit -m "feat(clickhouse): add DDL for route_diagrams, agent_events, and l
### Task 2: ClickHouseDiagramStore
**Files:**
-- Create: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/ClickHouseDiagramStore.java`
-- Create: `cameleer3-server-app/src/test/java/com/cameleer3/server/app/storage/ClickHouseDiagramStoreIT.java`
+- Create: `cameleer-server-app/src/main/java/com/cameleer/server/app/storage/ClickHouseDiagramStore.java`
+- Create: `cameleer-server-app/src/test/java/com/cameleer/server/app/storage/ClickHouseDiagramStoreIT.java`
Implements `DiagramStore` interface (5 methods). Read `PostgresDiagramStore.java` first and translate.
@@ -136,8 +136,8 @@ Implements `DiagramStore` interface (5 methods). Read `PostgresDiagramStore.java
### Task 3: ClickHouseAgentEventRepository
**Files:**
-- Create: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/ClickHouseAgentEventRepository.java`
-- Create: `cameleer3-server-app/src/test/java/com/cameleer3/server/app/storage/ClickHouseAgentEventRepositoryIT.java`
+- Create: `cameleer-server-app/src/main/java/com/cameleer/server/app/storage/ClickHouseAgentEventRepository.java`
+- Create: `cameleer-server-app/src/test/java/com/cameleer/server/app/storage/ClickHouseAgentEventRepositoryIT.java`
Implements `AgentEventRepository` interface (2 methods: `insert` + `query`).
@@ -158,8 +158,8 @@ Implements `AgentEventRepository` interface (2 methods: `insert` + `query`).
### Task 4: ClickHouseLogStore
**Files:**
-- Create: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/search/ClickHouseLogStore.java`
-- Create: `cameleer3-server-app/src/test/java/com/cameleer3/server/app/search/ClickHouseLogStoreIT.java`
+- Create: `cameleer-server-app/src/main/java/com/cameleer/server/app/search/ClickHouseLogStore.java`
+- Create: `cameleer-server-app/src/test/java/com/cameleer/server/app/search/ClickHouseLogStoreIT.java`
Replaces `OpenSearchLogIndex`. Must have the same public API:
- `search(application, agentId, level, query, exchangeId, from, to, limit)` → returns `List`
diff --git a/docs/superpowers/plans/2026-04-02-composable-sidebar-migration.md b/docs/superpowers/plans/2026-04-02-composable-sidebar-migration.md
index 0cc9f1ec..a0f5f3f4 100644
--- a/docs/superpowers/plans/2026-04-02-composable-sidebar-migration.md
+++ b/docs/superpowers/plans/2026-04-02-composable-sidebar-migration.md
@@ -171,7 +171,7 @@ export function writeCollapsed(key: string, value: boolean): void {
- [ ] **Step 2: Verify it compiles**
-Run: `cd C:/Users/Hendrik/Documents/projects/cameleer3-server/ui && npx tsc --project tsconfig.app.json --noEmit`
+Run: `cd C:/Users/Hendrik/Documents/projects/cameleer-server/ui && npx tsc --project tsconfig.app.json --noEmit`
Expected: No errors.
- [ ] **Step 3: Commit**
@@ -479,7 +479,7 @@ Note: The Admin section renders in two positions — at the top when `isAdminPag
- [ ] **Step 5: Verify it compiles**
-Run: `cd C:/Users/Hendrik/Documents/projects/cameleer3-server/ui && npx tsc --project tsconfig.app.json --noEmit`
+Run: `cd C:/Users/Hendrik/Documents/projects/cameleer-server/ui && npx tsc --project tsconfig.app.json --noEmit`
Expected: No errors. If `StatusDot` is not exported from the DS, check the exact export name with `grep -r "StatusDot" ui/node_modules/@cameleer/design-system/dist/index.es.d.ts`.
- [ ] **Step 6: Commit**
@@ -516,7 +516,7 @@ export default function AdminLayout() {
- [ ] **Step 2: Verify it compiles**
-Run: `cd C:/Users/Hendrik/Documents/projects/cameleer3-server/ui && npx tsc --project tsconfig.app.json --noEmit`
+Run: `cd C:/Users/Hendrik/Documents/projects/cameleer-server/ui && npx tsc --project tsconfig.app.json --noEmit`
Expected: No errors.
- [ ] **Step 3: Commit**
diff --git a/docs/superpowers/plans/2026-04-05-logto-oidc-resource-server.md b/docs/superpowers/plans/2026-04-05-logto-oidc-resource-server.md
index dd6916d3..79b34430 100644
--- a/docs/superpowers/plans/2026-04-05-logto-oidc-resource-server.md
+++ b/docs/superpowers/plans/2026-04-05-logto-oidc-resource-server.md
@@ -14,13 +14,13 @@
| File | Action | Responsibility |
|------|--------|---------------|
-| `cameleer3-server-app/pom.xml` | Modify | Add oauth2-resource-server dependency |
-| `cameleer3-server-app/src/main/resources/application.yml` | Modify | Add OIDC issuer/audience properties |
-| `cameleer3-server-app/src/main/java/com/cameleer3/server/app/security/SecurityProperties.java` | Modify | Add oidcIssuerUri, oidcAudience fields |
-| `cameleer3-server-app/src/main/java/com/cameleer3/server/app/security/SecurityConfig.java` | Modify | Build OIDC decoder, pass to filter |
-| `cameleer3-server-app/src/main/java/com/cameleer3/server/app/security/JwtAuthenticationFilter.java` | Modify | Add OIDC fallback path |
-| `cameleer3-server-core/src/main/java/com/cameleer3/server/core/security/OidcConfig.java` | Modify | Update default rolesClaim |
-| `cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/OidcConfigAdminController.java` | Modify | Update default rolesClaim |
+| `cameleer-server-app/pom.xml` | Modify | Add oauth2-resource-server dependency |
+| `cameleer-server-app/src/main/resources/application.yml` | Modify | Add OIDC issuer/audience properties |
+| `cameleer-server-app/src/main/java/com/cameleer/server/app/security/SecurityProperties.java` | Modify | Add oidcIssuerUri, oidcAudience fields |
+| `cameleer-server-app/src/main/java/com/cameleer/server/app/security/SecurityConfig.java` | Modify | Build OIDC decoder, pass to filter |
+| `cameleer-server-app/src/main/java/com/cameleer/server/app/security/JwtAuthenticationFilter.java` | Modify | Add OIDC fallback path |
+| `cameleer-server-core/src/main/java/com/cameleer/server/core/security/OidcConfig.java` | Modify | Update default rolesClaim |
+| `cameleer-server-app/src/main/java/com/cameleer/server/app/controller/OidcConfigAdminController.java` | Modify | Update default rolesClaim |
| `deploy/authentik.yaml` | Delete | Remove Authentik deployment |
| `deploy/logto.yaml` | Create | Logto server + dedicated PostgreSQL |
| `.gitea/workflows/ci.yml` | Modify | Replace Authentik with Logto in CI |
@@ -33,11 +33,11 @@
### Task 1: Add OAuth2 Resource Server Dependency
**Files:**
-- Modify: `cameleer3-server-app/pom.xml:87-97`
+- Modify: `cameleer-server-app/pom.xml:87-97`
- [ ] **Step 1: Add the spring-boot-starter-oauth2-resource-server dependency**
-In `cameleer3-server-app/pom.xml`, add after the existing `spring-boot-starter-security` dependency (line 87) and before the `nimbus-jose-jwt` dependency (line 88):
+In `cameleer-server-app/pom.xml`, add after the existing `spring-boot-starter-security` dependency (line 87) and before the `nimbus-jose-jwt` dependency (line 88):
```xml
@@ -66,13 +66,13 @@ The full dependencies section around that area should read:
- [ ] **Step 2: Verify compilation**
-Run: `mvn clean compile -pl cameleer3-server-app -am -B`
+Run: `mvn clean compile -pl cameleer-server-app -am -B`
Expected: BUILD SUCCESS
- [ ] **Step 3: Commit**
```bash
-git add cameleer3-server-app/pom.xml
+git add cameleer-server-app/pom.xml
git commit -m "feat: add spring-boot-starter-oauth2-resource-server dependency"
```
@@ -81,8 +81,8 @@ git commit -m "feat: add spring-boot-starter-oauth2-resource-server dependency"
### Task 2: Add OIDC Properties
**Files:**
-- Modify: `cameleer3-server-app/src/main/resources/application.yml:42-48`
-- Modify: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/security/SecurityProperties.java`
+- Modify: `cameleer-server-app/src/main/resources/application.yml:42-48`
+- Modify: `cameleer-server-app/src/main/java/com/cameleer/server/app/security/SecurityProperties.java`
- [ ] **Step 1: Add OIDC properties to application.yml**
@@ -107,7 +107,7 @@ security:
Add `oidcIssuerUri` and `oidcAudience` fields with getters/setters. The complete file should be:
```java
-package com.cameleer3.server.app.security;
+package com.cameleer.server.app.security;
import org.springframework.boot.context.properties.ConfigurationProperties;
@@ -154,14 +154,14 @@ public class SecurityProperties {
- [ ] **Step 3: Verify compilation**
-Run: `mvn clean compile -pl cameleer3-server-app -am -B`
+Run: `mvn clean compile -pl cameleer-server-app -am -B`
Expected: BUILD SUCCESS
- [ ] **Step 4: Commit**
```bash
-git add cameleer3-server-app/src/main/resources/application.yml
-git add cameleer3-server-app/src/main/java/com/cameleer3/server/app/security/SecurityProperties.java
+git add cameleer-server-app/src/main/resources/application.yml
+git add cameleer-server-app/src/main/java/com/cameleer/server/app/security/SecurityProperties.java
git commit -m "feat: add OIDC issuer URI and audience security properties"
```
@@ -170,18 +170,18 @@ git commit -m "feat: add OIDC issuer URI and audience security properties"
### Task 3: Add OIDC Fallback to JwtAuthenticationFilter
**Files:**
-- Modify: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/security/JwtAuthenticationFilter.java`
+- Modify: `cameleer-server-app/src/main/java/com/cameleer/server/app/security/JwtAuthenticationFilter.java`
- [ ] **Step 1: Update JwtAuthenticationFilter with OIDC fallback**
The filter needs a new nullable `oidcDecoder` parameter, a `tryInternalToken` method (wrapping existing logic), a `tryOidcToken` fallback, and scope-based role extraction. The complete updated file:
```java
-package com.cameleer3.server.app.security;
+package com.cameleer.server.app.security;
-import com.cameleer3.server.core.agent.AgentRegistryService;
-import com.cameleer3.server.core.security.JwtService;
-import com.cameleer3.server.core.security.JwtService.JwtValidationResult;
+import com.cameleer.server.core.agent.AgentRegistryService;
+import com.cameleer.server.core.security.JwtService;
+import com.cameleer.server.core.security.JwtService.JwtValidationResult;
import jakarta.servlet.FilterChain;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServletRequest;
@@ -323,17 +323,17 @@ This change removes the 2-arg constructor, so `SecurityConfig.java` won't compil
### Task 4: Build OIDC Decoder in SecurityConfig
**Files:**
-- Modify: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/security/SecurityConfig.java`
+- Modify: `cameleer-server-app/src/main/java/com/cameleer/server/app/security/SecurityConfig.java`
- [ ] **Step 1: Update SecurityConfig to build OIDC decoder and pass to filter**
The `filterChain` method needs an additional `SecurityProperties` parameter, an inline OIDC decoder builder, and must pass the decoder to the `JwtAuthenticationFilter` constructor. The complete updated file:
```java
-package com.cameleer3.server.app.security;
+package com.cameleer.server.app.security;
-import com.cameleer3.server.core.agent.AgentRegistryService;
-import com.cameleer3.server.core.security.JwtService;
+import com.cameleer.server.core.agent.AgentRegistryService;
+import com.cameleer.server.core.security.JwtService;
import com.nimbusds.jose.JWSAlgorithm;
import com.nimbusds.jose.jwk.source.JWKSourceBuilder;
import com.nimbusds.jose.proc.JWSVerificationKeySelector;
@@ -550,19 +550,19 @@ public class SecurityConfig {
- [ ] **Step 2: Verify compilation**
-Run: `mvn clean compile -pl cameleer3-server-app -am -B`
+Run: `mvn clean compile -pl cameleer-server-app -am -B`
Expected: BUILD SUCCESS
- [ ] **Step 3: Run tests**
-Run: `mvn test -pl cameleer3-server-app -am -B`
+Run: `mvn test -pl cameleer-server-app -am -B`
Expected: Tests pass (OIDC decoder won't be built since `CAMELEER_OIDC_ISSUER_URI` is empty in test config)
- [ ] **Step 4: Commit**
```bash
-git add cameleer3-server-app/src/main/java/com/cameleer3/server/app/security/JwtAuthenticationFilter.java
-git add cameleer3-server-app/src/main/java/com/cameleer3/server/app/security/SecurityConfig.java
+git add cameleer-server-app/src/main/java/com/cameleer/server/app/security/JwtAuthenticationFilter.java
+git add cameleer-server-app/src/main/java/com/cameleer/server/app/security/SecurityConfig.java
git commit -m "feat: add OIDC resource server support with JWKS discovery and scope-based roles"
```
@@ -571,8 +571,8 @@ git commit -m "feat: add OIDC resource server support with JWKS discovery and sc
### Task 5: Update OidcConfig Default RolesClaim
**Files:**
-- Modify: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/security/OidcConfig.java:28`
-- Modify: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/OidcConfigAdminController.java:101`
+- Modify: `cameleer-server-core/src/main/java/com/cameleer/server/core/security/OidcConfig.java:28`
+- Modify: `cameleer-server-app/src/main/java/com/cameleer/server/app/controller/OidcConfigAdminController.java:101`
- [ ] **Step 1: Update OidcConfig.disabled() default**
@@ -600,8 +600,8 @@ Expected: BUILD SUCCESS
- [ ] **Step 4: Commit**
```bash
-git add cameleer3-server-core/src/main/java/com/cameleer3/server/core/security/OidcConfig.java
-git add cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/OidcConfigAdminController.java
+git add cameleer-server-core/src/main/java/com/cameleer/server/core/security/OidcConfig.java
+git add cameleer-server-app/src/main/java/com/cameleer/server/app/controller/OidcConfigAdminController.java
git commit -m "feat: update default rolesClaim to 'roles' for Logto compatibility"
```
diff --git a/docs/superpowers/plans/2026-04-08-docker-orchestration.md b/docs/superpowers/plans/2026-04-08-docker-orchestration.md
index f06edad0..4720d60d 100644
--- a/docs/superpowers/plans/2026-04-08-docker-orchestration.md
+++ b/docs/superpowers/plans/2026-04-08-docker-orchestration.md
@@ -12,12 +12,12 @@
## File Structure
-### New files (core module — `cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/`)
+### New files (core module — `cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/`)
- `ResolvedContainerConfig.java` — typed record with all resolved config fields
- `ConfigMerger.java` — pure function, three-layer merge logic
- `DeployStage.java` — enum for deployment progress stages
-### New files (app module — `cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/`)
+### New files (app module — `cameleer-server-app/src/main/java/com/cameleer/server/app/runtime/`)
- `TraefikLabelBuilder.java` — generates Traefik Docker labels
- `DockerNetworkManager.java` — lazy network creation + container attachment
- `DockerEventMonitor.java` — persistent Docker event stream listener
@@ -51,7 +51,7 @@
### Task 1: Database Migration
**Files:**
-- Create: `cameleer3-server-app/src/main/resources/db/migration/V7__deployment_orchestration.sql`
+- Create: `cameleer-server-app/src/main/resources/db/migration/V7__deployment_orchestration.sql`
- [ ] **Step 1: Create the migration file**
@@ -79,7 +79,7 @@ Expected: BUILD SUCCESS
- [ ] **Step 3: Commit**
```bash
-git add cameleer3-server-app/src/main/resources/db/migration/V7__deployment_orchestration.sql
+git add cameleer-server-app/src/main/resources/db/migration/V7__deployment_orchestration.sql
git commit -m "feat: V7 migration — deployment orchestration columns"
```
@@ -88,15 +88,15 @@ git commit -m "feat: V7 migration — deployment orchestration columns"
### Task 2: DeploymentStatus Enum + DeployStage Enum
**Files:**
-- Modify: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/DeploymentStatus.java`
-- Create: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/DeployStage.java`
+- Modify: `cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/DeploymentStatus.java`
+- Create: `cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/DeployStage.java`
- [ ] **Step 1: Update DeploymentStatus enum**
Replace the content of `DeploymentStatus.java`:
```java
-package com.cameleer3.server.core.runtime;
+package com.cameleer.server.core.runtime;
public enum DeploymentStatus {
STOPPED, STARTING, RUNNING, DEGRADED, STOPPING, FAILED
@@ -106,7 +106,7 @@ public enum DeploymentStatus {
- [ ] **Step 2: Create DeployStage enum**
```java
-package com.cameleer3.server.core.runtime;
+package com.cameleer.server.core.runtime;
public enum DeployStage {
PRE_FLIGHT, PULL_IMAGE, CREATE_NETWORK, START_REPLICAS, HEALTH_CHECK, SWAP_TRAFFIC, COMPLETE
@@ -121,8 +121,8 @@ Expected: BUILD SUCCESS
- [ ] **Step 4: Commit**
```bash
-git add cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/DeploymentStatus.java \
- cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/DeployStage.java
+git add cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/DeploymentStatus.java \
+ cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/DeployStage.java
git commit -m "feat: add DEGRADED, STOPPING statuses and DeployStage enum"
```
@@ -131,14 +131,14 @@ git commit -m "feat: add DEGRADED, STOPPING statuses and DeployStage enum"
### Task 3: Update Deployment Record
**Files:**
-- Modify: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/Deployment.java`
+- Modify: `cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/Deployment.java`
- [ ] **Step 1: Update the Deployment record**
Replace the content of `Deployment.java`:
```java
-package com.cameleer3.server.core.runtime;
+package com.cameleer.server.core.runtime;
import java.time.Instant;
import java.util.List;
@@ -178,7 +178,7 @@ Expected: Compilation errors in `PostgresDeploymentRepository.java` (wrong const
- [ ] **Step 3: Commit**
```bash
-git add cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/Deployment.java
+git add cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/Deployment.java
git commit -m "feat: add targetState, deploymentStrategy, replicaStates, deployStage to Deployment"
```
@@ -187,18 +187,18 @@ git commit -m "feat: add targetState, deploymentStrategy, replicaStates, deployS
### Task 4: Update PostgresDeploymentRepository
**Files:**
-- Modify: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresDeploymentRepository.java`
+- Modify: `cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresDeploymentRepository.java`
- [ ] **Step 1: Update the repository to handle new columns**
Replace the full content of `PostgresDeploymentRepository.java`:
```java
-package com.cameleer3.server.app.storage;
+package com.cameleer.server.app.storage;
-import com.cameleer3.server.core.runtime.Deployment;
-import com.cameleer3.server.core.runtime.DeploymentRepository;
-import com.cameleer3.server.core.runtime.DeploymentStatus;
+import com.cameleer.server.core.runtime.Deployment;
+import com.cameleer.server.core.runtime.DeploymentRepository;
+import com.cameleer.server.core.runtime.DeploymentStatus;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.jdbc.core.JdbcTemplate;
@@ -340,7 +340,7 @@ public class PostgresDeploymentRepository implements DeploymentRepository {
- [ ] **Step 2: Update RuntimeBeanConfig to pass ObjectMapper to the repository**
-In `cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/RuntimeBeanConfig.java`, change the `deploymentRepository()` bean:
+In `cameleer-server-app/src/main/java/com/cameleer/server/app/config/RuntimeBeanConfig.java`, change the `deploymentRepository()` bean:
```java
@Bean
@@ -357,8 +357,8 @@ Expected: BUILD SUCCESS
- [ ] **Step 4: Commit**
```bash
-git add cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresDeploymentRepository.java \
- cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/RuntimeBeanConfig.java
+git add cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresDeploymentRepository.java \
+ cameleer-server-app/src/main/java/com/cameleer/server/app/config/RuntimeBeanConfig.java
git commit -m "feat: update PostgresDeploymentRepository for orchestration columns"
```
@@ -367,13 +367,13 @@ git commit -m "feat: update PostgresDeploymentRepository for orchestration colum
### Task 5: ResolvedContainerConfig + ConfigMerger
**Files:**
-- Create: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/ResolvedContainerConfig.java`
-- Create: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/ConfigMerger.java`
+- Create: `cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/ResolvedContainerConfig.java`
+- Create: `cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/ConfigMerger.java`
- [ ] **Step 1: Create ResolvedContainerConfig record**
```java
-package com.cameleer3.server.core.runtime;
+package com.cameleer.server.core.runtime;
import java.util.List;
import java.util.Map;
@@ -407,7 +407,7 @@ public record ResolvedContainerConfig(
- [ ] **Step 2: Create ConfigMerger**
```java
-package com.cameleer3.server.core.runtime;
+package com.cameleer.server.core.runtime;
import java.util.Collections;
import java.util.HashMap;
@@ -517,8 +517,8 @@ Expected: BUILD SUCCESS
- [ ] **Step 4: Commit**
```bash
-git add cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/ResolvedContainerConfig.java \
- cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/ConfigMerger.java
+git add cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/ResolvedContainerConfig.java \
+ cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/ConfigMerger.java
git commit -m "feat: ResolvedContainerConfig record and three-layer ConfigMerger"
```
@@ -527,14 +527,14 @@ git commit -m "feat: ResolvedContainerConfig record and three-layer ConfigMerger
### Task 6: Update ContainerRequest
**Files:**
-- Modify: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/ContainerRequest.java`
+- Modify: `cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/ContainerRequest.java`
- [ ] **Step 1: Expand ContainerRequest with new fields**
Replace `ContainerRequest.java`:
```java
-package com.cameleer3.server.core.runtime;
+package com.cameleer.server.core.runtime;
import java.util.List;
import java.util.Map;
@@ -682,9 +682,9 @@ Expected: BUILD SUCCESS
- [ ] **Step 5: Commit**
```bash
-git add cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/ContainerRequest.java \
- cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/DockerRuntimeOrchestrator.java \
- cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/DeploymentExecutor.java
+git add cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/ContainerRequest.java \
+ cameleer-server-app/src/main/java/com/cameleer/server/app/runtime/DockerRuntimeOrchestrator.java \
+ cameleer-server-app/src/main/java/com/cameleer/server/app/runtime/DeploymentExecutor.java
git commit -m "feat: expand ContainerRequest with cpuLimit, ports, restart policy, additional networks"
```
@@ -693,14 +693,14 @@ git commit -m "feat: expand ContainerRequest with cpuLimit, ports, restart polic
### Task 7: TraefikLabelBuilder
**Files:**
-- Create: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/TraefikLabelBuilder.java`
+- Create: `cameleer-server-app/src/main/java/com/cameleer/server/app/runtime/TraefikLabelBuilder.java`
- [ ] **Step 1: Create TraefikLabelBuilder**
```java
-package com.cameleer3.server.app.runtime;
+package com.cameleer.server.app.runtime;
-import com.cameleer3.server.core.runtime.ResolvedContainerConfig;
+import com.cameleer.server.core.runtime.ResolvedContainerConfig;
import java.util.LinkedHashMap;
import java.util.Map;
@@ -719,7 +719,7 @@ public final class TraefikLabelBuilder {
// Core labels
labels.put("traefik.enable", "true");
- labels.put("managed-by", "cameleer3-server");
+ labels.put("managed-by", "cameleer-server");
labels.put("cameleer.app", appSlug);
labels.put("cameleer.environment", envSlug);
@@ -767,7 +767,7 @@ Expected: BUILD SUCCESS
- [ ] **Step 3: Commit**
```bash
-git add cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/TraefikLabelBuilder.java
+git add cameleer-server-app/src/main/java/com/cameleer/server/app/runtime/TraefikLabelBuilder.java
git commit -m "feat: TraefikLabelBuilder with path-based and subdomain routing"
```
@@ -776,12 +776,12 @@ git commit -m "feat: TraefikLabelBuilder with path-based and subdomain routing"
### Task 8: DockerNetworkManager
**Files:**
-- Create: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/DockerNetworkManager.java`
+- Create: `cameleer-server-app/src/main/java/com/cameleer/server/app/runtime/DockerNetworkManager.java`
- [ ] **Step 1: Create DockerNetworkManager**
```java
-package com.cameleer3.server.app.runtime;
+package com.cameleer.server.app.runtime;
import com.github.dockerjava.api.DockerClient;
import com.github.dockerjava.api.model.Network;
@@ -912,9 +912,9 @@ Expected: BUILD SUCCESS
- [ ] **Step 5: Commit**
```bash
-git add cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/DockerNetworkManager.java \
- cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/DockerRuntimeOrchestrator.java \
- cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/RuntimeOrchestratorAutoConfig.java
+git add cameleer-server-app/src/main/java/com/cameleer/server/app/runtime/DockerNetworkManager.java \
+ cameleer-server-app/src/main/java/com/cameleer/server/app/runtime/DockerRuntimeOrchestrator.java \
+ cameleer-server-app/src/main/java/com/cameleer/server/app/runtime/RuntimeOrchestratorAutoConfig.java
git commit -m "feat: DockerNetworkManager with lazy network creation and container attachment"
```
@@ -923,15 +923,15 @@ git commit -m "feat: DockerNetworkManager with lazy network creation and contain
### Task 9: DockerEventMonitor
**Files:**
-- Create: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/DockerEventMonitor.java`
+- Create: `cameleer-server-app/src/main/java/com/cameleer/server/app/runtime/DockerEventMonitor.java`
- [ ] **Step 1: Create DockerEventMonitor**
```java
-package com.cameleer3.server.app.runtime;
+package com.cameleer.server.app.runtime;
-import com.cameleer3.server.core.runtime.Deployment;
-import com.cameleer3.server.core.runtime.DeploymentStatus;
+import com.cameleer.server.core.runtime.Deployment;
+import com.cameleer.server.core.runtime.DeploymentStatus;
import com.github.dockerjava.api.DockerClient;
import com.github.dockerjava.api.async.ResultCallback;
import com.github.dockerjava.api.model.Event;
@@ -1003,7 +1003,7 @@ public class DockerEventMonitor {
// Only process containers managed by us
Map labels = event.getActor() != null ? event.getActor().getAttributes() : null;
- if (labels == null || !"cameleer3-server".equals(labels.get("managed-by"))) return;
+ if (labels == null || !"cameleer-server".equals(labels.get("managed-by"))) return;
String action = event.getAction();
log.debug("Docker event: {} for container {} ({})", action, containerId.substring(0, 12),
@@ -1079,7 +1079,7 @@ Expected: BUILD SUCCESS (may need `PostgresDeploymentRepository` to be injected
- [ ] **Step 3: Commit**
```bash
-git add cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/DockerEventMonitor.java
+git add cameleer-server-app/src/main/java/com/cameleer/server/app/runtime/DockerEventMonitor.java
git commit -m "feat: DockerEventMonitor — persistent event stream for container lifecycle"
```
@@ -1088,7 +1088,7 @@ git commit -m "feat: DockerEventMonitor — persistent event stream for containe
### Task 10: Rewrite DeploymentExecutor
**Files:**
-- Modify: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/DeploymentExecutor.java`
+- Modify: `cameleer-server-app/src/main/java/com/cameleer/server/app/runtime/DeploymentExecutor.java`
This is the largest task — the orchestration hub that ties everything together.
@@ -1097,10 +1097,10 @@ This is the largest task — the orchestration hub that ties everything together
Replace the full content of `DeploymentExecutor.java`:
```java
-package com.cameleer3.server.app.runtime;
+package com.cameleer.server.app.runtime;
-import com.cameleer3.server.app.storage.PostgresDeploymentRepository;
-import com.cameleer3.server.core.runtime.*;
+import com.cameleer.server.app.storage.PostgresDeploymentRepository;
+import com.cameleer.server.core.runtime.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
@@ -1183,7 +1183,7 @@ public class DeploymentExecutor {
globalCpuShares,
globalRoutingMode,
globalRoutingDomain,
- globalServerUrl.isBlank() ? "http://cameleer3-server:8081" : globalServerUrl
+ globalServerUrl.isBlank() ? "http://cameleer-server:8081" : globalServerUrl
);
ResolvedContainerConfig config = ConfigMerger.resolve(
globalDefaults, env.defaultContainerConfig(), app.containerConfig());
@@ -1421,7 +1421,7 @@ Expected: BUILD SUCCESS
- [ ] **Step 3: Commit**
```bash
-git add cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/DeploymentExecutor.java
+git add cameleer-server-app/src/main/java/com/cameleer/server/app/runtime/DeploymentExecutor.java
git commit -m "feat: rewrite DeploymentExecutor with staged deploy, config merge, replicas"
```
@@ -1430,7 +1430,7 @@ git commit -m "feat: rewrite DeploymentExecutor with staged deploy, config merge
### Task 11: Update DeploymentController
**Files:**
-- Modify: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/DeploymentController.java`
+- Modify: `cameleer-server-app/src/main/java/com/cameleer/server/app/controller/DeploymentController.java`
- [ ] **Step 1: Update the stop endpoint to use stopDeployment**
@@ -1460,7 +1460,7 @@ Expected: BUILD SUCCESS
- [ ] **Step 3: Commit**
```bash
-git add cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/DeploymentController.java
+git add cameleer-server-app/src/main/java/com/cameleer/server/app/controller/DeploymentController.java
git commit -m "feat: update stop endpoint to use DeploymentExecutor for replica cleanup"
```
@@ -1469,7 +1469,7 @@ git commit -m "feat: update stop endpoint to use DeploymentExecutor for replica
### Task 12: Update application.yml
**Files:**
-- Modify: `cameleer3-server-app/src/main/resources/application.yml`
+- Modify: `cameleer-server-app/src/main/resources/application.yml`
- [ ] **Step 1: Add the server-url property**
@@ -1489,7 +1489,7 @@ Expected: BUILD SUCCESS
- [ ] **Step 3: Commit**
```bash
-git add cameleer3-server-app/src/main/resources/application.yml
+git add cameleer-server-app/src/main/resources/application.yml
git commit -m "feat: add CAMELEER_SERVER_URL config property"
```
diff --git a/docs/superpowers/plans/2026-04-09-ux-polish-plan.md b/docs/superpowers/plans/2026-04-09-ux-polish-plan.md
index 8dbefa39..0278de43 100644
--- a/docs/superpowers/plans/2026-04-09-ux-polish-plan.md
+++ b/docs/superpowers/plans/2026-04-09-ux-polish-plan.md
@@ -70,7 +70,7 @@ git commit -m "fix: add /deployments redirect and fix GC Pauses chart X-axis"
**Spec items:** 1.2
**Files:**
-- Modify: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/UserAdminController.java`
+- Modify: `cameleer-server-app/src/main/java/com/cameleer/server/app/controller/UserAdminController.java`
- Modify: `ui/src/pages/Admin/UsersTab.tsx`
- [ ] **Step 1: Run impact analysis on UserAdminController.createUser**
@@ -138,7 +138,7 @@ onError: (err: any) => {
- [ ] **Step 5: Commit**
```bash
-git add cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/UserAdminController.java ui/src/pages/Admin/UsersTab.tsx
+git add cameleer-server-app/src/main/java/com/cameleer/server/app/controller/UserAdminController.java ui/src/pages/Admin/UsersTab.tsx
git commit -m "fix: show descriptive error when creating local user with OIDC enabled"
```
@@ -1052,7 +1052,7 @@ function shortAgentName(name: string): string {
// If name contains multiple dashes (K8s pod name pattern), take the last segment
const parts = name.split('-');
if (parts.length >= 3) {
- // Show last 2 segments: "8c0affadb860-1" from "cameleer3-sample-8c0affadb860-1"
+ // Show last 2 segments: "8c0affadb860-1" from "cameleer-sample-8c0affadb860-1"
return parts.slice(-2).join('-');
}
return name;
@@ -1458,7 +1458,7 @@ git commit -m "fix: standardize number formatting with consistent unit spacing a
**Spec items:** 6.4, 6.5
-**Note:** These items are in the `cameleer-saas` repository, not `cameleer3-server`. If the SaaS platform UI code is in a separate repo, this task needs to be executed there. If it's co-located, proceed with these files.
+**Note:** These items are in the `cameleer-saas` repository, not `cameleer-server`. If the SaaS platform UI code is in a separate repo, this task needs to be executed there. If it's co-located, proceed with these files.
- [ ] **Step 1: Identify platform component files**
@@ -1520,7 +1520,7 @@ git commit -m "fix: platform label/value spacing and neutral license badge color
**Files:**
- Modify: `ui/src/pages/Admin/AuditLogPage.tsx`
-- Modify: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/AuditLogController.java`
+- Modify: `cameleer-server-app/src/main/java/com/cameleer/server/app/controller/AuditLogController.java`
- [ ] **Step 1: Add client-side CSV export for current page**
diff --git a/docs/superpowers/plans/2026-04-11-infrastructure-endpoint-visibility.md b/docs/superpowers/plans/2026-04-11-infrastructure-endpoint-visibility.md
index 75901197..83d5162a 100644
--- a/docs/superpowers/plans/2026-04-11-infrastructure-endpoint-visibility.md
+++ b/docs/superpowers/plans/2026-04-11-infrastructure-endpoint-visibility.md
@@ -10,7 +10,7 @@
**Spec:** `docs/superpowers/specs/2026-04-11-infrastructure-endpoint-visibility-design.md`
-**Cross-repo:** Tasks 1-6 in `cameleer3-server`, Tasks 7-13 in `cameleer-saas`.
+**Cross-repo:** Tasks 1-6 in `cameleer-server`, Tasks 7-13 in `cameleer-saas`.
---
@@ -19,8 +19,8 @@
### Task 1: Add property to application.yml
**Files:**
-- Modify: `cameleer3-server-app/src/main/resources/application.yml`
-- Modify: `cameleer3-server-app/src/test/resources/application-test.yml`
+- Modify: `cameleer-server-app/src/main/resources/application.yml`
+- Modify: `cameleer-server-app/src/test/resources/application-test.yml`
- [ ] **Step 1: Add the property to application.yml**
@@ -41,7 +41,7 @@ In `application-test.yml`, add under `cameleer.server.security` (after `bootstra
- [ ] **Step 3: Commit**
```bash
-git add cameleer3-server-app/src/main/resources/application.yml cameleer3-server-app/src/test/resources/application-test.yml
+git add cameleer-server-app/src/main/resources/application.yml cameleer-server-app/src/test/resources/application-test.yml
git commit -m "feat: add infrastructureendpoints property (default true)"
```
@@ -50,7 +50,7 @@ git commit -m "feat: add infrastructureendpoints property (default true)"
### Task 2: Add @ConditionalOnProperty to DatabaseAdminController
**Files:**
-- Modify: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/DatabaseAdminController.java`
+- Modify: `cameleer-server-app/src/main/java/com/cameleer/server/app/controller/DatabaseAdminController.java`
- [ ] **Step 1: Add the annotation**
@@ -73,7 +73,7 @@ Add before `@RestController`:
- [ ] **Step 2: Verify compile**
```bash
-mvn compile -pl cameleer3-server-app -q
+mvn compile -pl cameleer-server-app -q
```
Expected: BUILD SUCCESS
@@ -81,7 +81,7 @@ Expected: BUILD SUCCESS
- [ ] **Step 3: Commit**
```bash
-git add cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/DatabaseAdminController.java
+git add cameleer-server-app/src/main/java/com/cameleer/server/app/controller/DatabaseAdminController.java
git commit -m "feat: make DatabaseAdminController conditional on infrastructureendpoints"
```
@@ -90,7 +90,7 @@ git commit -m "feat: make DatabaseAdminController conditional on infrastructuree
### Task 3: Add @ConditionalOnProperty to ClickHouseAdminController
**Files:**
-- Modify: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/ClickHouseAdminController.java`
+- Modify: `cameleer-server-app/src/main/java/com/cameleer/server/app/controller/ClickHouseAdminController.java`
- [ ] **Step 1: Add the annotation**
@@ -113,7 +113,7 @@ Add before `@RestController`:
- [ ] **Step 2: Verify compile**
```bash
-mvn compile -pl cameleer3-server-app -q
+mvn compile -pl cameleer-server-app -q
```
Expected: BUILD SUCCESS
@@ -121,7 +121,7 @@ Expected: BUILD SUCCESS
- [ ] **Step 3: Commit**
```bash
-git add cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/ClickHouseAdminController.java
+git add cameleer-server-app/src/main/java/com/cameleer/server/app/controller/ClickHouseAdminController.java
git commit -m "feat: make ClickHouseAdminController conditional on infrastructureendpoints"
```
@@ -132,12 +132,12 @@ git commit -m "feat: make ClickHouseAdminController conditional on infrastructur
The server uses Spring Boot Actuator for `/api/v1/health`. Add a custom `HealthIndicator` that contributes the `infrastructureEndpoints` flag to the health response details.
**Files:**
-- Create: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/ServerCapabilitiesHealthIndicator.java`
+- Create: `cameleer-server-app/src/main/java/com/cameleer/server/app/config/ServerCapabilitiesHealthIndicator.java`
- [ ] **Step 1: Create the health indicator**
```java
-package com.cameleer3.server.app.config;
+package com.cameleer.server.app.config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.actuate.health.Health;
@@ -162,7 +162,7 @@ public class ServerCapabilitiesHealthIndicator implements HealthIndicator {
- [ ] **Step 2: Verify compile**
```bash
-mvn compile -pl cameleer3-server-app -q
+mvn compile -pl cameleer-server-app -q
```
Expected: BUILD SUCCESS
@@ -180,7 +180,7 @@ Expected: `true`
- [ ] **Step 4: Commit**
```bash
-git add cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/ServerCapabilitiesHealthIndicator.java
+git add cameleer-server-app/src/main/java/com/cameleer/server/app/config/ServerCapabilitiesHealthIndicator.java
git commit -m "feat: expose infrastructureEndpoints flag in health endpoint"
```
@@ -1117,8 +1117,8 @@ git commit -m "feat: add Infrastructure to vendor sidebar and router"
### Task 14: Update documentation
**Files:**
-- Modify: `cameleer3-server/CLAUDE.md` — mention `CAMELEER_SERVER_SECURITY_INFRASTRUCTUREENDPOINTS` in the Security section and Docker Orchestration section
-- Modify: `cameleer3-server/HOWTO.md` — add to Configuration table under Security
+- Modify: `cameleer-server/CLAUDE.md` — mention `CAMELEER_SERVER_SECURITY_INFRASTRUCTUREENDPOINTS` in the Security section and Docker Orchestration section
+- Modify: `cameleer-server/HOWTO.md` — add to Configuration table under Security
- Modify: `cameleer-saas/CLAUDE.md` — mention Infrastructure page in vendor section, add to "Per-tenant server env vars" table
- [ ] **Step 1: Update server CLAUDE.md**
@@ -1152,7 +1152,7 @@ In the Layout.tsx description, add "Infrastructure" to the vendor sidebar list.
```bash
# Server
-cd cameleer3-server
+cd cameleer-server
git add CLAUDE.md HOWTO.md
git commit -m "docs: document infrastructureendpoints flag"
diff --git a/docs/superpowers/plans/2026-04-12-runtime-type-detection.md b/docs/superpowers/plans/2026-04-12-runtime-type-detection.md
index 28d66924..d6b7b09a 100644
--- a/docs/superpowers/plans/2026-04-12-runtime-type-detection.md
+++ b/docs/superpowers/plans/2026-04-12-runtime-type-detection.md
@@ -14,21 +14,21 @@
| Action | File | Responsibility |
|--------|------|----------------|
-| Create | `cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/RuntimeType.java` | Enum: AUTO, SPRING_BOOT, QUARKUS, PLAIN_JAVA, NATIVE |
-| Create | `cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/RuntimeDetector.java` | Probes JAR files and returns detected RuntimeType + mainClass |
-| Create | `cameleer3-server-core/src/test/java/com/cameleer3/server/core/runtime/RuntimeDetectorTest.java` | Unit tests for detection logic |
-| Create | `cameleer3-server-app/src/main/resources/db/migration/V10__app_version_runtime_detection.sql` | Adds detected_runtime_type and detected_main_class to app_versions |
-| Modify | `cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/AppVersion.java` | Add detectedRuntimeType, detectedMainClass fields |
-| Modify | `cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/AppVersionRepository.java` | Add updateDetectedRuntime method |
-| Modify | `cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresAppVersionRepository.java` | Persist and read new columns |
-| Modify | `cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/AppService.java` | Run detection after upload |
-| Modify | `cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/ResolvedContainerConfig.java` | Add runtimeType, customArgs fields |
-| Modify | `cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/ConfigMerger.java` | Resolve runtimeType, customArgs |
-| Modify | `cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/ContainerRequest.java` | Add runtimeType, customArgs, mainClass fields |
-| Modify | `cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/DockerRuntimeOrchestrator.java` | Build entrypoint per runtime type |
-| Modify | `cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/DeploymentExecutor.java` | Resolve AUTO, pass runtime fields to ContainerRequest |
-| Modify | `cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/AppController.java` | Validate customArgs on config save |
-| Modify | `cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/EnvironmentAdminController.java` | Validate customArgs on config save |
+| Create | `cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/RuntimeType.java` | Enum: AUTO, SPRING_BOOT, QUARKUS, PLAIN_JAVA, NATIVE |
+| Create | `cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/RuntimeDetector.java` | Probes JAR files and returns detected RuntimeType + mainClass |
+| Create | `cameleer-server-core/src/test/java/com/cameleer/server/core/runtime/RuntimeDetectorTest.java` | Unit tests for detection logic |
+| Create | `cameleer-server-app/src/main/resources/db/migration/V10__app_version_runtime_detection.sql` | Adds detected_runtime_type and detected_main_class to app_versions |
+| Modify | `cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/AppVersion.java` | Add detectedRuntimeType, detectedMainClass fields |
+| Modify | `cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/AppVersionRepository.java` | Add updateDetectedRuntime method |
+| Modify | `cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresAppVersionRepository.java` | Persist and read new columns |
+| Modify | `cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/AppService.java` | Run detection after upload |
+| Modify | `cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/ResolvedContainerConfig.java` | Add runtimeType, customArgs fields |
+| Modify | `cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/ConfigMerger.java` | Resolve runtimeType, customArgs |
+| Modify | `cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/ContainerRequest.java` | Add runtimeType, customArgs, mainClass fields |
+| Modify | `cameleer-server-app/src/main/java/com/cameleer/server/app/runtime/DockerRuntimeOrchestrator.java` | Build entrypoint per runtime type |
+| Modify | `cameleer-server-app/src/main/java/com/cameleer/server/app/runtime/DeploymentExecutor.java` | Resolve AUTO, pass runtime fields to ContainerRequest |
+| Modify | `cameleer-server-app/src/main/java/com/cameleer/server/app/controller/AppController.java` | Validate customArgs on config save |
+| Modify | `cameleer-server-app/src/main/java/com/cameleer/server/app/controller/EnvironmentAdminController.java` | Validate customArgs on config save |
| Modify | `ui/src/api/queries/admin/apps.ts` | Add new fields to AppVersion type |
| Modify | `ui/src/pages/AppsTab/AppsTab.tsx` | Runtime Type select, Custom Arguments input, detection hint |
@@ -37,15 +37,15 @@
### Task 1: RuntimeType Enum and RuntimeDetector
**Files:**
-- Create: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/RuntimeType.java`
-- Create: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/RuntimeDetector.java`
-- Create: `cameleer3-server-core/src/test/java/com/cameleer3/server/core/runtime/RuntimeDetectorTest.java`
+- Create: `cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/RuntimeType.java`
+- Create: `cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/RuntimeDetector.java`
+- Create: `cameleer-server-core/src/test/java/com/cameleer/server/core/runtime/RuntimeDetectorTest.java`
- [ ] **Step 1: Create the RuntimeType enum**
```java
-// cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/RuntimeType.java
-package com.cameleer3.server.core.runtime;
+// cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/RuntimeType.java
+package com.cameleer.server.core.runtime;
public enum RuntimeType {
AUTO,
@@ -77,8 +77,8 @@ public enum RuntimeType {
- [ ] **Step 2: Write RuntimeDetector tests**
```java
-// cameleer3-server-core/src/test/java/com/cameleer3/server/core/runtime/RuntimeDetectorTest.java
-package com.cameleer3.server.core.runtime;
+// cameleer-server-core/src/test/java/com/cameleer/server/core/runtime/RuntimeDetectorTest.java
+package com.cameleer.server.core.runtime;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.io.TempDir;
@@ -190,14 +190,14 @@ class RuntimeDetectorTest {
- [ ] **Step 3: Run tests to verify they fail**
-Run: `mvn test -pl cameleer3-server-core -Dtest=RuntimeDetectorTest -Dsurefire.failIfNoSpecifiedTests=false`
+Run: `mvn test -pl cameleer-server-core -Dtest=RuntimeDetectorTest -Dsurefire.failIfNoSpecifiedTests=false`
Expected: FAIL — `RuntimeDetector` class not found
- [ ] **Step 4: Implement RuntimeDetector**
```java
-// cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/RuntimeDetector.java
-package com.cameleer3.server.core.runtime;
+// cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/RuntimeDetector.java
+package com.cameleer.server.core.runtime;
import java.io.IOException;
import java.io.InputStream;
@@ -278,15 +278,15 @@ public final class RuntimeDetector {
- [ ] **Step 5: Run tests to verify they pass**
-Run: `mvn test -pl cameleer3-server-core -Dtest=RuntimeDetectorTest`
+Run: `mvn test -pl cameleer-server-core -Dtest=RuntimeDetectorTest`
Expected: All 8 tests PASS
- [ ] **Step 6: Commit**
```bash
-git add cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/RuntimeType.java \
- cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/RuntimeDetector.java \
- cameleer3-server-core/src/test/java/com/cameleer3/server/core/runtime/RuntimeDetectorTest.java
+git add cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/RuntimeType.java \
+ cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/RuntimeDetector.java \
+ cameleer-server-core/src/test/java/com/cameleer/server/core/runtime/RuntimeDetectorTest.java
git commit -m "feat: add RuntimeType enum and RuntimeDetector for JAR probing"
```
@@ -295,25 +295,25 @@ git commit -m "feat: add RuntimeType enum and RuntimeDetector for JAR probing"
### Task 2: AppVersion + Migration + Repository
**Files:**
-- Create: `cameleer3-server-app/src/main/resources/db/migration/V10__app_version_runtime_detection.sql`
-- Modify: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/AppVersion.java`
-- Modify: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/AppVersionRepository.java`
-- Modify: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresAppVersionRepository.java`
+- Create: `cameleer-server-app/src/main/resources/db/migration/V10__app_version_runtime_detection.sql`
+- Modify: `cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/AppVersion.java`
+- Modify: `cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/AppVersionRepository.java`
+- Modify: `cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresAppVersionRepository.java`
- [ ] **Step 1: Create Flyway migration**
```sql
--- cameleer3-server-app/src/main/resources/db/migration/V10__app_version_runtime_detection.sql
+-- cameleer-server-app/src/main/resources/db/migration/V10__app_version_runtime_detection.sql
ALTER TABLE app_versions ADD COLUMN detected_runtime_type VARCHAR;
ALTER TABLE app_versions ADD COLUMN detected_main_class VARCHAR;
```
- [ ] **Step 2: Update AppVersion record**
-Replace the entire content of `cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/AppVersion.java`:
+Replace the entire content of `cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/AppVersion.java`:
```java
-package com.cameleer3.server.core.runtime;
+package com.cameleer.server.core.runtime;
import java.time.Instant;
import java.util.UUID;
@@ -325,7 +325,7 @@ public record AppVersion(UUID id, UUID appId, int version, String jarPath, Strin
- [ ] **Step 3: Add updateDetectedRuntime to AppVersionRepository**
-In `cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/AppVersionRepository.java`, add after the `delete` method (line 12):
+In `cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/AppVersionRepository.java`, add after the `delete` method (line 12):
```java
void updateDetectedRuntime(UUID id, String detectedRuntimeType, String detectedMainClass);
@@ -334,7 +334,7 @@ In `cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/AppVer
Full file becomes:
```java
-package com.cameleer3.server.core.runtime;
+package com.cameleer.server.core.runtime;
import java.util.List;
import java.util.Optional;
@@ -352,7 +352,7 @@ public interface AppVersionRepository {
- [ ] **Step 4: Update PostgresAppVersionRepository**
-In `cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresAppVersionRepository.java`:
+In `cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresAppVersionRepository.java`:
Update the SQL SELECT queries in `findByAppId` (line 24) and `findById` (line 31) to include the new columns:
@@ -404,10 +404,10 @@ Expected: BUILD SUCCESS
- [ ] **Step 6: Commit**
```bash
-git add cameleer3-server-app/src/main/resources/db/migration/V10__app_version_runtime_detection.sql \
- cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/AppVersion.java \
- cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/AppVersionRepository.java \
- cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresAppVersionRepository.java
+git add cameleer-server-app/src/main/resources/db/migration/V10__app_version_runtime_detection.sql \
+ cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/AppVersion.java \
+ cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/AppVersionRepository.java \
+ cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresAppVersionRepository.java
git commit -m "feat: add detected_runtime_type and detected_main_class to app_versions"
```
@@ -416,11 +416,11 @@ git commit -m "feat: add detected_runtime_type and detected_main_class to app_ve
### Task 3: Run Detection on Upload
**Files:**
-- Modify: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/AppService.java`
+- Modify: `cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/AppService.java`
- [ ] **Step 1: Update AppService.uploadJar to run detection after saving**
-In `cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/AppService.java`, add an import at the top:
+In `cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/AppService.java`, add an import at the top:
```java
import java.nio.file.Path;
@@ -481,7 +481,7 @@ Expected: BUILD SUCCESS
- [ ] **Step 3: Commit**
```bash
-git add cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/AppService.java
+git add cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/AppService.java
git commit -m "feat: run runtime detection on JAR upload"
```
@@ -490,12 +490,12 @@ git commit -m "feat: run runtime detection on JAR upload"
### Task 4: ConfigMerger + ResolvedContainerConfig
**Files:**
-- Modify: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/ResolvedContainerConfig.java`
-- Modify: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/ConfigMerger.java`
+- Modify: `cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/ResolvedContainerConfig.java`
+- Modify: `cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/ConfigMerger.java`
- [ ] **Step 1: Add runtimeType and customArgs to ResolvedContainerConfig**
-In `cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/ResolvedContainerConfig.java`, add two new fields after `replayEnabled` (line 22):
+In `cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/ResolvedContainerConfig.java`, add two new fields after `replayEnabled` (line 22):
```java
boolean replayEnabled,
@@ -532,7 +532,7 @@ The existing helper methods (`memoryLimitBytes`, `memoryReserveBytes`, `dockerCp
- [ ] **Step 2: Update ConfigMerger.resolve() to include new fields**
-In `cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/ConfigMerger.java`, add two new lines at the end of the `resolve()` return statement (after line 33, the `replayEnabled` line):
+In `cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/ConfigMerger.java`, add two new lines at the end of the `resolve()` return statement (after line 33, the `replayEnabled` line):
```java
boolVal(appConfig, envConfig, "routeControlEnabled", true),
@@ -550,8 +550,8 @@ Expected: FAIL — `DeploymentExecutor.resolvedConfigToMap()` creates `ResolvedC
- [ ] **Step 4: Commit (with compile fix deferred to Task 5)**
```bash
-git add cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/ResolvedContainerConfig.java \
- cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/ConfigMerger.java
+git add cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/ResolvedContainerConfig.java \
+ cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/ConfigMerger.java
git commit -m "feat: add runtimeType and customArgs to ResolvedContainerConfig and ConfigMerger"
```
@@ -560,16 +560,16 @@ git commit -m "feat: add runtimeType and customArgs to ResolvedContainerConfig a
### Task 5: ContainerRequest + DeploymentExecutor + Entrypoint
**Files:**
-- Modify: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/ContainerRequest.java`
-- Modify: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/DeploymentExecutor.java`
-- Modify: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/DockerRuntimeOrchestrator.java`
+- Modify: `cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/ContainerRequest.java`
+- Modify: `cameleer-server-app/src/main/java/com/cameleer/server/app/runtime/DeploymentExecutor.java`
+- Modify: `cameleer-server-app/src/main/java/com/cameleer/server/app/runtime/DockerRuntimeOrchestrator.java`
- [ ] **Step 1: Add runtimeType, customArgs, mainClass to ContainerRequest**
-Replace the full content of `cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/ContainerRequest.java`:
+Replace the full content of `cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/ContainerRequest.java`:
```java
-package com.cameleer3.server.core.runtime;
+package com.cameleer.server.core.runtime;
import java.util.List;
import java.util.Map;
@@ -600,12 +600,12 @@ public record ContainerRequest(
- [ ] **Step 2: Update DeploymentExecutor — resolve AUTO, pass runtime fields, update resolvedConfigToMap**
-In `cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/DeploymentExecutor.java`:
+In `cameleer-server-app/src/main/java/com/cameleer/server/app/runtime/DeploymentExecutor.java`:
Add import at top:
```java
-import com.cameleer3.server.core.runtime.RuntimeType;
+import com.cameleer.server.core.runtime.RuntimeType;
```
In `executeAsync()`, after `preFlightChecks(jarPath, config);` (after the PRE_FLIGHT stage comment block), add runtime type resolution:
@@ -666,7 +666,7 @@ Update `resolvedConfigToMap()` to include new fields — add at the end before t
- [ ] **Step 3: Add getVersion method to AppService**
-In `cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/AppService.java`, add after `listVersions` (line 33):
+In `cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/AppService.java`, add after `listVersions` (line 33):
```java
public AppVersion getVersion(UUID versionId) {
@@ -677,7 +677,7 @@ In `cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/AppSer
- [ ] **Step 4: Update DockerRuntimeOrchestrator entrypoint construction**
-In `cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/DockerRuntimeOrchestrator.java`, replace the entrypoint block (the section starting with `// Resolve the JAR path for the entrypoint` through the `createCmd.withEntrypoint` call) with:
+In `cameleer-server-app/src/main/java/com/cameleer/server/app/runtime/DockerRuntimeOrchestrator.java`, replace the entrypoint block (the section starting with `// Resolve the JAR path for the entrypoint` through the `createCmd.withEntrypoint` call) with:
```java
// Resolve the JAR path for the entrypoint
@@ -707,10 +707,10 @@ In `cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/DockerRu
String entrypoint = switch (request.runtimeType()) {
case "quarkus" -> "exec java -javaagent:/app/agent.jar" + customArgs + " -jar " + appJarPath;
case "plain-java" -> "exec java -javaagent:/app/agent.jar -cp " + appJarPath +
- ":/app/cameleer3-log-appender.jar" + customArgs + " " + request.mainClass();
+ ":/app/cameleer-log-appender.jar" + customArgs + " " + request.mainClass();
case "native" -> "exec " + appJarPath + customArgs;
default -> // spring-boot (default)
- "exec java -javaagent:/app/agent.jar -Dloader.path=/app/cameleer3-log-appender.jar" +
+ "exec java -javaagent:/app/agent.jar -Dloader.path=/app/cameleer-log-appender.jar" +
customArgs + " -cp " + appJarPath + " org.springframework.boot.loader.launch.PropertiesLauncher";
};
createCmd.withEntrypoint("sh", "-c", entrypoint);
@@ -724,10 +724,10 @@ Expected: BUILD SUCCESS
- [ ] **Step 6: Commit**
```bash
-git add cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/ContainerRequest.java \
- cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/AppService.java \
- cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/DeploymentExecutor.java \
- cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/DockerRuntimeOrchestrator.java
+git add cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/ContainerRequest.java \
+ cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/AppService.java \
+ cameleer-server-app/src/main/java/com/cameleer/server/app/runtime/DeploymentExecutor.java \
+ cameleer-server-app/src/main/java/com/cameleer/server/app/runtime/DockerRuntimeOrchestrator.java
git commit -m "feat: build Docker entrypoint per runtime type with custom args support"
```
@@ -736,12 +736,12 @@ git commit -m "feat: build Docker entrypoint per runtime type with custom args s
### Task 6: Input Validation
**Files:**
-- Modify: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/AppController.java`
-- Modify: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/EnvironmentAdminController.java`
+- Modify: `cameleer-server-app/src/main/java/com/cameleer/server/app/controller/AppController.java`
+- Modify: `cameleer-server-app/src/main/java/com/cameleer/server/app/controller/EnvironmentAdminController.java`
- [ ] **Step 1: Add validation to AppController.updateContainerConfig**
-In `cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/AppController.java`, add a validation constant and helper method at the bottom of the class, before the `CreateAppRequest` record:
+In `cameleer-server-app/src/main/java/com/cameleer/server/app/controller/AppController.java`, add a validation constant and helper method at the bottom of the class, before the `CreateAppRequest` record:
```java
private static final java.util.regex.Pattern CUSTOM_ARGS_PATTERN =
@@ -763,7 +763,7 @@ In `cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/AppCo
Add import at top:
```java
-import com.cameleer3.server.core.runtime.RuntimeType;
+import com.cameleer.server.core.runtime.RuntimeType;
```
Update the `updateContainerConfig` method to call validation:
@@ -792,7 +792,7 @@ Update the `updateContainerConfig` method to call validation:
- [ ] **Step 2: Add same validation to EnvironmentAdminController.updateDefaultContainerConfig**
-In `cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/EnvironmentAdminController.java`, add the same constant, helper, and import. Then call `validateContainerConfig(defaultContainerConfig)` as the first line in the try block of `updateDefaultContainerConfig`.
+In `cameleer-server-app/src/main/java/com/cameleer/server/app/controller/EnvironmentAdminController.java`, add the same constant, helper, and import. Then call `validateContainerConfig(defaultContainerConfig)` as the first line in the try block of `updateDefaultContainerConfig`.
- [ ] **Step 3: Verify compilation**
@@ -802,8 +802,8 @@ Expected: BUILD SUCCESS
- [ ] **Step 4: Commit**
```bash
-git add cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/AppController.java \
- cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/EnvironmentAdminController.java
+git add cameleer-server-app/src/main/java/com/cameleer/server/app/controller/AppController.java \
+ cameleer-server-app/src/main/java/com/cameleer/server/app/controller/EnvironmentAdminController.java
git commit -m "feat: validate runtimeType and customArgs on container config save"
```
@@ -962,7 +962,7 @@ The `AppVersion` record gained 2 new fields and `ResolvedContainerConfig` gained
Search for these with:
```bash
-grep -rn "new AppVersion\|new ResolvedContainerConfig\|new ContainerRequest" --include="*.java" cameleer3-server-*/src/test/
+grep -rn "new AppVersion\|new ResolvedContainerConfig\|new ContainerRequest" --include="*.java" cameleer-server-*/src/test/
```
- [ ] **Step 4: Commit fixes if any**
diff --git a/docs/superpowers/plans/2026-04-14-claim-mapping-rules-editor.md b/docs/superpowers/plans/2026-04-14-claim-mapping-rules-editor.md
new file mode 100644
index 00000000..b502909d
--- /dev/null
+++ b/docs/superpowers/plans/2026-04-14-claim-mapping-rules-editor.md
@@ -0,0 +1,1007 @@
+# Claim Mapping Rules Editor Implementation Plan
+
+> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
+
+**Goal:** Add a UI for managing OIDC claim mapping rules — a modal editor triggered from the OIDC config page with inline CRUD, reordering, and a server-side test panel.
+
+**Architecture:** One new backend endpoint (`POST /test`) added to the existing `ClaimMappingAdminController`. On the frontend, a new React Query hooks file for the claim mapping API, a new modal component with table + test panel, and a small modification to `OidcConfigPage` to add the trigger button. All CRUD operations use the existing `/api/v1/admin/claim-mappings` REST API.
+
+**Tech Stack:** Spring Boot (backend endpoint), React + TypeScript + React Query (frontend), `@cameleer/design-system` components, CSS modules.
+
+---
+
+### Task 1: Backend — Add test endpoint
+
+**Files:**
+- Modify: `cameleer-server-app/src/main/java/com/cameleer/server/app/controller/ClaimMappingAdminController.java`
+
+- [ ] **Step 1: Write the test endpoint**
+
+Add the `POST /test` endpoint and response DTO to `ClaimMappingAdminController.java`. Add these inside the class, after the existing `delete` method (line 76):
+
+```java
+record MatchedRuleResponse(UUID ruleId, int priority, String claim, String matchType,
+ String matchValue, String action, String target) {}
+
+record TestResponse(List matchedRules, List effectiveRoles,
+ List effectiveGroups, boolean fallback) {}
+
+@PostMapping("/test")
+@Operation(summary = "Test claim mapping rules against a set of claims")
+public TestResponse test(@RequestBody Map claims) {
+ List rules = repository.findAll();
+ List results = claimMappingService.evaluate(rules, claims);
+
+ List matched = results.stream()
+ .map(r -> new MatchedRuleResponse(
+ r.rule().id(), r.rule().priority(), r.rule().claim(),
+ r.rule().matchType(), r.rule().matchValue(),
+ r.rule().action(), r.rule().target()))
+ .toList();
+
+ List effectiveRoles = results.stream()
+ .filter(r -> "assignRole".equals(r.rule().action()))
+ .map(r -> r.rule().target())
+ .distinct()
+ .toList();
+
+ List effectiveGroups = results.stream()
+ .filter(r -> "addToGroup".equals(r.rule().action()))
+ .map(r -> r.rule().target())
+ .distinct()
+ .toList();
+
+ return new TestResponse(matched, effectiveRoles, effectiveGroups, results.isEmpty());
+}
+```
+
+- [ ] **Step 2: Add ClaimMappingService dependency to the controller**
+
+The controller currently only injects `ClaimMappingRepository`. Add `ClaimMappingService` as a constructor parameter. Update the constructor:
+
+```java
+private final ClaimMappingRepository repository;
+private final ClaimMappingService claimMappingService;
+
+public ClaimMappingAdminController(ClaimMappingRepository repository,
+ ClaimMappingService claimMappingService) {
+ this.repository = repository;
+ this.claimMappingService = claimMappingService;
+}
+```
+
+- [ ] **Step 3: Verify compilation**
+
+Run: `mvn clean compile -pl cameleer-server-app -am`
+Expected: BUILD SUCCESS
+
+- [ ] **Step 4: Commit**
+
+```bash
+git add cameleer-server-app/src/main/java/com/cameleer/server/app/controller/ClaimMappingAdminController.java
+git commit -m "feat: add POST /test endpoint for claim mapping rule evaluation"
+```
+
+---
+
+### Task 2: Frontend — API hooks for claim mapping rules
+
+**Files:**
+- Create: `ui/src/api/queries/admin/claim-mappings.ts`
+
+- [ ] **Step 1: Create the types and hooks file**
+
+Create `ui/src/api/queries/admin/claim-mappings.ts` following the exact pattern from `rbac.ts` — React Query hooks using `adminFetch`:
+
+```typescript
+import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';
+import { adminFetch } from './admin-api';
+
+// ── Types ──────────────────────────────────────────────────────────────
+
+export interface ClaimMappingRule {
+ id: string;
+ claim: string;
+ matchType: 'equals' | 'contains' | 'regex';
+ matchValue: string;
+ action: 'assignRole' | 'addToGroup';
+ target: string;
+ priority: number;
+ createdAt: string;
+}
+
+export interface CreateRuleRequest {
+ claim: string;
+ matchType: string;
+ matchValue: string;
+ action: string;
+ target: string;
+ priority: number;
+}
+
+export interface MatchedRuleResponse {
+ ruleId: string;
+ priority: number;
+ claim: string;
+ matchType: string;
+ matchValue: string;
+ action: string;
+ target: string;
+}
+
+export interface TestResponse {
+ matchedRules: MatchedRuleResponse[];
+ effectiveRoles: string[];
+ effectiveGroups: string[];
+ fallback: boolean;
+}
+
+// ── Query Hooks ────────────────────────────────────────────────────────
+
+export function useClaimMappingRules() {
+ return useQuery({
+ queryKey: ['admin', 'claim-mappings'],
+ queryFn: () => adminFetch('/claim-mappings'),
+ });
+}
+
+// ── Mutation Hooks ─────────────────────────────────────────────────────
+
+export function useCreateClaimMappingRule() {
+ const qc = useQueryClient();
+ return useMutation({
+ mutationFn: (req: CreateRuleRequest) =>
+ adminFetch('/claim-mappings', {
+ method: 'POST',
+ body: JSON.stringify(req),
+ }),
+ onSuccess: () => {
+ qc.invalidateQueries({ queryKey: ['admin', 'claim-mappings'] });
+ },
+ });
+}
+
+export function useUpdateClaimMappingRule() {
+ const qc = useQueryClient();
+ return useMutation({
+ mutationFn: ({ id, ...req }: CreateRuleRequest & { id: string }) =>
+ adminFetch(`/claim-mappings/${id}`, {
+ method: 'PUT',
+ body: JSON.stringify(req),
+ }),
+ onSuccess: () => {
+ qc.invalidateQueries({ queryKey: ['admin', 'claim-mappings'] });
+ },
+ });
+}
+
+export function useDeleteClaimMappingRule() {
+ const qc = useQueryClient();
+ return useMutation({
+ mutationFn: (id: string) =>
+ adminFetch(`/claim-mappings/${id}`, { method: 'DELETE' }),
+ onSuccess: () => {
+ qc.invalidateQueries({ queryKey: ['admin', 'claim-mappings'] });
+ },
+ });
+}
+
+export function useTestClaimMappingRules() {
+ return useMutation({
+ mutationFn: (claims: Record) =>
+ adminFetch('/claim-mappings/test', {
+ method: 'POST',
+ body: JSON.stringify(claims),
+ }),
+ });
+}
+```
+
+- [ ] **Step 2: Verify TypeScript compiles**
+
+Run: `cd ui && npx tsc --noEmit`
+Expected: no errors
+
+- [ ] **Step 3: Commit**
+
+```bash
+git add ui/src/api/queries/admin/claim-mappings.ts
+git commit -m "feat: add React Query hooks for claim mapping rules API"
+```
+
+---
+
+### Task 3: Frontend — Rules table modal component
+
+**Files:**
+- Create: `ui/src/pages/Admin/ClaimMappingRulesModal.tsx`
+- Create: `ui/src/pages/Admin/ClaimMappingRulesModal.module.css`
+
+- [ ] **Step 1: Create the CSS module**
+
+Create `ui/src/pages/Admin/ClaimMappingRulesModal.module.css`:
+
+```css
+.overlay {
+ position: fixed;
+ inset: 0;
+ background: rgba(0, 0, 0, 0.6);
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ z-index: 1000;
+}
+
+.modal {
+ background: var(--surface-1);
+ border: 1px solid var(--border);
+ border-radius: 12px;
+ width: min(800px, 90vw);
+ max-height: 85vh;
+ display: flex;
+ flex-direction: column;
+ overflow: hidden;
+}
+
+.header {
+ display: flex;
+ justify-content: space-between;
+ align-items: flex-start;
+ padding: 16px 20px;
+ border-bottom: 1px solid var(--border);
+}
+
+.headerInfo {
+ display: flex;
+ flex-direction: column;
+ gap: 2px;
+}
+
+.title {
+ font-size: 15px;
+ font-weight: 600;
+ color: var(--text);
+}
+
+.subtitle {
+ font-size: 11px;
+ color: var(--text-muted);
+}
+
+.body {
+ overflow-y: auto;
+ flex: 1;
+}
+
+.table {
+ width: 100%;
+ border-collapse: collapse;
+}
+
+.table th {
+ text-align: left;
+ padding: 6px 8px;
+ font-size: 11px;
+ color: var(--text-muted);
+ text-transform: uppercase;
+ letter-spacing: 0.05em;
+ border-bottom: 1px solid var(--border);
+}
+
+.table td {
+ padding: 8px;
+ border-bottom: 1px solid var(--border-subtle, var(--border));
+ font-size: 13px;
+ vertical-align: middle;
+}
+
+.table th:last-child,
+.table td:last-child {
+ text-align: right;
+}
+
+.matchedRow {
+ background: rgba(var(--success-rgb, 68, 170, 136), 0.06);
+}
+
+.priorityCell {
+ color: var(--text-muted);
+ font-size: 11px;
+ width: 30px;
+}
+
+.claimCode {
+ background: var(--surface-2, var(--surface-1));
+ padding: 2px 6px;
+ border-radius: 4px;
+ font-family: var(--font-mono);
+ font-size: 12px;
+}
+
+.pill {
+ display: inline-block;
+ padding: 2px 8px;
+ border-radius: 10px;
+ font-size: 11px;
+ white-space: nowrap;
+}
+
+.pillMatch {
+ background: var(--surface-2, var(--surface-1));
+ color: var(--text-secondary, var(--text-muted));
+}
+
+.pillAssignRole {
+ background: color-mix(in srgb, var(--success) 15%, transparent);
+ color: var(--success);
+}
+
+.pillAddToGroup {
+ background: color-mix(in srgb, var(--info, var(--primary)) 15%, transparent);
+ color: var(--info, var(--primary));
+}
+
+.matchValue {
+ font-family: var(--font-mono);
+ font-size: 12px;
+}
+
+.targetCell {
+ font-weight: 500;
+}
+
+.actions {
+ display: flex;
+ gap: 4px;
+ justify-content: flex-end;
+ align-items: center;
+}
+
+.iconBtn {
+ background: none;
+ border: none;
+ color: var(--text-muted);
+ cursor: pointer;
+ padding: 4px;
+ border-radius: 4px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+
+.iconBtn:hover {
+ color: var(--text);
+ background: var(--surface-2, var(--surface-1));
+}
+
+.iconBtn:disabled {
+ opacity: 0.3;
+ cursor: default;
+}
+
+.addRow {
+ display: flex;
+ gap: 8px;
+ align-items: center;
+ padding: 12px 20px;
+ border-top: 1px solid var(--border);
+}
+
+.addRow input,
+.addRow select {
+ font-size: 12px;
+}
+
+.claimInput {
+ width: 100px;
+}
+
+.matchSelect {
+ width: 90px;
+}
+
+.valueInput {
+ flex: 1;
+}
+
+.actionSelect {
+ width: 120px;
+}
+
+.targetInput {
+ width: 120px;
+}
+
+.editRow input,
+.editRow select {
+ font-size: 12px;
+}
+
+.emptyState {
+ padding: 32px 20px;
+ text-align: center;
+ color: var(--text-muted);
+ font-size: 13px;
+}
+
+.footer {
+ padding: 12px 20px;
+ font-size: 11px;
+ color: var(--text-muted);
+ border-top: 1px solid var(--border);
+}
+
+/* ── Test Panel ─────────────────────────────────────────────────── */
+
+.testToggle {
+ display: flex;
+ align-items: center;
+ gap: 8px;
+ padding: 12px 20px;
+ cursor: pointer;
+ border-top: 2px solid var(--border);
+ user-select: none;
+}
+
+.testToggle:hover {
+ background: var(--surface-2, var(--surface-1));
+}
+
+.testToggleLabel {
+ font-size: 13px;
+ font-weight: 500;
+ color: var(--text-secondary, var(--text-muted));
+}
+
+.testToggleHint {
+ font-size: 11px;
+ color: var(--text-muted);
+}
+
+.testPanel {
+ display: flex;
+ gap: 12px;
+ padding: 0 20px 16px;
+}
+
+.testTextarea {
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+ gap: 8px;
+}
+
+.testTextarea textarea {
+ width: 100%;
+ box-sizing: border-box;
+ height: 140px;
+ background: var(--surface-2, var(--surface-1));
+ border: 1px solid var(--border);
+ border-radius: 6px;
+ padding: 10px;
+ color: var(--text);
+ font-family: var(--font-mono);
+ font-size: 11px;
+ resize: vertical;
+}
+
+.testResults {
+ flex: 1;
+ background: var(--surface-2, var(--surface-1));
+ border: 1px solid var(--border);
+ border-radius: 6px;
+ padding: 12px;
+ min-height: 140px;
+ box-sizing: border-box;
+ overflow-y: auto;
+}
+
+.testResultsTitle {
+ font-size: 11px;
+ color: var(--text-muted);
+ text-transform: uppercase;
+ letter-spacing: 0.05em;
+ margin-bottom: 10px;
+}
+
+.testMatch {
+ margin-bottom: 10px;
+}
+
+.testMatchLabel {
+ font-size: 11px;
+ color: var(--success);
+ margin-bottom: 4px;
+}
+
+.testMatchDetail {
+ font-size: 12px;
+ padding-left: 16px;
+}
+
+.testEffective {
+ border-top: 1px solid var(--border);
+ padding-top: 8px;
+ margin-top: 4px;
+ font-size: 11px;
+ color: var(--text-muted);
+}
+
+.testEffectiveValues {
+ color: var(--success);
+ font-weight: 500;
+}
+
+.testFallback {
+ font-size: 12px;
+ color: var(--warning);
+ font-style: italic;
+}
+
+.testError {
+ font-size: 12px;
+ color: var(--error);
+}
+
+.testEmpty {
+ font-size: 12px;
+ color: var(--text-muted);
+ font-style: italic;
+}
+
+.matchCheck {
+ color: var(--success);
+}
+```
+
+- [ ] **Step 2: Create the modal component**
+
+Create `ui/src/pages/Admin/ClaimMappingRulesModal.tsx`:
+
+```tsx
+import { useState } from 'react';
+import { ChevronUp, ChevronDown, Pencil, X, Check } from 'lucide-react';
+import { Button, Input, Select, ConfirmDialog, useToast } from '@cameleer/design-system';
+import {
+ useClaimMappingRules,
+ useCreateClaimMappingRule,
+ useUpdateClaimMappingRule,
+ useDeleteClaimMappingRule,
+ useTestClaimMappingRules,
+} from '../../api/queries/admin/claim-mappings';
+import type { ClaimMappingRule, TestResponse } from '../../api/queries/admin/claim-mappings';
+import styles from './ClaimMappingRulesModal.module.css';
+
+const MATCH_OPTIONS = [
+ { value: 'equals', label: 'equals' },
+ { value: 'contains', label: 'contains' },
+ { value: 'regex', label: 'regex' },
+];
+
+const ACTION_OPTIONS = [
+ { value: 'assignRole', label: 'assign role' },
+ { value: 'addToGroup', label: 'add to group' },
+];
+
+const EMPTY_FORM = { claim: '', matchType: 'equals', matchValue: '', action: 'assignRole', target: '' };
+
+const TEST_PLACEHOLDER = `{
+ "sub": "user-42",
+ "email": "jane@acme.com",
+ "department": "engineering",
+ "groups": ["frontend", "design"]
+}`;
+
+interface Props {
+ open: boolean;
+ onClose: () => void;
+}
+
+export default function ClaimMappingRulesModal({ open, onClose }: Props) {
+ const { toast } = useToast();
+ const { data: rules = [], isLoading } = useClaimMappingRules();
+ const createRule = useCreateClaimMappingRule();
+ const updateRule = useUpdateClaimMappingRule();
+ const deleteRule = useDeleteClaimMappingRule();
+ const testRules = useTestClaimMappingRules();
+
+ // Add form
+ const [addForm, setAddForm] = useState({ ...EMPTY_FORM });
+
+ // Edit state
+ const [editingId, setEditingId] = useState(null);
+ const [editForm, setEditForm] = useState({ ...EMPTY_FORM });
+
+ // Delete confirm
+ const [deleteTarget, setDeleteTarget] = useState(null);
+
+ // Test panel
+ const [testOpen, setTestOpen] = useState(false);
+ const [testInput, setTestInput] = useState('');
+ const [testResult, setTestResult] = useState(null);
+ const [testError, setTestError] = useState('');
+
+ if (!open) return null;
+
+ const sorted = [...rules].sort((a, b) => a.priority - b.priority);
+ const matchedRuleIds = new Set((testResult?.matchedRules ?? []).map((r) => r.ruleId));
+
+ // ── Handlers ──────────────────────────────────────────────────────
+
+ function handleAdd() {
+ const maxPriority = sorted.length > 0 ? Math.max(...sorted.map((r) => r.priority)) : -1;
+ createRule.mutate(
+ {
+ claim: addForm.claim.trim(),
+ matchType: addForm.matchType,
+ matchValue: addForm.matchValue.trim(),
+ action: addForm.action,
+ target: addForm.target.trim(),
+ priority: maxPriority + 1,
+ },
+ {
+ onSuccess: () => {
+ setAddForm({ ...EMPTY_FORM });
+ toast({ title: 'Rule created', variant: 'success' });
+ },
+ onError: (e) => toast({ title: 'Failed to create rule', description: e.message, variant: 'error', duration: 86_400_000 }),
+ },
+ );
+ }
+
+ function startEdit(rule: ClaimMappingRule) {
+ setEditingId(rule.id);
+ setEditForm({
+ claim: rule.claim,
+ matchType: rule.matchType,
+ matchValue: rule.matchValue,
+ action: rule.action,
+ target: rule.target,
+ });
+ }
+
+ function saveEdit(rule: ClaimMappingRule) {
+ updateRule.mutate(
+ {
+ id: rule.id,
+ claim: editForm.claim.trim(),
+ matchType: editForm.matchType,
+ matchValue: editForm.matchValue.trim(),
+ action: editForm.action,
+ target: editForm.target.trim(),
+ priority: rule.priority,
+ },
+ {
+ onSuccess: () => {
+ setEditingId(null);
+ toast({ title: 'Rule updated', variant: 'success' });
+ },
+ onError: (e) => toast({ title: 'Failed to update rule', description: e.message, variant: 'error', duration: 86_400_000 }),
+ },
+ );
+ }
+
+ function confirmDelete() {
+ if (!deleteTarget) return;
+ deleteRule.mutate(deleteTarget.id, {
+ onSuccess: () => {
+ setDeleteTarget(null);
+ toast({ title: 'Rule deleted', variant: 'warning' });
+ },
+ onError: (e) => {
+ setDeleteTarget(null);
+ toast({ title: 'Failed to delete rule', description: e.message, variant: 'error', duration: 86_400_000 });
+ },
+ });
+ }
+
+ function handleMove(rule: ClaimMappingRule, direction: 'up' | 'down') {
+ const idx = sorted.findIndex((r) => r.id === rule.id);
+ const swapIdx = direction === 'up' ? idx - 1 : idx + 1;
+ if (swapIdx < 0 || swapIdx >= sorted.length) return;
+
+ const other = sorted[swapIdx];
+ // Swap priorities
+ updateRule.mutate(
+ { id: rule.id, claim: rule.claim, matchType: rule.matchType, matchValue: rule.matchValue, action: rule.action, target: rule.target, priority: other.priority },
+ {
+ onSuccess: () => {
+ updateRule.mutate(
+ { id: other.id, claim: other.claim, matchType: other.matchType, matchValue: other.matchValue, action: other.action, target: other.target, priority: rule.priority },
+ );
+ },
+ },
+ );
+ }
+
+ function handleTest() {
+ setTestError('');
+ setTestResult(null);
+ let claims: Record;
+ try {
+ claims = JSON.parse(testInput);
+ } catch {
+ setTestError('Invalid JSON — paste a decoded JWT claims object');
+ return;
+ }
+ testRules.mutate(claims, {
+ onSuccess: (result) => setTestResult(result),
+ onError: (e) => setTestError(e.message),
+ });
+ }
+
+ // ── Render helpers ────────────────────────────────────────────────
+
+ function actionPillClass(action: string) {
+ return action === 'assignRole' ? styles.pillAssignRole : styles.pillAddToGroup;
+ }
+
+ function actionLabel(action: string) {
+ return action === 'assignRole' ? 'assign role' : 'add to group';
+ }
+
+ const addDisabled = !addForm.claim.trim() || !addForm.matchValue.trim() || !addForm.target.trim();
+
+ // ── JSX ───────────────────────────────────────────────────────────
+
+ return (
+
+
e.stopPropagation()}>
+ {/* Header */}
+
+
+
Claim Mapping Rules
+
Map JWT claims to Cameleer roles and groups. Evaluated on every OIDC login.
+
+
+
+
+ {/* Body */}
+
+ {isLoading ? (
+
Loading...
+ ) : sorted.length === 0 ? (
+
+ No claim mapping rules configured.
+ Rules let you assign roles and groups based on JWT claims.
+
+ ) : (
+
+ )}
+
+ {/* Add row */}
+
+ setAddForm({ ...addForm, claim: e.target.value })} className={styles.claimInput} />
+ setAddForm({ ...addForm, matchType: e.target.value })} className={styles.matchSelect} />
+ setAddForm({ ...addForm, matchValue: e.target.value })} className={styles.valueInput} />
+ setAddForm({ ...addForm, action: e.target.value })} className={styles.actionSelect} />
+ setAddForm({ ...addForm, target: e.target.value })}
+ className={styles.targetInput}
+ />
+ + Add
+
+
+ {/* Test panel */}
+
setTestOpen(!testOpen)}>
+ {testOpen ? '\u25B2' : '\u25BC'}
+ Test Rules
+ Paste a decoded JWT to preview which rules would fire
+
+
+ {testOpen && (
+
+
+
+
+
Result
+ {testError &&
{testError}
}
+ {!testResult && !testError &&
Paste claims and click Test
}
+ {testResult && testResult.fallback && (
+
No rules matched — would fall back to default roles
+ )}
+ {testResult && !testResult.fallback && (
+ <>
+ {testResult.matchedRules.map((m) => (
+
+
✓ Rule #{sorted.findIndex((r) => r.id === m.ruleId) + 1} matched
+
+ {m.claim}{' '}
+ {m.matchType} {m.matchValue}{' '}
+ → {actionLabel(m.action)} {m.target}
+
+
+ ))}
+
+ {testResult.effectiveRoles.length > 0 && (
+
Roles: {testResult.effectiveRoles.join(', ')}
+ )}
+ {testResult.effectiveGroups.length > 0 && (
+
Groups: {testResult.effectiveGroups.join(', ')}
+ )}
+
+ >
+ )}
+
+
+ )}
+
+
+ {/* Footer */}
+
+ Rules are evaluated top-to-bottom by priority on every OIDC login. If no rules match, the server falls back to roles from the token, then to default roles.
+
+
+
+
setDeleteTarget(null)}
+ onConfirm={confirmDelete}
+ message={`Delete this rule? (${deleteTarget?.claim} ${deleteTarget?.matchType} "${deleteTarget?.matchValue}")`}
+ confirmText="delete"
+ loading={deleteRule.isPending}
+ />
+
+ );
+}
+```
+
+- [ ] **Step 3: Verify TypeScript compiles**
+
+Run: `cd ui && npx tsc --noEmit`
+Expected: no errors
+
+- [ ] **Step 4: Commit**
+
+```bash
+git add ui/src/pages/Admin/ClaimMappingRulesModal.tsx ui/src/pages/Admin/ClaimMappingRulesModal.module.css
+git commit -m "feat: add claim mapping rules editor modal component"
+```
+
+---
+
+### Task 4: Frontend — Wire modal into OIDC config page
+
+**Files:**
+- Modify: `ui/src/pages/Admin/OidcConfigPage.tsx`
+
+- [ ] **Step 1: Add imports and state**
+
+At the top of `OidcConfigPage.tsx`, add after the existing imports (line 8):
+
+```tsx
+import ClaimMappingRulesModal from './ClaimMappingRulesModal';
+import { useClaimMappingRules } from '../../api/queries/admin/claim-mappings';
+```
+
+Inside the `OidcConfigPage` component function, after the existing state declarations (after line 52), add:
+
+```tsx
+const [rulesModalOpen, setRulesModalOpen] = useState(false);
+const { data: claimRules = [] } = useClaimMappingRules();
+```
+
+- [ ] **Step 2: Add the trigger button to the Claim Mapping section**
+
+After the Display Name Claim `FormField` closing tag (after line 273), add the trigger button and modal before the `` closing tag:
+
+```tsx
+
+
+
+ Advanced Rules
+ {claimRules.length > 0 && (
+
+ {claimRules.length} active rule{claimRules.length !== 1 ? 's' : ''}
+
+ )}
+
+
setRulesModalOpen(true)}>
+ Edit Rules
+
+
+
+ setRulesModalOpen(false)} />
+```
+
+- [ ] **Step 3: Verify TypeScript compiles**
+
+Run: `cd ui && npx tsc --noEmit`
+Expected: no errors
+
+- [ ] **Step 4: Commit**
+
+```bash
+git add ui/src/pages/Admin/OidcConfigPage.tsx
+git commit -m "feat: wire claim mapping rules modal into OIDC config page"
+```
+
+---
+
+### Task 5: Compile, verify, and push
+
+**Files:** (none — verification only)
+
+- [ ] **Step 1: Full backend compilation**
+
+Run: `mvn clean compile test-compile`
+Expected: BUILD SUCCESS
+
+- [ ] **Step 2: Frontend type check**
+
+Run: `cd ui && npx tsc --noEmit`
+Expected: no errors
+
+- [ ] **Step 3: Push**
+
+```bash
+git push
+```
diff --git a/docs/superpowers/plans/2026-04-14-container-startup-log-capture.md b/docs/superpowers/plans/2026-04-14-container-startup-log-capture.md
index 855a697d..453c8ac1 100644
--- a/docs/superpowers/plans/2026-04-14-container-startup-log-capture.md
+++ b/docs/superpowers/plans/2026-04-14-container-startup-log-capture.md
@@ -18,7 +18,7 @@
| File | Responsibility |
|------|----------------|
-| `cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/ContainerLogForwarder.java` | Docker log streaming, batching, ClickHouse flush, session lifecycle |
+| `cameleer-server-app/src/main/java/com/cameleer/server/app/runtime/ContainerLogForwarder.java` | Docker log streaming, batching, ClickHouse flush, session lifecycle |
| `ui/src/components/StartupLogPanel.tsx` | Collapsible log panel for deployment startup logs |
| `ui/src/components/StartupLogPanel.module.css` | Styles for startup log panel |
@@ -26,13 +26,13 @@
| File | Change |
|------|--------|
-| `cameleer3-server-core/.../RuntimeOrchestrator.java` | Add 3 default no-op methods |
-| `cameleer3-server-app/.../DockerRuntimeOrchestrator.java` | Implement log capture, delegate to forwarder |
-| `cameleer3-server-app/.../DisabledRuntimeOrchestrator.java` | Override no-ops (explicit) |
-| `cameleer3-server-app/.../RuntimeOrchestratorAutoConfig.java` | Create and wire `ContainerLogForwarder` bean |
-| `cameleer3-server-app/.../DeploymentExecutor.java` | Call `startLogCapture()` after container start |
-| `cameleer3-server-app/.../SseConnectionManager.java` | Call `stopLogCaptureByApp()` on SSE connect |
-| `cameleer3-server-app/.../DockerEventMonitor.java` | Call `stopLogCapture()` on die/oom |
+| `cameleer-server-core/.../RuntimeOrchestrator.java` | Add 3 default no-op methods |
+| `cameleer-server-app/.../DockerRuntimeOrchestrator.java` | Implement log capture, delegate to forwarder |
+| `cameleer-server-app/.../DisabledRuntimeOrchestrator.java` | Override no-ops (explicit) |
+| `cameleer-server-app/.../RuntimeOrchestratorAutoConfig.java` | Create and wire `ContainerLogForwarder` bean |
+| `cameleer-server-app/.../DeploymentExecutor.java` | Call `startLogCapture()` after container start |
+| `cameleer-server-app/.../SseConnectionManager.java` | Call `stopLogCaptureByApp()` on SSE connect |
+| `cameleer-server-app/.../DockerEventMonitor.java` | Call `stopLogCapture()` on die/oom |
| `ui/src/pages/AppsTab/AppsTab.tsx` | Render `StartupLogPanel` below `DeploymentProgress` |
| `ui/src/pages/AgentInstance/AgentInstance.tsx` | Add `container` to `LOG_SOURCE_ITEMS` |
| `ui/src/api/queries/logs.ts` | Add `useStartupLogs` hook |
@@ -42,15 +42,15 @@
### Task 1: Extend RuntimeOrchestrator Interface
**Files:**
-- Modify: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/RuntimeOrchestrator.java`
-- Modify: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/DisabledRuntimeOrchestrator.java`
+- Modify: `cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/RuntimeOrchestrator.java`
+- Modify: `cameleer-server-app/src/main/java/com/cameleer/server/app/runtime/DisabledRuntimeOrchestrator.java`
- [ ] **Step 1: Add default methods to RuntimeOrchestrator**
-In `cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/RuntimeOrchestrator.java`, add three default no-op methods after the existing `getLogs` method (line 11):
+In `cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/RuntimeOrchestrator.java`, add three default no-op methods after the existing `getLogs` method (line 11):
```java
-package com.cameleer3.server.core.runtime;
+package com.cameleer.server.core.runtime;
import java.util.stream.Stream;
@@ -75,7 +75,7 @@ public interface RuntimeOrchestrator {
- [ ] **Step 2: Add explicit overrides to DisabledRuntimeOrchestrator**
-In `cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/DisabledRuntimeOrchestrator.java`, add explicit no-op overrides after line 15:
+In `cameleer-server-app/src/main/java/com/cameleer/server/app/runtime/DisabledRuntimeOrchestrator.java`, add explicit no-op overrides after line 15:
```java
@Override public void startLogCapture(String containerId, String appSlug, String envSlug, String tenantId) {}
@@ -85,14 +85,14 @@ In `cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/Disabled
- [ ] **Step 3: Verify compilation**
-Run: `mvn clean compile -pl cameleer3-server-core,cameleer3-server-app -q`
+Run: `mvn clean compile -pl cameleer-server-core,cameleer-server-app -q`
Expected: BUILD SUCCESS
- [ ] **Step 4: Commit**
```bash
-git add cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/RuntimeOrchestrator.java \
- cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/DisabledRuntimeOrchestrator.java
+git add cameleer-server-core/src/main/java/com/cameleer/server/core/runtime/RuntimeOrchestrator.java \
+ cameleer-server-app/src/main/java/com/cameleer/server/app/runtime/DisabledRuntimeOrchestrator.java
git commit -m "feat: add log capture methods to RuntimeOrchestrator interface"
```
@@ -101,16 +101,16 @@ git commit -m "feat: add log capture methods to RuntimeOrchestrator interface"
### Task 2: Create ContainerLogForwarder
**Files:**
-- Create: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/ContainerLogForwarder.java`
+- Create: `cameleer-server-app/src/main/java/com/cameleer/server/app/runtime/ContainerLogForwarder.java`
- [ ] **Step 1: Create ContainerLogForwarder class**
```java
-package com.cameleer3.server.app.runtime;
+package com.cameleer.server.app.runtime;
-import com.cameleer3.common.model.LogEntry;
-import com.cameleer3.server.app.search.ClickHouseLogStore;
-import com.cameleer3.server.core.ingestion.BufferedLogEntry;
+import com.cameleer.common.model.LogEntry;
+import com.cameleer.server.app.search.ClickHouseLogStore;
+import com.cameleer.server.core.ingestion.BufferedLogEntry;
import com.github.dockerjava.api.DockerClient;
import com.github.dockerjava.api.async.ResultCallback;
import com.github.dockerjava.api.model.Frame;
@@ -370,13 +370,13 @@ public class ContainerLogForwarder {
- [ ] **Step 2: Verify compilation**
-Run: `mvn clean compile -pl cameleer3-server-app -q`
+Run: `mvn clean compile -pl cameleer-server-app -q`
Expected: BUILD SUCCESS
- [ ] **Step 3: Commit**
```bash
-git add cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/ContainerLogForwarder.java
+git add cameleer-server-app/src/main/java/com/cameleer/server/app/runtime/ContainerLogForwarder.java
git commit -m "feat: add ContainerLogForwarder for Docker log streaming to ClickHouse"
```
@@ -385,8 +385,8 @@ git commit -m "feat: add ContainerLogForwarder for Docker log streaming to Click
### Task 3: Wire ContainerLogForwarder and Implement in DockerRuntimeOrchestrator
**Files:**
-- Modify: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/DockerRuntimeOrchestrator.java`
-- Modify: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/RuntimeOrchestratorAutoConfig.java`
+- Modify: `cameleer-server-app/src/main/java/com/cameleer/server/app/runtime/DockerRuntimeOrchestrator.java`
+- Modify: `cameleer-server-app/src/main/java/com/cameleer/server/app/runtime/RuntimeOrchestratorAutoConfig.java`
- [ ] **Step 1: Add ContainerLogForwarder field and log capture methods to DockerRuntimeOrchestrator**
@@ -467,19 +467,19 @@ Add the `ContainerLogForwarder` bean after `dockerEventMonitor()` (after line 46
Add the import at the top:
```java
-import com.cameleer3.server.app.search.ClickHouseLogStore;
+import com.cameleer.server.app.search.ClickHouseLogStore;
```
- [ ] **Step 3: Verify compilation**
-Run: `mvn clean compile -pl cameleer3-server-app -q`
+Run: `mvn clean compile -pl cameleer-server-app -q`
Expected: BUILD SUCCESS
- [ ] **Step 4: Commit**
```bash
-git add cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/DockerRuntimeOrchestrator.java \
- cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/RuntimeOrchestratorAutoConfig.java
+git add cameleer-server-app/src/main/java/com/cameleer/server/app/runtime/DockerRuntimeOrchestrator.java \
+ cameleer-server-app/src/main/java/com/cameleer/server/app/runtime/RuntimeOrchestratorAutoConfig.java
git commit -m "feat: wire ContainerLogForwarder into DockerRuntimeOrchestrator"
```
@@ -488,7 +488,7 @@ git commit -m "feat: wire ContainerLogForwarder into DockerRuntimeOrchestrator"
### Task 4: Integrate Start Capture in DeploymentExecutor
**Files:**
-- Modify: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/DeploymentExecutor.java`
+- Modify: `cameleer-server-app/src/main/java/com/cameleer/server/app/runtime/DeploymentExecutor.java`
- [ ] **Step 1: Add startLogCapture call after each replica starts**
@@ -520,13 +520,13 @@ This goes right between the network connection loop and the `replicaStates.add(M
- [ ] **Step 2: Verify compilation**
-Run: `mvn clean compile -pl cameleer3-server-app -q`
+Run: `mvn clean compile -pl cameleer-server-app -q`
Expected: BUILD SUCCESS
- [ ] **Step 3: Commit**
```bash
-git add cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/DeploymentExecutor.java
+git add cameleer-server-app/src/main/java/com/cameleer/server/app/runtime/DeploymentExecutor.java
git commit -m "feat: start log capture when deployment replicas are created"
```
@@ -535,7 +535,7 @@ git commit -m "feat: start log capture when deployment replicas are created"
### Task 5: Integrate Stop Capture in SseConnectionManager
**Files:**
-- Modify: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/agent/SseConnectionManager.java`
+- Modify: `cameleer-server-app/src/main/java/com/cameleer/server/app/agent/SseConnectionManager.java`
- [ ] **Step 1: Inject RuntimeOrchestrator and call stopLogCaptureByApp on SSE connect**
@@ -558,8 +558,8 @@ In `SseConnectionManager.java`, add the `RuntimeOrchestrator` dependency. Modify
Add the import at the top:
```java
-import com.cameleer3.server.core.runtime.RuntimeOrchestrator;
-import com.cameleer3.server.core.agent.AgentInfo;
+import com.cameleer.server.core.runtime.RuntimeOrchestrator;
+import com.cameleer.server.core.agent.AgentInfo;
```
In the `connect()` method (line 60), after the `log.info("SSE connection established...")` (line 83), add the stop capture call:
@@ -574,13 +574,13 @@ In the `connect()` method (line 60), after the `log.info("SSE connection establi
- [ ] **Step 2: Verify compilation**
-Run: `mvn clean compile -pl cameleer3-server-app -q`
+Run: `mvn clean compile -pl cameleer-server-app -q`
Expected: BUILD SUCCESS
- [ ] **Step 3: Commit**
```bash
-git add cameleer3-server-app/src/main/java/com/cameleer3/server/app/agent/SseConnectionManager.java
+git add cameleer-server-app/src/main/java/com/cameleer/server/app/agent/SseConnectionManager.java
git commit -m "feat: stop container log capture when agent SSE connects"
```
@@ -589,7 +589,7 @@ git commit -m "feat: stop container log capture when agent SSE connects"
### Task 6: Integrate Stop Capture in DockerEventMonitor
**Files:**
-- Modify: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/DockerEventMonitor.java`
+- Modify: `cameleer-server-app/src/main/java/com/cameleer/server/app/runtime/DockerEventMonitor.java`
- [ ] **Step 1: Call stopLogCapture on die/oom/stop events**
@@ -606,13 +606,13 @@ Insert after line 101 (`break;`) and before line 102 (`}`):
- [ ] **Step 2: Verify compilation**
-Run: `mvn clean compile -pl cameleer3-server-app -q`
+Run: `mvn clean compile -pl cameleer-server-app -q`
Expected: BUILD SUCCESS
- [ ] **Step 3: Commit**
```bash
-git add cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/DockerEventMonitor.java
+git add cameleer-server-app/src/main/java/com/cameleer/server/app/runtime/DockerEventMonitor.java
git commit -m "feat: stop container log capture on Docker die/oom events"
```
diff --git a/docs/superpowers/plans/2026-04-14-sensitive-keys-server.md b/docs/superpowers/plans/2026-04-14-sensitive-keys-server.md
index 19be34fd..3856cd7c 100644
--- a/docs/superpowers/plans/2026-04-14-sensitive-keys-server.md
+++ b/docs/superpowers/plans/2026-04-14-sensitive-keys-server.md
@@ -13,12 +13,12 @@
## Task 1: Core — SensitiveKeysConfig Record
**Files:**
-- Create: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/admin/SensitiveKeysConfig.java`
+- Create: `cameleer-server-core/src/main/java/com/cameleer/server/core/admin/SensitiveKeysConfig.java`
- [ ] **Step 1: Create the config record**
```java
-package com.cameleer3.server.core.admin;
+package com.cameleer.server.core.admin;
import java.util.List;
@@ -33,7 +33,7 @@ public record SensitiveKeysConfig(List keys) {
- [ ] **Step 2: Commit**
```bash
-git add cameleer3-server-core/src/main/java/com/cameleer3/server/core/admin/SensitiveKeysConfig.java
+git add cameleer-server-core/src/main/java/com/cameleer/server/core/admin/SensitiveKeysConfig.java
git commit -m "feat: add SensitiveKeysConfig record"
```
@@ -42,14 +42,14 @@ git commit -m "feat: add SensitiveKeysConfig record"
## Task 2: Core — SensitiveKeysRepository Interface
**Files:**
-- Create: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/admin/SensitiveKeysRepository.java`
+- Create: `cameleer-server-core/src/main/java/com/cameleer/server/core/admin/SensitiveKeysRepository.java`
- [ ] **Step 1: Create the repository interface**
Follow the `ThresholdRepository` pattern exactly.
```java
-package com.cameleer3.server.core.admin;
+package com.cameleer.server.core.admin;
import java.util.Optional;
@@ -62,7 +62,7 @@ public interface SensitiveKeysRepository {
- [ ] **Step 2: Commit**
```bash
-git add cameleer3-server-core/src/main/java/com/cameleer3/server/core/admin/SensitiveKeysRepository.java
+git add cameleer-server-core/src/main/java/com/cameleer/server/core/admin/SensitiveKeysRepository.java
git commit -m "feat: add SensitiveKeysRepository interface"
```
@@ -71,13 +71,13 @@ git commit -m "feat: add SensitiveKeysRepository interface"
## Task 3: Core — SensitiveKeysMerger (TDD)
**Files:**
-- Create: `cameleer3-server-core/src/main/java/com/cameleer3/server/core/admin/SensitiveKeysMerger.java`
-- Create: `cameleer3-server-core/src/test/java/com/cameleer3/server/core/admin/SensitiveKeysMergerTest.java`
+- Create: `cameleer-server-core/src/main/java/com/cameleer/server/core/admin/SensitiveKeysMerger.java`
+- Create: `cameleer-server-core/src/test/java/com/cameleer/server/core/admin/SensitiveKeysMergerTest.java`
- [ ] **Step 1: Write failing tests**
```java
-package com.cameleer3.server.core.admin;
+package com.cameleer.server.core.admin;
import org.junit.jupiter.api.Test;
@@ -149,13 +149,13 @@ class SensitiveKeysMergerTest {
- [ ] **Step 2: Run tests to verify they fail**
-Run: `mvn test -pl cameleer3-server-core -Dtest=SensitiveKeysMergerTest -Dsurefire.failIfNoSpecifiedTests=false`
+Run: `mvn test -pl cameleer-server-core -Dtest=SensitiveKeysMergerTest -Dsurefire.failIfNoSpecifiedTests=false`
Expected: compilation error — `SensitiveKeysMerger` does not exist
- [ ] **Step 3: Write implementation**
```java
-package com.cameleer3.server.core.admin;
+package com.cameleer.server.core.admin;
import java.util.ArrayList;
import java.util.List;
@@ -204,14 +204,14 @@ public final class SensitiveKeysMerger {
- [ ] **Step 4: Run tests to verify they pass**
-Run: `mvn test -pl cameleer3-server-core -Dtest=SensitiveKeysMergerTest`
+Run: `mvn test -pl cameleer-server-core -Dtest=SensitiveKeysMergerTest`
Expected: all 8 tests PASS
- [ ] **Step 5: Commit**
```bash
-git add cameleer3-server-core/src/main/java/com/cameleer3/server/core/admin/SensitiveKeysMerger.java
-git add cameleer3-server-core/src/test/java/com/cameleer3/server/core/admin/SensitiveKeysMergerTest.java
+git add cameleer-server-core/src/main/java/com/cameleer/server/core/admin/SensitiveKeysMerger.java
+git add cameleer-server-core/src/test/java/com/cameleer/server/core/admin/SensitiveKeysMergerTest.java
git commit -m "feat: add SensitiveKeysMerger with case-insensitive union dedup"
```
@@ -220,17 +220,17 @@ git commit -m "feat: add SensitiveKeysMerger with case-insensitive union dedup"
## Task 4: App — PostgresSensitiveKeysRepository
**Files:**
-- Create: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresSensitiveKeysRepository.java`
+- Create: `cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresSensitiveKeysRepository.java`
- [ ] **Step 1: Create the repository**
Follow `PostgresThresholdRepository` pattern exactly.
```java
-package com.cameleer3.server.app.storage;
+package com.cameleer.server.app.storage;
-import com.cameleer3.server.core.admin.SensitiveKeysConfig;
-import com.cameleer3.server.core.admin.SensitiveKeysRepository;
+import com.cameleer.server.core.admin.SensitiveKeysConfig;
+import com.cameleer.server.core.admin.SensitiveKeysRepository;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.jdbc.core.JdbcTemplate;
@@ -290,7 +290,7 @@ public class PostgresSensitiveKeysRepository implements SensitiveKeysRepository
- [ ] **Step 2: Commit**
```bash
-git add cameleer3-server-app/src/main/java/com/cameleer3/server/app/storage/PostgresSensitiveKeysRepository.java
+git add cameleer-server-app/src/main/java/com/cameleer/server/app/storage/PostgresSensitiveKeysRepository.java
git commit -m "feat: add PostgresSensitiveKeysRepository"
```
@@ -299,14 +299,14 @@ git commit -m "feat: add PostgresSensitiveKeysRepository"
## Task 5: App — SensitiveKeysAdminController
**Files:**
-- Create: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/SensitiveKeysAdminController.java`
-- Create: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/SensitiveKeysRequest.java`
-- Create: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/SensitiveKeysResponse.java`
+- Create: `cameleer-server-app/src/main/java/com/cameleer/server/app/controller/SensitiveKeysAdminController.java`
+- Create: `cameleer-server-app/src/main/java/com/cameleer/server/app/dto/SensitiveKeysRequest.java`
+- Create: `cameleer-server-app/src/main/java/com/cameleer/server/app/dto/SensitiveKeysResponse.java`
- [ ] **Step 1: Create the request DTO**
```java
-package com.cameleer3.server.app.dto;
+package com.cameleer.server.app.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;
@@ -324,7 +324,7 @@ public record SensitiveKeysRequest(
- [ ] **Step 2: Create the response DTO**
```java
-package com.cameleer3.server.app.dto;
+package com.cameleer.server.app.dto;
import java.util.List;
@@ -337,24 +337,24 @@ public record SensitiveKeysResponse(
- [ ] **Step 3: Create the controller**
```java
-package com.cameleer3.server.app.controller;
+package com.cameleer.server.app.controller;
-import com.cameleer3.common.model.ApplicationConfig;
-import com.cameleer3.server.app.dto.CommandGroupResponse;
-import com.cameleer3.server.app.dto.SensitiveKeysRequest;
-import com.cameleer3.server.app.dto.SensitiveKeysResponse;
-import com.cameleer3.server.app.storage.PostgresApplicationConfigRepository;
-import com.cameleer3.server.core.admin.AuditCategory;
-import com.cameleer3.server.core.admin.AuditResult;
-import com.cameleer3.server.core.admin.AuditService;
-import com.cameleer3.server.core.admin.SensitiveKeysConfig;
-import com.cameleer3.server.core.admin.SensitiveKeysMerger;
-import com.cameleer3.server.core.admin.SensitiveKeysRepository;
-import com.cameleer3.server.core.agent.AgentInfo;
-import com.cameleer3.server.core.agent.AgentRegistryService;
-import com.cameleer3.server.core.agent.AgentState;
-import com.cameleer3.server.core.agent.CommandReply;
-import com.cameleer3.server.core.agent.CommandType;
+import com.cameleer.common.model.ApplicationConfig;
+import com.cameleer.server.app.dto.CommandGroupResponse;
+import com.cameleer.server.app.dto.SensitiveKeysRequest;
+import com.cameleer.server.app.dto.SensitiveKeysResponse;
+import com.cameleer.server.app.storage.PostgresApplicationConfigRepository;
+import com.cameleer.server.core.admin.AuditCategory;
+import com.cameleer.server.core.admin.AuditResult;
+import com.cameleer.server.core.admin.AuditService;
+import com.cameleer.server.core.admin.SensitiveKeysConfig;
+import com.cameleer.server.core.admin.SensitiveKeysMerger;
+import com.cameleer.server.core.admin.SensitiveKeysRepository;
+import com.cameleer.server.core.agent.AgentInfo;
+import com.cameleer.server.core.agent.AgentRegistryService;
+import com.cameleer.server.core.agent.AgentState;
+import com.cameleer.server.core.agent.CommandReply;
+import com.cameleer.server.core.agent.CommandType;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import io.swagger.v3.oas.annotations.Operation;
@@ -527,15 +527,15 @@ public class SensitiveKeysAdminController {
- [ ] **Step 4: Verify compilation**
-Run: `mvn clean compile -pl cameleer3-server-core,cameleer3-server-app`
+Run: `mvn clean compile -pl cameleer-server-core,cameleer-server-app`
Expected: BUILD SUCCESS
- [ ] **Step 5: Commit**
```bash
-git add cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/SensitiveKeysRequest.java
-git add cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/SensitiveKeysResponse.java
-git add cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/SensitiveKeysAdminController.java
+git add cameleer-server-app/src/main/java/com/cameleer/server/app/dto/SensitiveKeysRequest.java
+git add cameleer-server-app/src/main/java/com/cameleer/server/app/dto/SensitiveKeysResponse.java
+git add cameleer-server-app/src/main/java/com/cameleer/server/app/controller/SensitiveKeysAdminController.java
git commit -m "feat: add SensitiveKeysAdminController with fan-out support"
```
@@ -544,18 +544,18 @@ git commit -m "feat: add SensitiveKeysAdminController with fan-out support"
## Task 6: Enhance ApplicationConfigController — Merge Global Keys
**Files:**
-- Modify: `cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/ApplicationConfigController.java`
+- Modify: `cameleer-server-app/src/main/java/com/cameleer/server/app/controller/ApplicationConfigController.java`
-The GET endpoint must return `globalSensitiveKeys` and `mergedSensitiveKeys` so the UI can render read-only global pills. The PUT push must merge before sending to agents. Since `ApplicationConfig` lives in `cameleer3-common`, we cannot add fields to it directly. Instead, we wrap the response.
+The GET endpoint must return `globalSensitiveKeys` and `mergedSensitiveKeys` so the UI can render read-only global pills. The PUT push must merge before sending to agents. Since `ApplicationConfig` lives in `cameleer-common`, we cannot add fields to it directly. Instead, we wrap the response.
- [ ] **Step 1: Create AppConfigResponse DTO**
-Create `cameleer3-server-app/src/main/java/com/cameleer3/server/app/dto/AppConfigResponse.java`:
+Create `cameleer-server-app/src/main/java/com/cameleer/server/app/dto/AppConfigResponse.java`:
```java
-package com.cameleer3.server.app.dto;
+package com.cameleer.server.app.dto;
-import com.cameleer3.common.model.ApplicationConfig;
+import com.cameleer.common.model.ApplicationConfig;
import java.util.List;
@@ -653,22 +653,22 @@ private ApplicationConfig cloneWithMergedKeys(ApplicationConfig source, List attributes` field. This requires changes to the PostgreSQL ingestion pipeline (store attributes from agent-submitted `RouteExecution`/`ProcessorExecution`), the detail service (reconstruct attributes), and the OpenSearch indexing (index attributes for search results).
3. **Add `TEST_EXPRESSION` to `CommandType`** enum.
4. **Enhance `CommandAckRequest`** — add an optional `data` field (`String`, JSON) to carry structured results (currently only `status` + `message`). The test-expression endpoint needs the result value from the ACK.
@@ -228,12 +228,12 @@ No new components required. Uses existing: Modal, DataTable, Badge, Toggle, Sele
- `pages/Admin/AppConfigDetailPage.tsx` — restructure to 3 sections, traces & taps merged table, route recording table, compress success badge
- `pages/Admin/AppConfigDetailPage.module.css` — updated section styles
-### Backend (cameleer3-server-app/)
+### Backend (cameleer-server-app/)
- `controller/ApplicationConfigController.java` — add test-expression endpoint
- `dto/CommandAckRequest.java` — add optional `data` field
- `controller/AgentCommandController.java` — support CompletableFuture-based ACK for test-expression
-### Backend (cameleer3-server-core/)
+### Backend (cameleer-server-core/)
- `agent/CommandType.java` — add TEST_EXPRESSION
- `detail/ExecutionDetail.java` — add attributes field
- `detail/ProcessorNode.java` — add attributes field
diff --git a/docs/superpowers/specs/2026-03-27-execution-overlay-design.md b/docs/superpowers/specs/2026-03-27-execution-overlay-design.md
index da5357ef..583c41af 100644
--- a/docs/superpowers/specs/2026-03-27-execution-overlay-design.md
+++ b/docs/superpowers/specs/2026-03-27-execution-overlay-design.md
@@ -36,7 +36,7 @@ Build an `ExecutionDiagram` wrapper component that overlays execution data onto
### Iteration fields on ProcessorNode
-The `ProcessorExecution` model in `cameleer3-common` has iteration tracking fields (`loopIndex`, `loopSize`, `splitIndex`, `splitSize`, `multicastIndex`), but the server's storage layer and API response model do not surface them. The following changes are needed:
+The `ProcessorExecution` model in `cameleer-common` has iteration tracking fields (`loopIndex`, `loopSize`, `splitIndex`, `splitSize`, `multicastIndex`), but the server's storage layer and API response model do not surface them. The following changes are needed:
**Storage:**
- Add columns to `processor_records` table: `loop_index`, `loop_size`, `split_index`, `split_size`, `multicast_index` (all nullable integers)
diff --git a/docs/superpowers/specs/2026-03-27-interactive-process-diagram-design.md b/docs/superpowers/specs/2026-03-27-interactive-process-diagram-design.md
index 19e6ff7b..8f15b7cc 100644
--- a/docs/superpowers/specs/2026-03-27-interactive-process-diagram-design.md
+++ b/docs/superpowers/specs/2026-03-27-interactive-process-diagram-design.md
@@ -37,9 +37,9 @@ Add optional `direction` query parameter to diagram render endpoints.
### Files
-- `cameleer3-server-app/.../diagram/ElkDiagramRenderer.java` — accept direction param, map to ELK `Direction.RIGHT` (LR) or `Direction.DOWN` (TB)
-- `cameleer3-server-core/.../diagram/DiagramRenderer.java` — update interface to accept direction
-- `cameleer3-server-app/.../controller/DiagramRenderController.java` — add `@RequestParam(defaultValue = "LR") String direction` to render endpoints
+- `cameleer-server-app/.../diagram/ElkDiagramRenderer.java` — accept direction param, map to ELK `Direction.RIGHT` (LR) or `Direction.DOWN` (TB)
+- `cameleer-server-core/.../diagram/DiagramRenderer.java` — update interface to accept direction
+- `cameleer-server-app/.../controller/DiagramRenderController.java` — add `@RequestParam(defaultValue = "LR") String direction` to render endpoints
- `ui/src/api/queries/diagrams.ts` — pass `direction` query param to API calls; also update `DiagramLayout` edge type to match backend `PositionedEdge` serialization: `{ sourceId, targetId, label?, points: number[][] }` (currently defines `{ from?, to? }` which is missing `points` and `label`)
### Behavior
diff --git a/docs/superpowers/specs/2026-03-28-navigation-redesign-design.md b/docs/superpowers/specs/2026-03-28-navigation-redesign-design.md
index 32480344..0c7a2d2d 100644
--- a/docs/superpowers/specs/2026-03-28-navigation-redesign-design.md
+++ b/docs/superpowers/specs/2026-03-28-navigation-redesign-design.md
@@ -4,7 +4,7 @@
## Context
-The Cameleer3 UI was redesigned from page-based routing to a scope-based model with three content tabs. The Process Diagram is the major USP for the Apache Camel community.
+The Cameleer UI was redesigned from page-based routing to a scope-based model with three content tabs. The Process Diagram is the major USP for the Apache Camel community.
## Core Model
@@ -130,7 +130,7 @@ Default `/` redirects to `/exchanges`.
## What Differentiates from njams
-1. **Three-tab model** — njams interleaves everything; Cameleer3 separates concerns
+1. **Three-tab model** — njams interleaves everything; Cameleer separates concerns
2. **Inline KPI metrics** — compact stats in the tab bar with trend indicators
3. **State-based selection** — exchange selection via local state, not URL navigation (preserves search)
4. **Browser history integration** — Back/Forward restores exchange selection
diff --git a/docs/superpowers/specs/2026-03-31-append-only-execution-protocol.md b/docs/superpowers/specs/2026-03-31-append-only-execution-protocol.md
index 431f1c00..0a9fbeaa 100644
--- a/docs/superpowers/specs/2026-03-31-append-only-execution-protocol.md
+++ b/docs/superpowers/specs/2026-03-31-append-only-execution-protocol.md
@@ -68,9 +68,9 @@ Event 2: {type: "EXECUTION_COMPLETED", executionId: "abc", duration: 250, output
- More flexible: supports any number of state transitions (RUNNING -> PAUSED -> RUNNING -> COMPLETED)
- Natural fit for event sourcing architectures
-### Option C: Hybrid (Current Cameleer3-Server Approach)
+### Option C: Hybrid (Current Cameleer-Server Approach)
-Keep the two-phase protocol but handle merging at the server application layer. This is what cameleer3-server implements today with the `ExecutionAccumulator`:
+Keep the two-phase protocol but handle merging at the server application layer. This is what cameleer-server implements today with the `ExecutionAccumulator`:
- RUNNING POST -> hold in `ConcurrentHashMap` (no DB write)
- COMPLETED POST -> merge with RUNNING in-memory -> single INSERT to DB
diff --git a/docs/superpowers/specs/2026-03-31-clickhouse-migration-design.md b/docs/superpowers/specs/2026-03-31-clickhouse-migration-design.md
index 2e7ad45e..d31f7b55 100644
--- a/docs/superpowers/specs/2026-03-31-clickhouse-migration-design.md
+++ b/docs/superpowers/specs/2026-03-31-clickhouse-migration-design.md
@@ -5,7 +5,7 @@ PostgreSQL retained only for RBAC, config, and audit log.
## Context
-Cameleer3-server currently uses three storage systems:
+Cameleer-server currently uses three storage systems:
- **PostgreSQL/TimescaleDB**: executions, processor_executions, agent_metrics (hypertables), agent_events, route_diagrams, plus RBAC/config/audit tables. Continuous aggregates for dashboard statistics.
- **OpenSearch**: executions-YYYY-MM-DD indices (full-text search on bodies/headers/errors), logs-YYYY-MM-DD indices (application log storage with 7-day retention).
@@ -34,7 +34,7 @@ This architecture has scaling limits: three systems to operate, data duplication
These are features NOT available in the open-source version:
-| Constraint | Impact on Cameleer3 |
+| Constraint | Impact on Cameleer |
|------------|---------------------|
| No SharedMergeTree | No elastic compute scaling; must size nodes up-front. Acceptable for self-hosted. |
| No BM25 relevance scoring | Search returns matches without ranking. Acceptable for observability (want all matches, not ranked). |
diff --git a/docs/superpowers/specs/2026-04-02-admin-context-separation-design.md b/docs/superpowers/specs/2026-04-02-admin-context-separation-design.md
index 30acd08d..2d23805c 100644
--- a/docs/superpowers/specs/2026-04-02-admin-context-separation-design.md
+++ b/docs/superpowers/specs/2026-04-02-admin-context-separation-design.md
@@ -1,6 +1,6 @@
# Composable Sidebar with Accordion & Collapse
-**Issue:** [#112](https://gitea.siegeln.net/cameleer/cameleer3-server/issues/112)
+**Issue:** [#112](https://gitea.siegeln.net/cameleer/cameleer-server/issues/112)
**Date:** 2026-04-02
**Scope:** Design system refactor + server UI migration
@@ -346,7 +346,7 @@ This is a two-repo change:
- Update barrel exports
- Bump version
-2. **Server UI migration** (cameleer3-server repo):
+2. **Server UI migration** (cameleer-server repo):
- Move tree-building functions to local utils
- Rewrite sidebar composition in `LayoutShell` using new compound API
- Add accordion logic for admin mode
diff --git a/docs/superpowers/specs/2026-04-02-route-state-protocol-extension.md b/docs/superpowers/specs/2026-04-02-route-state-protocol-extension.md
index db492acf..e5456b9a 100644
--- a/docs/superpowers/specs/2026-04-02-route-state-protocol-extension.md
+++ b/docs/superpowers/specs/2026-04-02-route-state-protocol-extension.md
@@ -194,7 +194,7 @@ for (AgentEvent event : events) {
The agent detects route state changes using Camel's `EventNotifier` mechanism:
```java
-// In the Cameleer3 agent (cameleer3 repo)
+// In the Cameleer agent (cameleer repo)
public class RouteStateEventNotifier extends EventNotifierSupport {
@Override
@@ -264,7 +264,7 @@ Agent boots
3. Update `RouteStateRegistry` from both sources
4. Remove ACK-based inference from `AgentCommandController` (heartbeat/events are authoritative)
-### Phase 2: Agent-side (cameleer3 repo)
+### Phase 2: Agent-side (cameleer repo)
1. Add `RouteStateEventNotifier` to detect state changes
2. Maintain local `routeStates` map
3. Include `routeStates` in heartbeat payload
diff --git a/docs/superpowers/specs/2026-04-03-deploy-demo-design.md b/docs/superpowers/specs/2026-04-03-deploy-demo-design.md
index 19049ef6..b6e9e961 100644
--- a/docs/superpowers/specs/2026-04-03-deploy-demo-design.md
+++ b/docs/superpowers/specs/2026-04-03-deploy-demo-design.md
@@ -2,7 +2,7 @@
## Goal
-Standalone demo prototype: upload a Camel JAR, build a container image with the cameleer3 monitoring agent injected, deploy to k3s, and see full observability appear in cameleer3-server.
+Standalone demo prototype: upload a Camel JAR, build a container image with the cameleer monitoring agent injected, deploy to k3s, and see full observability appear in cameleer-server.
## Project
@@ -35,7 +35,7 @@ Deploy Service (Spring Boot 3, Java 21, port 8082)
│
├─► Gitea Container Registry (images)
├─► k3s cluster / cameleer-demo namespace (workloads)
- └─► cameleer3-server (agents auto-register via bootstrap token)
+ └─► cameleer-server (agents auto-register via bootstrap token)
```
## No Auth
@@ -49,11 +49,11 @@ Generated Dockerfile per app:
```dockerfile
FROM eclipse-temurin:21-jre-alpine
-ADD https://gitea.siegeln.net/api/packages/cameleer/maven/com/cameleer3/cameleer3-agent/1.0-SNAPSHOT/cameleer3-agent-1.0-SNAPSHOT.jar /opt/cameleer/agent.jar
+ADD https://gitea.siegeln.net/api/packages/cameleer/maven/com/cameleer/cameleer-agent/1.0-SNAPSHOT/cameleer-agent-1.0-SNAPSHOT.jar /opt/cameleer/agent.jar
COPY app.jar /opt/app/app.jar
-ENV CAMELEER_SERVER_URL=http://cameleer3-server.cameleer.svc:8081
+ENV CAMELEER_SERVER_URL=http://cameleer-server.cameleer.svc:8081
ENV CAMELEER_APP_NAME=
ENV CAMELEER_AUTH_TOKEN=
@@ -68,7 +68,7 @@ Each app gets a Deployment in the `cameleer-demo` namespace:
- Resource requests/limits from user config (defaults: 250m/256Mi requests, 500m/512Mi limits)
- User-provided env vars injected into the container spec
-- No Service or Ingress (apps only need outbound access to cameleer3-server)
+- No Service or Ingress (apps only need outbound access to cameleer-server)
- Labels: `app.kubernetes.io/managed-by: cameleer-deploy`, `cameleer/app-name: `
## Data Model (In-Memory)
@@ -101,7 +101,7 @@ On GET /api/apps, reconcile status with actual K8s pod phase via kubectl. On sta
| Column | Content |
|--------|---------|
-| Name | Clickable → cameleer3-server exchanges page |
+| Name | Clickable → cameleer-server exchanges page |
| Status | Badge: Running / Pending / Failed / Building |
| Image | Image tag (mono text) |
| Resources | CPU/Memory limits |
@@ -124,7 +124,7 @@ All components from @cameleer/design-system. CSS modules for layout.
## Configuration
Deploy service env vars:
-- `CAMELEER_SERVER_URL` — cameleer3-server URL for agent registration (default: `http://cameleer3-server.cameleer.svc:8081`)
+- `CAMELEER_SERVER_URL` — cameleer-server URL for agent registration (default: `http://cameleer-server.cameleer.svc:8081`)
- `CAMELEER_BOOTSTRAP_TOKEN` — bootstrap token for agent registration
- `CAMELEER_REGISTRY` — container registry prefix (default: `gitea.siegeln.net/cameleer/demo-apps`)
- `CAMELEER_AGENT_MAVEN_URL` — URL for agent snapshot JAR
@@ -139,7 +139,7 @@ Deploy service env vars:
- Container: Docker (multi-stage build)
- Deploy: k3s at 192.168.50.86, namespace `cameleer-demo`
- Registry: Gitea container registry
-- Agent: cameleer3-agent 1.0-SNAPSHOT from Gitea Maven registry
+- Agent: cameleer-agent 1.0-SNAPSHOT from Gitea Maven registry
## Out of Scope
diff --git a/docs/superpowers/specs/2026-04-04-multitenancy-design.md b/docs/superpowers/specs/2026-04-04-multitenancy-design.md
index 821d6ee8..91256de6 100644
--- a/docs/superpowers/specs/2026-04-04-multitenancy-design.md
+++ b/docs/superpowers/specs/2026-04-04-multitenancy-design.md
@@ -5,7 +5,7 @@
## Context
-Cameleer3 Server is being integrated into a SaaS platform (cameleer-saas). The server must support multiple tenants sharing PostgreSQL and ClickHouse while guaranteeing strict data isolation. Each tenant gets their own cameleer3-server instance. Environments (dev/staging/prod) are a first-class concept within each tenant.
+Cameleer Server is being integrated into a SaaS platform (cameleer-saas). The server must support multiple tenants sharing PostgreSQL and ClickHouse while guaranteeing strict data isolation. Each tenant gets their own cameleer-server instance. Environments (dev/staging/prod) are a first-class concept within each tenant.
## Decisions
@@ -32,13 +32,13 @@ Tenant (customer org)
## Architecture
```
-Tenant "Acme" ──► cameleer3-server (TENANT_ID=acme)
+Tenant "Acme" ──► cameleer-server (TENANT_ID=acme)
├─ PG schema: tenant_acme
├─ CH writes: tenant_id='acme'
├─ Agents: env=dev, env=prod
└─ In-memory: registry, catalog, SSE
-Tenant "Beta" ──► cameleer3-server (TENANT_ID=beta)
+Tenant "Beta" ──► cameleer-server (TENANT_ID=beta)
├─ PG schema: tenant_beta
├─ CH writes: tenant_id='beta'
└─ ...
@@ -335,9 +335,9 @@ prod
## 7. What the SaaS Shell Must Do
-The cameleer3-server does NOT manage tenants. The SaaS shell (cameleer-saas) is responsible for:
+The cameleer-server does NOT manage tenants. The SaaS shell (cameleer-saas) is responsible for:
-1. **Provisioning**: Create PG schema `tenant_{id}`, generate per-tenant bootstrap token, start cameleer3-server container with `CAMELEER_TENANT_ID={id}` and PG URL pointing to the schema
+1. **Provisioning**: Create PG schema `tenant_{id}`, generate per-tenant bootstrap token, start cameleer-server container with `CAMELEER_TENANT_ID={id}` and PG URL pointing to the schema
2. **Routing**: Route agent and UI traffic to the correct server instance (by tenant)
3. **Lifecycle**: Start/stop/upgrade tenant server instances
4. **Auth**: Issue JWTs with tenant claims (via Logto), configure ForwardAuth
@@ -346,7 +346,7 @@ The cameleer3-server does NOT manage tenants. The SaaS shell (cameleer-saas) is
| Area | Change | Complexity |
|------|--------|------------|
-| Agent protocol (cameleer3-common) | Add `environmentId` to registration + heartbeat | Low |
+| Agent protocol (cameleer-common) | Add `environmentId` to registration + heartbeat | Low |
| Server config | `TenantProperties` bean, PG schema URL | Low |
| ClickHouse schema | Add `environment` column, update ORDER BY/PARTITION BY | Medium |
| ClickHouse stores (8 files) | Replace hardcoded `"default"` with injected tenant ID, add environment | Medium |
diff --git a/docs/superpowers/specs/2026-04-05-logto-oidc-resource-server-design.md b/docs/superpowers/specs/2026-04-05-logto-oidc-resource-server-design.md
index c77c646c..34da4044 100644
--- a/docs/superpowers/specs/2026-04-05-logto-oidc-resource-server-design.md
+++ b/docs/superpowers/specs/2026-04-05-logto-oidc-resource-server-design.md
@@ -2,7 +2,7 @@
## Context
-Cameleer3 Server uses Authentik as its OIDC provider for external identity federation. The SaaS platform (cameleer-saas) has adopted Logto as its identity provider. To align the stack:
+Cameleer Server uses Authentik as its OIDC provider for external identity federation. The SaaS platform (cameleer-saas) has adopted Logto as its identity provider. To align the stack:
1. **Replace Authentik with Logto** — self-hosted Logto in the K8s cluster, replacing the Authentik deployment
2. **Add OIDC resource server support** — the server must accept Logto access tokens (asymmetric JWT, ES384) in addition to its own internal HMAC JWTs, so the SaaS platform can call server APIs using M2M tokens
@@ -43,7 +43,7 @@ Self-hosted Logto deployment:
## Part 2: Server — OIDC Resource Server Support
### Change 1: Add dependency
-**File:** `cameleer3-server-app/pom.xml`
+**File:** `cameleer-server-app/pom.xml`
```xml
@@ -53,7 +53,7 @@ Self-hosted Logto deployment:
```
### Change 2: Add OIDC properties
-**File:** `cameleer3-server-app/src/main/resources/application.yml`
+**File:** `cameleer-server-app/src/main/resources/application.yml`
```yaml
security:
@@ -196,7 +196,7 @@ Update PUT handler default: `rolesClaim` from `realm_access.roles` to `roles`.
| `deploy/authentik.yaml` | Delete |
| `deploy/logto.yaml` | Create |
| `.gitea/workflows/ci.yml` | Modify (Authentik -> Logto) |
-| `cameleer3-server-app/pom.xml` | Modify (add dependency) |
+| `cameleer-server-app/pom.xml` | Modify (add dependency) |
| `application.yml` | Modify (add OIDC properties) |
| `SecurityProperties.java` | Modify (add fields) |
| `SecurityConfig.java` | Modify (build decoder, pass to filter) |
diff --git a/docs/superpowers/specs/2026-04-08-docker-orchestration-design.md b/docs/superpowers/specs/2026-04-08-docker-orchestration-design.md
index f51edf41..94fca23d 100644
--- a/docs/superpowers/specs/2026-04-08-docker-orchestration-design.md
+++ b/docs/superpowers/specs/2026-04-08-docker-orchestration-design.md
@@ -109,7 +109,7 @@ traefik.enable=true
traefik.http.routers.{svc}.rule=PathPrefix(`/{envSlug}/{appSlug}/`)
traefik.http.routers.{svc}.entrypoints=websecure
traefik.http.services.{svc}.loadbalancer.server.port={appPort}
-managed-by=cameleer3-server
+managed-by=cameleer-server
cameleer.app={appSlug}
cameleer.environment={envSlug}
```
@@ -257,7 +257,7 @@ Plus all entries from `customEnvVars` in the resolved config.
`@Component` that starts a persistent Docker event stream on `@PostConstruct`.
-- Filters for containers with label `managed-by=cameleer3-server`
+- Filters for containers with label `managed-by=cameleer-server`
- Listens for events: `die`, `oom`, `stop`, `start`
- On `die`/`oom`: looks up deployment by container ID, updates replica status to `DEAD`, recomputes deployment status (RUNNING → DEGRADED → FAILED)
- On `start`: updates replica status to `RUNNING` (handles Docker restart policy recoveries)
@@ -330,7 +330,7 @@ Same fields as create page, plus visible in read-only mode when not editing.
## New/Modified Components Summary
-### Core module (cameleer3-server-core)
+### Core module (cameleer-server-core)
- `ResolvedContainerConfig` — new record with all typed fields
- `ConfigMerger` — pure function, three-layer merge
@@ -338,7 +338,7 @@ Same fields as create page, plus visible in read-only mode when not editing.
- `DeploymentStatus` — add `DEGRADED`, `STOPPING`
- `Deployment` — add `targetState`, `deploymentStrategy`, `replicaStates`, `deployStage`
-### App module (cameleer3-server-app)
+### App module (cameleer-server-app)
- `DockerRuntimeOrchestrator` — apply full config (memory reserve, CPU limit, exposed ports, restart policy)
- `DockerNetworkManager` — new component, lazy network creation + container attachment
diff --git a/docs/superpowers/specs/2026-04-09-ui-consistency-fix-design.md b/docs/superpowers/specs/2026-04-09-ui-consistency-fix-design.md
index 7aa05c7a..4b62a941 100644
--- a/docs/superpowers/specs/2026-04-09-ui-consistency-fix-design.md
+++ b/docs/superpowers/specs/2026-04-09-ui-consistency-fix-design.md
@@ -3,7 +3,7 @@
# UI Consistency Fix — Design Spec
**Date:** 2026-04-09
-**Goal:** Bring the cameleer3-server UI to consistent design system usage — eliminate CSS duplication, hardcoded colors, inline styles, and native HTML where DS components exist.
+**Goal:** Bring the cameleer-server UI to consistent design system usage — eliminate CSS duplication, hardcoded colors, inline styles, and native HTML where DS components exist.
**Source:** `UI-CONSISTENCY-AUDIT.md` (same repo, same date)
---
diff --git a/docs/superpowers/specs/2026-04-09-ux-polish-design.md b/docs/superpowers/specs/2026-04-09-ux-polish-design.md
index e8e682e2..8f9471fe 100644
--- a/docs/superpowers/specs/2026-04-09-ux-polish-design.md
+++ b/docs/superpowers/specs/2026-04-09-ux-polish-design.md
@@ -6,7 +6,7 @@
## Context
-Comprehensive Playwright-driven audit of the live Cameleer3 UI (build 69dcce2, 60+ screenshots) combined with the existing UI_FINDINGS.md visual audit (2026-03-25) and 16 open Gitea issues. Three code-level audits performed: layout consistency (CSS modules), interaction patterns (dialogs, buttons, toasts), and design system adoption.
+Comprehensive Playwright-driven audit of the live Cameleer UI (build 69dcce2, 60+ screenshots) combined with the existing UI_FINDINGS.md visual audit (2026-03-25) and 16 open Gitea issues. Three code-level audits performed: layout consistency (CSS modules), interaction patterns (dialogs, buttons, toasts), and design system adoption.
Audit artifacts in `audit/`:
- `monitoring-pages-findings.md` — exchanges, dashboard, runtime, deployments, command palette, dark mode
@@ -314,7 +314,7 @@ Single highest-impact fix — affects every page.
### 4.4 Agent Name Truncation
-**Problem:** Raw K8s pod names like `8c0affadb860-1` or `cameleer3-backend-7c778f488c-2c2pc-1`.
+**Problem:** Raw K8s pod names like `8c0affadb860-1` or `cameleer-backend-7c778f488c-2c2pc-1`.
**Fix:**
- Use agent `displayName` if set at registration
diff --git a/docs/superpowers/specs/2026-04-11-infrastructure-endpoint-visibility-design.md b/docs/superpowers/specs/2026-04-11-infrastructure-endpoint-visibility-design.md
index a20c763c..37c18a56 100644
--- a/docs/superpowers/specs/2026-04-11-infrastructure-endpoint-visibility-design.md
+++ b/docs/superpowers/specs/2026-04-11-infrastructure-endpoint-visibility-design.md
@@ -2,7 +2,7 @@
**Date:** 2026-04-11
**Status:** Approved
-**Scope:** cameleer3-server + cameleer-saas
+**Scope:** cameleer-server + cameleer-saas
---
@@ -113,7 +113,7 @@ returns 404 and the page shows its existing error state.
The SaaS platform sits on the same Docker network as PostgreSQL and ClickHouse.
It already has their connection URLs in `ProvisioningProperties` (`datasourceUrl`
-for cameleer3 PostgreSQL, `clickhouseUrl` for ClickHouse). It already uses raw
+for cameleer PostgreSQL, `clickhouseUrl` for ClickHouse). It already uses raw
JDBC (`DriverManager.getConnection()`) for tenant data cleanup in
`TenantDataCleanupService`. The infrastructure dashboard uses the same pattern.
diff --git a/docs/superpowers/specs/2026-04-12-runtime-type-detection-design.md b/docs/superpowers/specs/2026-04-12-runtime-type-detection-design.md
index 7cea210a..d2aeb643 100644
--- a/docs/superpowers/specs/2026-04-12-runtime-type-detection-design.md
+++ b/docs/superpowers/specs/2026-04-12-runtime-type-detection-design.md
@@ -6,7 +6,7 @@ The server constructs Docker container entrypoints for deployed apps, but curren
- **Spring Boot**: `-cp app.jar org.springframework.boot.loader.launch.PropertiesLauncher` with `-Dloader.path` for the log appender
- **Quarkus JVM**: `-jar app.jar` (appender is a compiled-in Maven dependency)
-- **Plain Java**: `-cp app.jar:/app/cameleer3-log-appender.jar `
+- **Plain Java**: `-cp app.jar:/app/cameleer-log-appender.jar `
- **Native** (Quarkus native): no JVM, just run the binary directly (agent compiled in at build time)
Users also need a way to pass custom command-line arguments (JVM flags, system properties, or native binary args).
@@ -64,9 +64,9 @@ New class `RuntimeDetector` in the core module. Pure function: takes a file path
| Type | Entrypoint |
|------|-----------|
-| `SPRING_BOOT` | `exec java -javaagent:/app/agent.jar -Dloader.path=/app/cameleer3-log-appender.jar {customArgs} -cp {jarPath} org.springframework.boot.loader.launch.PropertiesLauncher` |
+| `SPRING_BOOT` | `exec java -javaagent:/app/agent.jar -Dloader.path=/app/cameleer-log-appender.jar {customArgs} -cp {jarPath} org.springframework.boot.loader.launch.PropertiesLauncher` |
| `QUARKUS` | `exec java -javaagent:/app/agent.jar {customArgs} -jar {jarPath}` |
-| `PLAIN_JAVA` | `exec java -javaagent:/app/agent.jar -cp {jarPath}:/app/cameleer3-log-appender.jar {customArgs} {mainClass}` |
+| `PLAIN_JAVA` | `exec java -javaagent:/app/agent.jar -cp {jarPath}:/app/cameleer-log-appender.jar {customArgs} {mainClass}` |
| `NATIVE` | `exec {jarPath} {customArgs}` |
All entrypoints are wrapped in `sh -c "..."` for consistent execution. `jarPath` is resolved per mount strategy (volume mount uses the original path, bind mount uses `/app/app.jar`).
diff --git a/docs/superpowers/specs/2026-04-14-container-startup-log-capture-design.md b/docs/superpowers/specs/2026-04-14-container-startup-log-capture-design.md
index 7deb4651..8942618d 100644
--- a/docs/superpowers/specs/2026-04-14-container-startup-log-capture-design.md
+++ b/docs/superpowers/specs/2026-04-14-container-startup-log-capture-design.md
@@ -27,7 +27,7 @@ void stopLogCaptureByApp(String appSlug, String envSlug);
### ContainerLogForwarder
-**Package:** `com.cameleer3.server.app.runtime` (Docker-specific, alongside `DockerRuntimeOrchestrator`, `DockerEventMonitor`, etc.)
+**Package:** `com.cameleer.server.app.runtime` (Docker-specific, alongside `DockerRuntimeOrchestrator`, `DockerEventMonitor`, etc.)
**Responsibilities:**
- Manages active capture sessions in a `ConcurrentHashMap` keyed by container ID
diff --git a/docs/superpowers/specs/2026-04-14-sensitive-keys-server-design.md b/docs/superpowers/specs/2026-04-14-sensitive-keys-server-design.md
index 58a3432a..d2a47f76 100644
--- a/docs/superpowers/specs/2026-04-14-sensitive-keys-server-design.md
+++ b/docs/superpowers/specs/2026-04-14-sensitive-keys-server-design.md
@@ -100,7 +100,7 @@ No new tables. Uses existing PostgreSQL schema.
### Per-App Keys
-Stored in `application_config.config_val` as part of the existing `ApplicationConfig` JSONB. The `sensitiveKeys` field (added by the agent team in `cameleer3-common`) stores only the per-app additions.
+Stored in `application_config.config_val` as part of the existing `ApplicationConfig` JSONB. The `sensitiveKeys` field (added by the agent team in `cameleer-common`) stores only the per-app additions.
## Fan-Out on Global Change
@@ -137,7 +137,7 @@ When admin PUTs global keys with `pushToAgents=true`:
### No Schema Migration Required
-Uses existing `server_config` table (JSONB key-value store). The `sensitiveKeys` field on `ApplicationConfig` is added by the agent team in `cameleer3-common` — the server just reads/writes it as part of the existing JSONB blob.
+Uses existing `server_config` table (JSONB key-value store). The `sensitiveKeys` field on `ApplicationConfig` is added by the agent team in `cameleer-common` — the server just reads/writes it as part of the existing JSONB blob.
## Audit
diff --git a/docs/ui-mocks/camel-developer-review.md b/docs/ui-mocks/camel-developer-review.md
index ac17413c..38a81330 100644
--- a/docs/ui-mocks/camel-developer-review.md
+++ b/docs/ui-mocks/camel-developer-review.md
@@ -1,4 +1,4 @@
-# Cameleer3 Dashboard Review -- Senior Camel Developer Perspective
+# Cameleer Dashboard Review -- Senior Camel Developer Perspective
**Reviewer**: Senior Apache Camel Developer (10+ years, Java DSL / Spring Boot)
**Artifact reviewed**: `mock-v2-light.html` -- Operations Dashboard (v2 synthesis)
diff --git a/docs/ui-mocks/mock-design-expert.html b/docs/ui-mocks/mock-design-expert.html
index 9b9bdcab..1a10f44d 100644
--- a/docs/ui-mocks/mock-design-expert.html
+++ b/docs/ui-mocks/mock-design-expert.html
@@ -1,6 +1,6 @@
- cameleer3
+ cameleer
/
Operations Console
diff --git a/docs/ui-mocks/mock-usability-expert.html b/docs/ui-mocks/mock-usability-expert.html
index 4b13374c..e71dd6b9 100644
--- a/docs/ui-mocks/mock-usability-expert.html
+++ b/docs/ui-mocks/mock-usability-expert.html
@@ -3,7 +3,7 @@
-Cameleer3 — Usability Expert Mock
+Cameleer — Usability Expert Mock
@@ -97,7 +97,7 @@
/* ─── Reset ─── */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
-/* ─── Design Tokens (matching existing Cameleer3 theme) ─── */
+/* ─── Design Tokens (matching existing Cameleer theme) ─── */
:root {
--bg-deep: #060a13;
--bg-base: #0a0e17;
@@ -1147,7 +1147,7 @@ tr.exec-row:focus-visible {
☰
- cameleer3
+ cameleer
🔍
diff --git a/docs/ui-mocks/mock-v2-dark.html b/docs/ui-mocks/mock-v2-dark.html
index 7a4eac5d..087daeb8 100644
--- a/docs/ui-mocks/mock-v2-dark.html
+++ b/docs/ui-mocks/mock-v2-dark.html
@@ -1,6 +1,6 @@