From 725ca838f73bcea64a786f8603b7a6105d670b5c Mon Sep 17 00:00:00 2001 From: Tri Lam Date: Sat, 30 May 2026 03:19:19 -0700 Subject: [PATCH] =?UTF-8?q?docs(rfc-0013):=20make=20containerstdout=20dele?= =?UTF-8?q?tion=20explicit=20in=20=C2=A77?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes the implicit-vs-explicit gap that left issues #159-#163 ambiguous on the containerstdout v0.2.0 fate: - §4 v0.2.0 row: add containerstdout to in-tree delete list - §7 deletion table: add row containerstdout → filelogreceiver + container stanza + file_storage (v0.2.0, pending pilot audit) - §migration PR-K: include containerstdout in delete list; note M19 cross-signal join test re-homes to processor/rankjoinprocessor integration suite against filelogreceiver + k8sobjectsreceiver inputs - Open Question #1: add M15 containerstdout to pilot-audit set (alongside M9 kernelevents, M10 k8sevents, M13 pyspy Phase 2) The §2 adoption matrix already implied this substitution; §7 deletion table is the authoritative source operators read for the release-boundary contract, so the explicit row is required. Co-Authored-By: Claude Opus 4.7 (1M context) Signed-off-by: Tri Lam --- docs/rfcs/0013-distro-first-pivot.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/rfcs/0013-distro-first-pivot.md b/docs/rfcs/0013-distro-first-pivot.md index 282b21ca..ea4d2763 100644 --- a/docs/rfcs/0013-distro-first-pivot.md +++ b/docs/rfcs/0013-distro-first-pivot.md @@ -117,7 +117,7 @@ The bundled Helm chart ships these mappings as a default OTTL pipeline. Operator | Release | Operator-visible breaks | Internal changes | |---|---|---| | **v0.1.0** | self-tel metric rename `tracecore.*` → `otelcol_*`; release-artifact provenance shape change (documented once) | OCB skeleton; upstream `componentstatus` adoption; release pipeline → goreleaser stack; image build → `ko`; `clockreceiver` → `telemetrygeneratorreceiver` | -| **v0.2.0** | ALL recipe-side receiver swaps. ONE migration guide. Helm values keys map old→new for one minor release with `NOTES.txt` deprecation warning. | Delete `components/receivers/{kernelevents,k8sevents,dcgm,kueue,clockreceiver}`; ship recipes for `filelog+container`, `journald+filelog+OTTL`, `k8sobjects+transform`, `prometheusreceiver` (dcgm-exporter + Kueue); receivers-only Go module split | +| **v0.2.0** | ALL recipe-side receiver swaps. ONE migration guide. Helm values keys map old→new for one minor release with `NOTES.txt` deprecation warning. | Delete `components/receivers/{kernelevents,k8sevents,dcgm,kueue,clockreceiver,containerstdout}`; ship recipes for `filelog+container`, `journald+filelog+OTTL`, `k8sobjects+transform`, `prometheusreceiver` (dcgm-exporter + Kueue); receivers-only Go module split | | **v0.3.0** | Python profiling: `tracecore_pyspy` PyPI helper deleted; operator deploys `parca-agent` DaemonSet via separate chart; security posture changes (CAP_SYS_PTRACE → CAP_SYS_ADMIN/BPF — review window) | Delete `components/receivers/pyspy/`, `python/tracecore_pyspy/`, `tools/pyspy-lint/`, `.github/workflows/{pyspy-integration,python-publish}.yml`. Kineto re-evaluated when OTel Profiles GA. | Pre-v0.1.0 receivers with zero pilot deployments → clean delete in v0.1.0. Receivers with ≥1 pilot deployment (check D6 NPS Discussion list before cutting v0.1.0) → one-version deprecation warn → delete in next minor. Pre-v0.1.0 there is no compat owed by SemVer; this policy is operator-courtesy, not contract. @@ -156,6 +156,7 @@ In-tree receivers deleted at v0.2.0 (or v0.1.0 if no pilots): | Path | Replacement | Cuts | |---|---|---| | `components/receivers/clockreceiver/` | `telemetrygeneratorreceiver` | v0.1.0 | +| `components/receivers/containerstdout/` | `filelogreceiver` + container stanza + `file_storage` extension | v0.2.0 (pending pilot audit per Open Question #1) | | `components/receivers/dcgm/` | `dcgm-exporter` + `prometheusreceiver` (recipe) | v0.1.0 (cgo stub never shipped real path) | | `components/receivers/k8sevents/` | `k8sobjectsreceiver` + OTTL transform | v0.2.0 | | `components/receivers/kernelevents/` | `journaldreceiver` + `filelogreceiver` + OTTL transform | v0.2.0 | @@ -217,7 +218,7 @@ Customers pin `tracecore-recipes` like a library. Their `values.yaml` does not g ## Open questions -1. **Pilot operator count.** Before cutting v0.1.0, audit D6 NPS Discussion + integration matrix users to determine whether any operator has deployed `M9 kernelevents`, `M10 k8sevents`, or `M13 pyspy Phase 2` in production. If zero: clean delete in v0.1.0. If ≥1: one-version deprecation warn (still under SemVer pre-1.0 policy, but operator-courtesy). +1. **Pilot operator count.** Before cutting v0.1.0, audit D6 NPS Discussion + integration matrix users to determine whether any operator has deployed `M9 kernelevents`, `M10 k8sevents`, `M13 pyspy Phase 2`, or `M15 containerstdout` in production. If zero: clean delete in v0.1.0. If ≥1: one-version deprecation warn (still under SemVer pre-1.0 policy, but operator-courtesy). 2. **NCCL FlightRecorder receiver homing.** The custom `ncclfrreceiver` belongs in `tracecore-components` (this is settled), but the upstream-contribution question — should we propose an OTel-contrib `ncclfrreceiver` instead — needs evaluation. NVIDIA has not picked this up; CNCF/OTel SIG may have appetite. Tracked as a v0.2 follow-up. 3. **Recipe-vs-binary versioning skew tolerance.** A recipe can pin a wider binary range than the binary supports. Need a values-validation gate in the chart that asserts `tracecore.minVersion` is satisfied. Tracked as a v0.1 follow-up. 4. **OCB build reproducibility.** Tracecore-specific: validate that OCB-generated `main.go` is byte-identical across CI runs given fixed `builder-config.yaml`. If not, file upstream issue and propose fix. Tracked as a v0.1 verification step. @@ -242,7 +243,7 @@ v0.2.0 sequencing: 1. **PR-I**: Receivers-only Go module `tracecoreai/tracecore-components` extracted. Migrate `ncclfr` + pattern detectors + custom OTTL processors. OCB manifest pulls via `gomod:`. 2. **PR-J**: Ship recipes: `filelogreceiver + container stanza + file_storage`, `journaldreceiver + filelogreceiver + OTTL transform`, `k8sobjectsreceiver + transform`, `prometheusreceiver` (Kueue + dcgm-exporter). Helm chart values old→new compat map with `NOTES.txt` deprecation warning. -3. **PR-K**: Delete `components/receivers/{kernelevents,k8sevents,kineto}`. Delete `.github/workflows/kernelevents-integration.yml`. Delete `.github/ISSUE_TEMPLATE/component-bug-kernelevents.yml`. +3. **PR-K**: Delete `components/receivers/{kernelevents,k8sevents,kineto,containerstdout}`. Delete `.github/workflows/kernelevents-integration.yml`. Delete `.github/ISSUE_TEMPLATE/component-bug-kernelevents.yml`. M19 cross-signal join test moves to `processor/rankjoinprocessor/` integration suite against filelogreceiver + k8sobjectsreceiver inputs. 4. **PR-L**: Migration guide in `docs/migration/v0.1-to-v0.2.md` covering every operator-visible change. v0.3.0 sequencing: