docs(rfc-0013): make containerstdout deletion explicit in §7#170
Merged
Conversation
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) <noreply@anthropic.com> Signed-off-by: Tri Lam <tri@maydow.com>
5 tasks
trilamsr
added a commit
that referenced
this pull request
May 31, 2026
## What this PR does Implements RFC-0013 PR-A skeleton: tracecore can now build via the OpenTelemetry Collector Builder alongside the legacy `cmd/tracecore` binary. Both targets coexist for one PR cycle per RFC-0013 PR-A side-by-side requirement. - New: `builder-config.yaml` at repo root — pins core OTel v0.110.0 + contrib v0.110.0 receivers/processors/exporters/extensions. - New: `make build-ocb` Makefile target — `go run go.opentelemetry.io/collector/cmd/builder@v0.110.0 --config=builder-config.yaml` → `./_build/tracecore`. No new go.mod dep; builder runs as a tool. - Updated: `make build` help text marks legacy target as retired at v0.2.0 (per RFC-0013 PR-F). - Updated: `.gitignore` adds `/_build/` for OCB output dir. ## Deviations from RFC-0013 §1 example shape Two corrections were needed for the example config to actually build: 1. **`zpagesextension`**: RFC-0013 example put it under `contrib`, but the module path `github.com/open-telemetry/opentelemetry-collector-contrib/extension/zpagesextension` has no v0.110.0 tag. The module lives in core: `go.opentelemetry.io/collector/extension/zpagesextension`. Corrected here. 2. **`telemetrygeneratorreceiver`**: contrib path lists the receiver, but it has no published v0.110.0 tag (pseudo-module). Omitted here with an inline comment; will be added in PR-E with the `clockreceiver` swap. 3. **`tracecoreai/tracecore-components/*`** entries (ncclfrreceiver, rankjoinprocessor, patterndetectorprocessor): the separate module repo doesn't exist yet — created in PR-I (v0.2.0). Omitted from this skeleton. ## Doc cleanup (caught during self-review of #170) RFC-0013 §migration PR-K: removed stale `kineto` from the v0.2.0 delete list. Kineto was already deleted in PR-F per #168; it was double-listed because the RFC was drafted before #168 executed early deletion. PR-O retains the OTel Profiles GA re-evaluation hook. ## Smoke test ``` $ make build-ocb ... INFO builder/main.go:131 Compiled {"binary": "./_build/tracecore"} $ ./_build/tracecore --version tracecore version 0.1.0 $ ./_build/tracecore components # enumerates 5 receivers (filelog, journald, k8sobjects, otlp, prometheus) # + 4 processors (batch, transform, filter, k8sattributes) # + 4 exporters (otlphttp, debug, datadog, clickhouse) # + 3 extensions (filestorage, healthcheck, zpages) # with upstream stability tiers attached $ make build # legacy target still works $ ls -la tracecore _build/tracecore -rwxr-xr-x 50M tracecore -rwxr-xr-x 119M _build/tracecore ``` ## Release notes ```release-notes [FEATURE] Add `make build-ocb` target that assembles tracecore via the OpenTelemetry Collector Builder from `builder-config.yaml`. The legacy `make build` target continues to work; both binaries coexist for one PR cycle. ``` ## Test plan - [x] `make lint` — pass (pre-commit hook) - [x] `make test` — pass (pre-commit hook) - [x] `make build` — legacy binary builds - [x] `make build-ocb` — OCB binary builds, `--version` + `components` work - [x] Side-by-side: both binaries coexist with no conflicts --------- Signed-off-by: Tri Lam <tri@maydow.com> Co-authored-by: Tri Lam <tri@maydow.com>
6 tasks
trilamsr
added a commit
that referenced
this pull request
May 31, 2026
## What this PR does Bundles three RFC-0013 PR slices that have zero file overlap with each other. ### PR-C: release pipeline → goreleaser stack - New `.goreleaser.yaml`: linux/amd64 + linux/arm64 builds; reproducible via `SOURCE_DATE_EPOCH`; LDFLAGS shape matches the Makefile build target. - Rewritten `.github/workflows/release.yml`: invokes goreleaser, `anchore/sbom-action`, `sigstore/cosign-installer`, `slsa-framework/slsa-github-generator` (tag-pinned per SLSA OIDC subject identity requirement; all other actions SHA-pinned per repo security policy), `actions/attest-build-provenance`. - Old `release.yml` moved to `.github/workflows/archived/release.yml.legacy`. - Goreleaser builds the **legacy** `cmd/tracecore` binary; OCB-output migration deferred to PR-D (image build → ko), per inline comment in `.goreleaser.yaml`. ### PR-G + PR-H: RFC supersession + top-level docs alignment - Audit confirmed all 12 RFCs already carry the correct supersedence headers from prior pivot work (PRs #166/#168/#169/#170). Only two top-level docs needed alignment: - `NORTHSTARS.md` O1 caveat: replaced "own-binary architecture" assumption wording with OCB-distribution-posture wording; closed Open Question #1 by RFC-0013 ref. - `CHANGELOG.md`: appended pivot-wave-1 PR list (#166/#168/#169/#170/#171/#172/#173) citing PR-A as the prior step before this commit. - No edits needed to README/STRATEGY/PRINCIPLES/MILESTONES/CONTRIBUTING/AGENTS/docs/README — all already aligned. ### PR-E: clockreceiver swap — BLOCKED - `telemetrygeneratorreceiver` does not exist in `opentelemetry-collector-contrib` at any version. Verified against the Go module proxy, GitHub tree API at v0.95→v0.130, and the full receiver listing at v0.110.0 (94 receivers; no `telemetrygenerator`, `loadgen`, `mockreceiver`, `dummyreceiver`, or any `*generator*`). The RFC-0013 §1 example shape referenced it speculatively; it was never upstreamed. - `builder-config.yaml`: replaced the misleading "no v0.110.0 tag" omission comment with a verified TODO block describing the actual blocker (receiver doesn't exist anywhere) and decision rationale. - `bench/install/tracecore-values.yaml`: appended `[BLOCKED]` marker on the clockreceiver→telgen mapping; bench continues to use in-tree clockreceiver until PR-F deletes it (likely rewires to `hostmetricsreceiver`). ## Root cause (PR-E blocker) RFC-0013 §1 listed `telemetrygeneratorreceiver` as the swap target without verifying the receiver existed upstream. Reality: the OTel contrib repo has no such module path at any tag. PR-E cannot complete until either (a) the receiver lands upstream, or (b) a different replacement is chosen (e.g., `hostmetricsreceiver` for heartbeat semantics). Tracked in the in-file TODO block; revisit in PR-F (delete clockreceiver) or as a separate followup. ## Release notes ```release-notes [CHANGE] Release pipeline migrated to goreleaser + SBOM + SLSA provenance + cosign signing. The release.yml workflow now invokes goreleaser instead of building binaries directly. Operators consuming release artifacts: artifact shape (filename, archive contents, checksum file format) follows goreleaser defaults; see CHANGELOG.md for the migration note. ``` ## Test plan - [x] `make verify` runs and passes - [x] `make actionlint` passes (new release.yml workflow + suppression-block YAML valid) - [x] `make zizmor` passes (SLSA reusable-workflow tag-pin justified inline + accepted) - [x] `make build` (legacy) still works - [x] `make build-ocb` (OCB) still works - [ ] Goreleaser dry-run in CI on first push to a tag (gated until a tag exists) Signed-off-by: Tri Lam <tri@maydow.com> Co-authored-by: Tri Lam <tri@maydow.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Closes the implicit-vs-explicit gap in RFC-0013 that left containerstdout-related issues (#159, #160, #161, #162, #163) ambiguous on the v0.2.0 fate.
containerstdoutto the in-tree delete listcontainerstdout→filelogreceiver+ container stanza +file_storage(v0.2.0, pending pilot audit)containerstdoutin delete list; note that the M19 cross-signal join test re-homes toprocessor/rankjoinprocessorintegration suite againstfilelogreceiver+k8sobjectsreceiverinputsRoot cause
The §2 adoption matrix already lists
filelogreceiver + container stanza + file_storageas the replacement for container stdout, but §7 (the deletion table operators actually read for the release-boundary contract) did not include containerstdout. The ambiguity surfaced during issue triage: #159–#162 could not be cleanly closed as "outdated by RFC-0013" without an explicit §7 row. Issue #163 stays open with re-scoped title pointing the M19 join test atprocessor/rankjoinprocessor.Test plan
make lint(golangci-lint) — passmake test(go test -race ./...) — passmake build— pass🤖 Generated with Claude Code