Commit Graph

23 Commits

Author SHA1 Message Date
hsiegeln
7f0ceca8b1 docs(01-02): complete ingestion endpoints plan
- SUMMARY.md with 14 files, 3 commits, 11 integration tests
- STATE.md: Phase 1 complete (3/3 plans)
- ROADMAP.md: Phase 01 progress updated
- REQUIREMENTS.md: INGST-01, INGST-02, INGST-03 marked complete

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 12:16:46 +01:00
hsiegeln
8fe65f083c feat(01-02): implement ingestion REST controllers with backpressure
- ExecutionController: POST /api/v1/data/executions (single or array)
- DiagramController: POST /api/v1/data/diagrams (single or array)
- MetricsController: POST /api/v1/data/metrics (array)
- All return 202 Accepted or 503 with Retry-After when buffer full
- Fix duplicate IngestionConfig bean (remove @Configuration, use @EnableConfigurationProperties)
- Fix BackpressureIT timing by using batch POST and 60s flush interval
- All 11 integration tests green

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 12:13:27 +01:00
hsiegeln
d55ebc1f57 test(01-02): add failing integration tests for ingestion endpoints
- ExecutionControllerIT: single/array POST, flush verification, unknown fields
- DiagramControllerIT: single/array POST, flush verification
- MetricsControllerIT: POST metrics, flush verification
- BackpressureIT: buffer-full returns 503, buffered data not lost

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 12:10:49 +01:00
hsiegeln
17a18cf6da feat(01-02): add IngestionService, ClickHouse repositories, and flush scheduler
- IngestionService routes data to WriteBuffer instances (core module, plain class)
- ClickHouseExecutionRepository: batch insert with parallel processor arrays
- ClickHouseDiagramRepository: JSON storage with SHA-256 content-hash dedup
- ClickHouseMetricsRepository: batch insert for agent_metrics table
- ClickHouseFlushScheduler: scheduled drain with SmartLifecycle shutdown flush
- IngestionBeanConfig: wires WriteBuffer and IngestionService beans

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 12:08:36 +01:00
hsiegeln
ff0af0ef2f docs(01-03): complete API foundation plan
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 12:05:02 +01:00
hsiegeln
2d3fde3766 test(01-03): add integration tests for health, OpenAPI, protocol version, forward compat, and TTL
- HealthControllerIT: health returns 200, no protocol header needed, TTL verified
- OpenApiIT: api-docs returns OpenAPI spec, swagger UI accessible
- ProtocolVersionIT: missing/wrong header returns 400, correct header passes, excluded paths work
- ForwardCompatIT: unknown JSON fields do not cause deserialization errors
- Fix testcontainers version to 2.0.3 (docker-java 3.7.0 for Docker Desktop 29.x compat)
- Fix ClickHouse schema: TTL with toDateTime() cast, non-nullable error columns for tokenbf_v1

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 12:03:00 +01:00
hsiegeln
b8a4739f72 feat(01-03): add test infrastructure, protocol version interceptor, and app bootstrap
- AbstractClickHouseIT base class with Testcontainers ClickHouse and schema init
- ProtocolVersionInterceptor validates X-Cameleer-Protocol-Version:1 on data/agent paths
- WebConfig registers interceptor with path patterns, excludes health/docs
- Cameleer3ServerApplication with @EnableScheduling and component scanning
- application-test.yml with small buffer config for tests

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 11:53:31 +01:00
hsiegeln
b2501f2937 docs(01-01): complete ClickHouse infrastructure and WriteBuffer plan
- Create 01-01-SUMMARY.md with execution results
- Update STATE.md with plan progress and decisions
- Update REQUIREMENTS.md marking INGST-04, INGST-05, INGST-06 complete
- Update ROADMAP.md with phase 01 progress

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 11:51:14 +01:00
hsiegeln
cc1c082adb feat(01-01): add WriteBuffer, repository interfaces, and config classes
- WriteBuffer<T> with offer/offerBatch/drain and backpressure (all tests green)
- ExecutionRepository, DiagramRepository, MetricsRepository interfaces
- MetricsSnapshot record for agent metrics data
- IngestionConfig for buffer-capacity/batch-size/flush-interval-ms properties
- ClickHouseConfig exposing JdbcTemplate bean

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 11:49:25 +01:00
hsiegeln
f37009e380 test(01-01): add failing WriteBuffer unit tests
- Test offer/offerBatch/drain/isFull/size/capacity/remainingCapacity
- Tests fail because WriteBuffer class does not exist yet (TDD RED)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 11:47:50 +01:00
hsiegeln
96c52b88d1 feat(01-01): add ClickHouse dependencies, Docker Compose, schema, and app config
- Add clickhouse-jdbc, springdoc-openapi, actuator, testcontainers deps
- Add slf4j-api to core module
- Create Docker Compose with ClickHouse service on ports 8123/9000
- Create ClickHouse DDL: route_executions, route_diagrams, agent_metrics
- Configure application.yml with datasource, ingestion buffer, springdoc

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 11:47:20 +01:00
hsiegeln
5436c0a490 fix(01): revise plan 01-02 wave 2 to wave 3, add 01-03 dependency
Integration tests in 01-02 extend AbstractClickHouseIT from 01-03.
Both were wave 2 (parallel), causing potential compilation failure.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 11:43:57 +01:00
hsiegeln
da09e5fda7 fix(01): revise plans based on checker feedback
- Remove AbstractClickHouseIT and application-test.yml from Plan 01-01,
  move to Plan 01-03 Task 1 (reduces 01-01 from 15 to 13 files)
- Change Plan 01-02 Task 1 tdd="true" to tdd="false" (compile-only verify)
- Add DiagramRepository and MetricsRepository flush key_links to Plan 01-02
- Update VALIDATION.md: INGST-06 TTL maps to HealthControllerIT#ttlConfigured*
  instead of non-existent ClickHouseTtlIT

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 11:40:20 +01:00
hsiegeln
e808b567cd docs(01): create phase plan (3 plans, 2 waves)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 11:33:32 +01:00
hsiegeln
9ba1b839df docs(01): add phase 1 research and validation strategy
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 11:29:01 +01:00
hsiegeln
ef934743fb docs(phase-1): research ingestion pipeline and API foundation domain
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 11:27:59 +01:00
hsiegeln
7294f4be68 docs: create roadmap (4 phases, 32 requirements mapped)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 11:19:53 +01:00
hsiegeln
e11496242f docs: define v1 requirements (32 requirements, 6 categories)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 11:15:04 +01:00
hsiegeln
6f39e29707 docs: add domain research (stack, features, architecture, pitfalls)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 11:05:37 +01:00
hsiegeln
06a0fddc73 chore: add project config
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 10:57:28 +01:00
hsiegeln
e1a5d994a6 docs: initialize project
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 10:54:37 +01:00
hsiegeln
223e1fd279 Update Maven registry and repo references to cameleer org
Some checks failed
CI / build (push) Failing after 3s
Both repos transferred from claude user to cameleer organization.
Updated all Maven registry URLs and CLAUDE.md references.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 10:34:53 +01:00
hsiegeln
db17f02fcc Scaffold cameleer3-server project structure
Some checks failed
CI / build (push) Failing after 3s
Multi-module Maven project (server-core + server-app) with Spring Boot 3.4.3,
Gitea CI workflow, and dependency on cameleer3-common from Gitea Maven registry.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 10:06:17 +01:00