|
18 | 18 | > **No SEP rule:** Every warning, clippy lint, doc-test failure, or bug |
19 | 19 | > encountered during this remediation is OUR problem. We own every line we |
20 | 20 | > touch AND every pre-existing issue in files we modify. Fix it there and then. |
| 21 | +> |
| 22 | +> **Trust but verify:** Plan assessments are hypotheses. Read actual code before |
| 23 | +> starting each app. Update the plan with what you find. If code contradicts |
| 24 | +> the plan, trust the code. |
| 25 | +> |
| 26 | +> **Release discipline:** CI pass ≠ done. EVERY project (rustlib + all dfe-*) |
| 27 | +> must be PUBLISHED (rustlib → crates.io, dfe-* → JFrog) before marking |
| 28 | +> complete. Push + CI + semantic-release tag + `hyperi-ci release <tag>` + |
| 29 | +> verify in registry. Can continue other work while waiting, but must track |
| 30 | +> and complete releases. |
21 | 31 |
|
22 | 32 | Phase 1 done (all 6 apps on rustlib >=2.4.3, ServiceRuntime, released). |
23 | 33 | Phase 2 plan: `docs/superpowers/plans/2026-04-03-dfe-phase2-deep-integration.md` |
24 | 34 |
|
25 | | -**Phase 2A: Evolve BatchEngine API (rustlib)** |
26 | | -- [ ] Async sink for run() / run_raw() (enables loader's async CH inserts) |
27 | | -- [ ] Optional ticker callback (enables flush timers inside engine loop) |
28 | | -- [ ] TransportReceiver impl for loader's TransportBackend (clean adapter) |
29 | | -- [ ] Publish rustlib with engine changes |
30 | | - |
31 | | -**Phase 2B: Per-App Integration** |
32 | | -- [ ] dfe-loader: engine.process_mid_tier() replaces MessageProcessor |
33 | | - - SIMD parse (sonic-rs), pre-route routing_field="_table", field interning |
34 | | - - Transform closure wraps existing pipeline (route→extract→enrich) |
35 | | - - BatchCoordinator stays (sequential buffer push, DLQ) |
36 | | - - Orchestrator select! loop stays (5 arms: shutdown, config, flush, schema, recv) |
37 | | -- [ ] dfe-transform-vrl: engine.process_mid_tier() replaces deser+VRL phases |
38 | | - - Benchmark: sonic_rs::Value → vrl::Value conversion cost first |
39 | | - - Single engine call replaces two pool.process_batch() calls |
40 | | - - Produce stays sequential (async I/O) |
41 | | -- [ ] dfe-archiver: engine.run_raw() or process_raw() + TopicResolver |
42 | | - - Pre-route routing_field="_destination", TopicResolver auto-discovery |
43 | | - - Flush timer as separate task (or engine ticker if evolved) |
44 | | -- [ ] dfe-receiver: BatchAccumulator for Splunk HEC only (additive) |
45 | | - - DO NOT replace zero-copy hot path (validation, routing, enrichment) |
46 | | - - Existing optimisations proven faster than generic alternatives |
47 | | -- [ ] dfe-fetcher: fan_out_async() + engine.process_raw() for post-fetch |
48 | | - - JoinSet in each Source impl (AWS/Azure/M365/GCP) |
49 | | - - Parallel enrich+filter via engine |
50 | | -- [ ] dfe-transform-vector: generate-artefacts only |
51 | | -- [ ] ALL apps: run `generate-artefacts` for deployment contract |
| 35 | +**Phase 2A: Evolve BatchEngine API (rustlib)** — DONE |
| 36 | +- [x] run_async() + run_raw_async(): async sink, commit tokens, optional ticker |
| 37 | +- [x] Doc-test fixes (No SEP: flat_env unsafe set_var, registry MyConfig) |
| 38 | +- [x] rustlib v2.4.4 published to crates.io |
| 39 | + |
| 40 | +**Phase 2B: Per-App Integration** — ALL CODE DONE, RELEASING `[IN PROGRESS]` |
| 41 | +- [x] dfe-loader: BatchEngine pre-route SIMD filtering + SOC2 audit |
| 42 | + - 592 tests pass (all against real ClickHouse). Publish pipeline running. |
| 43 | +- [x] dfe-receiver: process_batch() for HEC/OTLP/fluent/prometheus_rw |
| 44 | + - 408 tests pass. CI re-triggered, awaiting semantic-release tag. |
| 45 | +- [x] dfe-archiver: concurrent batch writes + parallel routing + SOC2 |
| 46 | + - 80 tests pass. Publish pipeline running. |
| 47 | +- [x] dfe-fetcher: concurrent within-source service fetching (AWS/Azure/M365/GCP) |
| 48 | + - 164 tests pass. Clippy fix pushed, CI re-running. |
| 49 | +- [x] dfe-transform-vrl: sonic-rs SIMD JSON parse (drop-in serde_json replacement) |
| 50 | + - 295 tests pass. CI running. |
| 51 | +- [x] dfe-transform-vector: no changes needed (subprocess wrapper) |
| 52 | +- [ ] ALL apps: verify released (rustlib → crates.io, dfe-* → JFrog) |
| 53 | + - rustlib v2.4.4: RELEASED to crates.io |
| 54 | + - dfe-loader v1.16.5: publish dispatched, pipeline running |
| 55 | + - dfe-archiver v1.6.2: publish dispatched, pipeline running |
| 56 | + - dfe-receiver: awaiting CI pass → semantic-release → publish |
| 57 | + - dfe-fetcher: awaiting CI pass → semantic-release → publish |
| 58 | + - dfe-transform-vrl: awaiting CI pass → semantic-release → publish |
52 | 59 |
|
53 | 60 | **Phase 1 DONE (all apps):** |
54 | 61 | - [x] Bump rustlib to >=2.4.3 |
@@ -79,24 +86,18 @@ Phase 2 plan: `docs/superpowers/plans/2026-04-03-dfe-phase2-deep-integration.md` |
79 | 86 | - [ ] Phase 3: dfe-transform-wasm, dfe-transform-elastic, dfe-transform-splunk |
80 | 87 | - [ ] Debug/trace logging increasing detail levels (all repos) |
81 | 88 |
|
82 | | -### Completed This Session |
83 | | - |
84 | | -- [x] **BatchEngine** — 15 commits, SIMD batch processing framework |
85 | | -- [x] **TopicResolver** — Kafka topic auto-discovery with suppression rules |
86 | | -- [x] **PipelineStats.filtered** counter |
87 | | -- [x] **AdaptiveWorkerPool.install()** exposure |
88 | | -- [x] **Prometheus recorder test fix** — test-safe MetricsManager |
89 | | -- [x] **Rustlib v2.4.3** published to crates.io |
90 | | -- [x] **clickhouse-rs schema-cache-strong** branch — 3 commits + Nullable(JSON) fix |
91 | | -- [x] **Upstream PR** ClickHouse/clickhouse-rs#414 |
92 | | -- [x] **dfe-loader** v1.16.4 — ServiceRuntime, TopicResolver deletion, schema cache fix, logging |
93 | | -- [x] **dfe-receiver** v1.14.8 — ServiceRuntime, logging, target symlink + orphan ci fix |
94 | | -- [x] **dfe-archiver** v1.6.1 — ServiceRuntime, logging, deployment contract fields |
95 | | -- [x] **dfe-fetcher** v1.1.8 — ServiceRuntime, logging, SensitiveString fix |
96 | | -- [x] **dfe-transform-vector** — ServiceRuntime, logging, SensitiveString fix |
97 | | -- [x] **dfe-transform-vrl** — rustlib bump, logging (CI pending) |
98 | | -- [x] **Target symlink fix** across 4 repos (receiver, archiver, fetcher, vrl) |
99 | | -- [x] **Orphan ci submodule** removed from dfe-receiver |
| 89 | +### Completed This Session (Phase 2 Deep Integration) |
| 90 | + |
| 91 | +- [x] **BatchEngine API evolution** — run_async(), run_raw_async(), ticker, doc-test fixes |
| 92 | +- [x] **Rustlib v2.4.4** published to crates.io |
| 93 | +- [x] **dfe-loader** — SIMD pre-route filtering, engine pool, SOC2 audit, clippy fixes |
| 94 | +- [x] **dfe-receiver** — process_batch() for HEC/OTLP/fluent/prometheus_rw batching |
| 95 | +- [x] **dfe-archiver** — concurrent batch writes via join_all, parallel routing, SOC2 |
| 96 | +- [x] **dfe-fetcher** — concurrent within-source service fetching (AWS/Azure/M365/GCP) |
| 97 | +- [x] **dfe-transform-vrl** — sonic-rs SIMD JSON parse (drop-in serde_json replacement) |
| 98 | +- [x] **Rust standards** — added useless .into() AI pitfall to RUST.md |
| 99 | +- [x] **No SEP fixes** — clippy warnings in loader tests, doc-test failures in rustlib, |
| 100 | + unused imports, missing semicolons, formatting across all repos |
100 | 101 |
|
101 | 102 | ### Completed Previous Sessions |
102 | 103 |
|
|
0 commit comments