Skip to content

sync: port the platform's chart changes since the seed (build hosts, OCR keys, azure-cli cask, operator README, TolerantYaml) - #4

Merged
rbuergi merged 1 commit into
mainfrom
sync/chart-from-core-main
Oct 25, 2026
Merged

rbuergi merged 1 commit into
mainfrom
sync/chart-from-core-main

Conversation

@rbuergi

@rbuergi rbuergi commented Oct 25, 2026

Copy link
Copy Markdown
Contributor

The platform's chart is frozen (owner decision): this repository is the chart's only home, and the platform's copy is deleted by Systemorph/MeshWeaver#7127. Until now both copies were live. #1 seeded this repository from the platform at fdcbc25983. The platform's copy then moved on, and this one gained its own fixes (#2, #3). Two pipelines baked hosting-operator:main, one from each copy, so :main flapped between them. This PR brings this repository level with the platform at 16b9902f03 (its origin/main when this was cut) and keeps every fix that is only here.

Ported from the platform (fdcbc25983..16b9902f03, every commit that touched the seeded paths)

Platform PR What came across
Systemorph/MeshWeaver#7143 The standing build hosts: templates/build-host/, the buildHosts values block, the networkpolicies write verbs in operator-rbac.yaml, test-build-hosts.sh with its testdata, the invariants combination and the chart-gate step.
Systemorph/MeshWeaver#7159 The build-host pods select workload=ci-build, the label the CI node pools carry.
Systemorph/MeshWeaver#7184 The OCR ConfigMap keys Ocr__Engine and Ocr__HttpService__Endpoint. deploy/ocr itself is a service image, not chart material, and stays in the platform.
Systemorph/MeshWeaver#7170 memex-local: azure-cli is a cask now, so the formula no longer depends on it. This fixes the macOS brew job, which #1 listed as red before the move.
Systemorph/MeshWeaver#7119 The hosting-operator README: the image is published by MeshWeaver.Plugins. It is rewritten for this repository: the tag is <plugins7>-<core7>-<deploy7>, and the old :<core sha7> tags belong to the platform repository. The platform's homebrew.yml comment now points at its new memex-local.yml; here it points at the Linux job in the same file.
Systemorph/MeshWeaver#7180 The ConfigMap guards read helm's render with the platform's TolerantYaml (a MeshWeaver.Yaml project reference) instead of YamlDotNet.

The guard-test changes from Systemorph/MeshWeaver#7111 and its siblings (RepoPaths) are the platform's own plumbing. They are not ported, because the guards here resolve paths through ChartRoots.

Deliberately not ported (agreed with the owner of the build-host work): Systemorph/MeshWeaver#7189 (the build-cache claim) and the chart half of Systemorph/MeshWeaver#7191 (versioned build hosts). Both land here directly, on top of this PR.

Kept from this repository (conflicts resolved by intent)

A red this PR also clears

Systemorph/MeshWeaver#7125 moved Memex.Portal.Shared to MeshWeaver.Plugins. It merged after this repository's last green guards run. Against the platform's current main, the guards project failed to build: MSB9008 … Memex.Portal.Shared.csproj does not exist and CS0234. The reference is dropped here. SetupProbeEndpointsTest (1 test) leaves this repository, because its subject is now in MeshWeaver.Plugins, which has its own copy (src/Memex.Portal.Shared.Test/SetupProbeEndpointsTest.cs). The guard floor goes from 88 to 87.

Follow-up outside this PR: that MeshWeaver.Plugins copy still reads the PLATFORM's deploy/helm. It must read this repository's chart before #7127 deletes the platform copy.

Verified locally

  • Render parity: helm v4.2.4 is installed locally (CI uses v3.16.3). Every one of the platform's 26 check-chart-invariants.sh value combinations was rendered with the platform's chart (origin/main) and with this branch's chart, using each repository's own values files. 25 of 26 renders are byte-identical. The one difference is the values.registry.example.yaml combination. That difference is fix: the job-runner cannot start the operator; no default registry validator; examples in public files #2's deliberate change: the public example overlay names registry.example.com, exampleregistrystore, example-vault and portal.example.com instead of real fleet values. It also moves the dependent checksum/config hashes. Nothing else differs.
  • Chart scripts, run with MW_PLATFORM_ROOT set to a platform export at 16b9902f03:
    • check-chart-invariants.sh: all 26 combinations render self-consistently, and all 15 refusal controls hold.
    • check-values-are-read.sh: 128 of 128 keys are read.
    • test-chart-drift-compare.sh, test-chart-drift-render.sh, test-crash-dump-retention.sh (11 cases) and test-artifact-store-jobs.sh (23 cases) pass.
    • test-build-hosts.sh: both channels render, all 7 refusals hold, and build-run.py --self-test passes.
    • test-observability-storage.py and test-observability-values.py pass.
    • Negative control: test-build-hosts.sh without MW_PLATFORM_ROOT exits 1 and names the variable.
  • The guards build Release -warnaserror against the platform at 16b9902f03 with 0 warnings and 0 errors. The test exe reports Total: 87, Errors: 0, Failed: 0. Before this change, the same build failed with the two errors above.
  • deploy/homebrew/test/run-tests.sh: 94 passed, 0 failed. shellcheck on test-build-hosts.sh is clean.
  • Not run locally: the bundle-registry harness (needs docker) and test-jobrunner-admission.py (needs cel-python). This PR changes neither.

Refs rbuergi/Feedback/20261025-operator-main-flaps-between-core-and-deploy-charts.

🤖 Generated with Claude Code

…ository's own fixes

The seed (#1) copied the chart material from Systemorph/MeshWeaver at fdcbc25983. Since then the
platform's copy moved on while this one gained its own fixes (#2, #3), and two pipelines baked
`hosting-operator:main` from the two copies. The platform's chart is now frozen; this repository is
its only home. Ported from the platform (fdcbc25983..16b9902f03):

- #7143 the standing build hosts: templates/build-host/, buildHosts values, the networkpolicies
  write verbs in operator-rbac.yaml, test-build-hosts.sh + testdata, the invariants combination
  and the chart-gate step. The runner (build-run.py) and deploy/build-host/Dockerfile stay in the
  platform (main-cd builds that image), so test-build-hosts.sh reads them from the DECLARED
  platform checkout ($MW_PLATFORM_ROOT, fail-closed) and the chart-invariants job's sparse
  checkout gains deploy/build-host/Dockerfile.
- #7159 the build-host node label (in the build-host templates/values above).
- #7184 the OCR ConfigMap keys (Ocr__Engine, Ocr__HttpService__Endpoint).
- #7170 memex-local: azure-cli is a cask; the formula no longer depends on it.
- #7119 the operator image is published by MeshWeaver.Plugins (hosting-operator README), with this
  repository's tag shape and wording.
- #7180 the ConfigMap guards read helm's render with the platform's TolerantYaml, not YamlDotNet.

Also, because the guards build against the platform's main: #7125 moved Memex.Portal.Shared to
MeshWeaver.Plugins, so the reference is dropped and SetupProbeEndpointsTest (1 test) leaves with
its subject; the guard floor is 87.

Not ported: #7189 and the chart half of #7191 (they land here directly).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Copilot AI balanced review requested due to automatic review settings October 25, 2026 12:30
@rbuergi
rbuergi merged commit 3d80080 into main Oct 25, 2026
10 checks passed

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Build-host scaling, configuration validation, and drift comparison have unresolved correctness issues.

5 open issues
What changed in this PR

Synchronizes this deployment repository with the platform’s post-seed chart changes while preserving repository-specific fixes as the chart moves to its sole maintained home.

Changes:

  • Adds opt-in standing build hosts, supporting permissions, fixtures, and chart checks.
  • Adds OCR configuration keys and updates Azure CLI installation guidance.
  • Migrates ConfigMap guards to TolerantYaml, removes the relocated setup-host guard, and updates operator documentation.
File Description
test/​MeshWeaver.Deploy.ChartGuards/​SetupProbeEndpointsTest.cs Removes the guard relocated with its subject.
test/​MeshWeaver.Deploy.ChartGuards/​RecordConfigReachesTheConfigMapGuard.cs Checks parsed string types.
test/​MeshWeaver.Deploy.ChartGuards/​MeshWeaver.Deploy.ChartGuards.csproj Updates platform project dependencies.
test/​MeshWeaver.Deploy.ChartGuards/​AutomationSwitchesReachTheConfigMapGuard.cs Parses rendered YAML with TolerantYaml.
deploy/​homebrew/​README.md Documents separate Azure CLI installation.
deploy/​homebrew/​Formula/​memex-local.rb Removes the Azure CLI formula dependency.
deploy/​homebrew/​bin/​memex-local Recommends the Azure CLI cask when missing.
deploy/​helm/​values.yaml Adds disabled-by-default build-host settings.
deploy/​helm/​templates/​memex-portal/​config.yaml Emits explicitly configured OCR keys.
deploy/​helm/​templates/​build-host/​build-host.yaml Adds build-host workloads, isolation, and scaling.
deploy/​helm/​templates/​build-host/​_build-hosts.tpl Validates and normalizes build-host settings.
deploy/​aks/​scripts/​testdata/​values.build-hosts.yaml Exercises both build-host channels.
deploy/​aks/​scripts/​testdata/​values.build-hosts-tag-not-digest.yaml Covers rejection of mutable image tags.
deploy/​aks/​scripts/​testdata/​values.build-hosts-run-deadline-zero.yaml Covers rejection of a zero deadline.
deploy/​aks/​scripts/​testdata/​values.build-hosts-run-deadline-too-long.yaml Covers rejection of excessive deadlines.
deploy/​aks/​scripts/​testdata/​values.build-hosts-registry-credential.yaml Covers rejection of publication credentials.
deploy/​aks/​scripts/​testdata/​values.build-hosts-public-http.yaml Covers rejection of public HTTP endpoints.
deploy/​aks/​scripts/​testdata/​values.build-hosts-postgres-sidecar.yaml Covers rejection of shared PostgreSQL sidecars.
deploy/​aks/​scripts/​testdata/​values.build-hosts-localhost-no-profile.yaml Covers rejection of unnamed local profiles.
deploy/​aks/​scripts/​test-build-hosts.sh Checks build-host rendering and configuration refusals.
deploy/​aks/​scripts/​check-chart-invariants.sh Adds the build-host render combination.
deploy/​aks/​manifests/​hosting-operator/​README.md Documents operator ownership and image tagging.
deploy/​aks/​manifests/​hosting-operator/​operator-rbac.yaml Grants NetworkPolicy write permissions.
.github/​workflows/​homebrew.yml Corrects a comment about the Linux job.
.github/​workflows/​chart-guards.yml Adjusts the test floor for the relocated guard.
.github/​workflows/​chart-gate.yml Adds platform runner inputs and build-host checks.

Review effort: Balanced

{{- end -}}
{{- $as := ($b.artifactStore | default dict) -}}
{{- $asClaim := ($as.claimName | default "") -}}
{{- $asSpec := ($as.spec | default (ternary "file:/ci-artifacts" "" (ne $asClaim ""))) -}}
{{- end -}}
{{- end -}}
{{- $pv := required (printf "buildHosts.%s.platformVersion is required when that channel is enabled — the set the host stamps on every run it claims" $name) $c.platformVersion -}}
{{- $max := int ($c.maxReplicas | default 1) -}}
Comment on lines +283 to +286
apiVersion: "keda.sh/v1alpha1"
kind: "ScaledObject"
metadata:
name: "build-host-{{ $c.name }}-scaler"
- type: metrics-api
metricType: AverageValue
metadata:
url: "{{ $b.apiUrl }}/queue?channel={{ $c.name }}"
Comment thread deploy/helm/values.yaml
orasImage: "ghcr.io/oras-project/oras:v1.3.4@sha256:f7bc056d54d97baa399414ed5048ecc67c3371b750d4bbce1d871827a5758179"
# The tainted build pool (Build service §1.4): one build = one node.
nodeSelector:
workload: ci-build # the CI node pools (cibuildv6, cidind) carry workload=ci-build — the same label the ARC runners select
rbuergi added a commit that referenced this pull request Oct 25, 2026
…tform #7179) (#7)

Port of the platform's last change to its frozen copy of deploy/homebrew, made after #4 was cut:
core carries no GUI technology, so `memex-local e2e test` resolves a MeshWeaver.Plugins checkout
(MEMEX_PLUGINS_REPO, default beside the platform checkout) and runs its
src/MeshWeaver.Portal.E2E.Test from the platform checkout (whose global.json selects the
Microsoft.Testing.Platform runner), with -p:MeshWeaverRoot naming that checkout.

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@rbuergi
rbuergi deleted the sync/chart-from-core-main branch October 31, 2026 09:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants