Arch pivot: every o2r layer ships as an isolated unit (pkg + chart + container) published from this repo #45
Labels
No labels
burndown-2026-06
coherence-core
consult
headless
interactive
P0
P1
P2
P3
P4
No milestone
No project
No assignees
1 participant
Due date
No due date set.
Dependencies
No dependencies set.
Reference
coilyco-flight-deck/otel-a2a-relay#45
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Arch pivot: every layer ships as an isolated unit, published from inside this repo
Each o2r layer should be installable on its own as all three artifact types, published from
otel-a2a-relayitself:core(v0.3.0),channels(v0.1.0),arize_phoenix(v0.3.0),tempo_grafana(v0.3.0) are independently versioned, publishable workspace members.*/docker/docker-compose.ymlfiles only pull upstream images (phoenix/tempo/grafana); we need Dockerfiles that build o2r's own per-layer images.Supersedes / reverses prior decisions
## Deployand #25 put the Dockerfile + Helm chart + manifests in a separate repo (otel-a2a-relay-deploy). Decision (Kai, 2026-06-02): fold it back in. Dockerfiles + per-layer charts live here and publish from here;otel-a2a-relay-deploygets deprecated/retired. Main repo owns all three artifact types end to end. README## Deployneeds rewriting to match.Layers in scope
core(relay/protocol + the relay service itself),channels(Agent Channel, Postgres-backed),arize_phoenix,tempo_grafana.Hard dependency - registry sidequest
Container publish is blocked until there's a Docker registry to publish to. Sidequest: stand up a container registry on kai-server (file as its own issue, sequence it first for the docker leg). PyPI/package publish and Helm chart packaging are not blocked by this.
Related - WIP
The "otel viewer plugins" system is still WIP; per-layer packaging should leave room for it but it is not a blocker here.
Acceptance (rough)
## Deployrewritten;otel-a2a-relay-deploydeprecation noted.Correction: the registry sidequest is largely already done
The body flags container publish as blocked on "stand up a registry on kai-server." That's mostly already solved.
coilyco-flight-deck/infrastructureships an in-cluster OCI registry, committed infeat(registry): in-cluster OCI registry for GitHub-free deploys:infrastructure/deploy/registry.yml- namespaceregistry, NodePort30500-> registry pod:5000, 20Gi local-path PVC pinned to kai-server.192.168.0.194:30500(RFC1918 LAN IP, hardcode-safe). Insecure http; containerd told via/etc/rancher/k3s/registries.yaml, runner DinD via--insecure-registry.192.168.0.194:30500/<name-dashed>:<git-sha>.infrastructure/docs/k3s-deploy-notes.md§11. The Forgejo runner (kai-desktop-tower-wsl node) builds + pushes; kai-server's containerd pulls.So the docker leg is not blocked on a from-scratch registry. The remaining sidequest is only to verify the registry is live on the cluster (apply + the containerd insecure-mirror edit per the runbook) if it isn't already, then have o2r's per-layer Dockerfiles publish via a
.forgejo/workflows/build-publish-deploy.ymlfollowing the documented per-repo pattern (scopeddeployerServiceAccount + kubeconfig secret per app namespace).Net: drop the "build a registry" blocker; treat it as "adopt the existing homelab registry pattern."
Split into per-layer + cross-cutting issues
Registry confirmed live (kai-server,
registrypod Running 5d11h) - the docker leg has a target. Breakdown:Per-layer (each: container + chart; python pkg already ships):
Cross-cutting:
build-publish-deploypipeline (all three artifact types, path-filtered per layer) -> homelab registry## Deploy+ retireotel-a2a-relay-deploySuggested sequence: #46 (prove the full pkg+chart+container loop on the simplest service) -> #50 (generalize the pipeline) -> #47/#48/#49 in parallel -> #51 cleanup last.
Open decisions to settle in #50: python publish target (PyPI vs private index) and Helm distribution (OCI in the same registry vs packaged-chart artifact).
Added: historical-data import + Phoenix deferred
#48 arize_phoenix- deferred (Kai, skip Phoenix this pass), closed.o2r channel listdata, not Tempo traces. Depends on #47; one-time, not vendored.Architecture locked (Kai, 2026-06-02)
Final shape after the in-tree-vs-separate-repo and GitOps decisions. This comment is the source of truth; earlier comments are superseded where they conflict.
Where artifacts live
<layer>/chart/), versioned in lockstep with code, published as OCI artifacts to the kai-server registry. Not a separate chart repo.192.168.0.194:30500/<name>:<git-sha>).GitOps split
coilyco-bridge/deploybecomes a pure GitOps repo on ArgoCD - app-of-apps + per-env values that reference the OCI-published charts. It does not hold chart templates or Dockerfiles.deploy/services/otel-a2a-relay/{Dockerfile,chart/}(scaffolded last night) moves in-tree intootel-a2a-relay(relay ->core/chart/, #46).deploy/services/otel-a2a-relay/deploy/values + the ArgoCD Application stay indeploy. The "service repo stays unaware of deployment" philosophy in deploy's README is reversed - charts now live with code.Cross-cutting requirements
pg_dumpofagent_channels+agent_channel_eventsonly, into the packaged channels Postgres at cutover. Source store probed + verified.Children
deploy)deployto pure GitOps; rewrite o2r README## Deploycoilyco-bridge/deploy) - stand up ArgoCD app-of-apps + learning ramp#48 Phoenixdeferred · #53 parkedClosing. o2r is archived in the June 2026 surface reduction - an optional agent channel, unused autonomously. Handover doctrine moves to human-mediated.