Skip to content

fix(supply-chain): replace the retired v7.23.0 publisher with v19.0.5 - #5422

Merged
devantler merged 4 commits into
mainfrom
claude/platform-approve-publisher-f5d078cc-5404
Nov 1, 2026
Merged

devantler merged 4 commits into
mainfrom
claude/platform-approve-publisher-f5d078cc-5404

Conversation

@devantler

@devantler devantler commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

🤖 Generated by the Agentic Engineer

Why

The platform's generic app-image rules admit at most two exact publisher revisions, so v7.23.0 held the slot every consumer needs to move on. Wedding-app 1.15.24 was published from the v8.0.0 workflow on 1 November (CD run 41318212102's referenced_workflows names 467f0758…), and Flux reads that source Ready and SourceVerified. Ascoachingogvaner moved earlier, so v7.23.0 signs nothing deployed.

What

  • Replaces 0c7b6c35… (v7.23.0) with af042c54… (v19.0.5) in the Tenant source rule, the admission policy and the node-pull rule. The set stays at exactly two revisions.
  • Replaces the same revision in the wedding-app and ascoachingogvaner approvals. Data-product-controller drops it and keeps v8.0.0 alone.
  • Regenerates the three consumer matchers, moves the pinned tenant hashes and records four ledger lines. Nothing is added or removed.
  • Tests now require 0c7b6c35… to be refused at every boundary and af042c54… to be accepted everywhere except the product documentation source.

This replaces the earlier approach on this branch, which added a third revision for v13.2.15.

Range review of the publisher: #5404. Business-site keeps v8.0.0, so business-site#370 stays held. Its tenant publisherRevision moves separately.

Validation

  • scripts/tests/test-publish-workflow-canonical-approvals.sh: 0 failures.
  • go test ./... in scripts/validate-eks-ci-role-policy: passes, after the ledger update.
  • write-publish-workflow-matchers.sh and its guard: all 6 consumers agree.
  • Not run locally: the WebApp compiler tests, which need the verified API-server assets. CI runs them.
  • Hashes were rendered locally with kubectl v1.37.1, not the approved v1.36.2. The required CI job is the authority.

After merge

  1. Read the deployed rules back and confirm wedding-app, ascoachingogvaner and business-site stay Ready and SourceVerified.
  2. Only then let wedding-app#450, ascoachingogvaner#354 and platform-tenant-template#272 move their pins, each at v19.0.5.

Part of #5404
Part of #5424

…eneric boundaries

The generic Tenant source rule, the app-image admission policy and the
node-pull rule accept devantler-tech/.github@f5d078cc (v13.2.15) beside
v8.0.0 and the deployed v7.23.0 signer. The publisher range was reviewed on
#5404. Per-consumer approvals and tenant pins are unchanged. The tenant RGD
fingerprint, ledger entry and content hash move accordingly.

Refs #5404

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@devantler

devantler commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor Author

🤖 Generated by the Agentic Engineer

Blocker: #5424 | upstream | last-verified 2026-10-31: The guard admits at most two exact maintained publisher revisions at the generic boundaries, and v7.23.0 still signs deployed wedding-app 1.15.23; ascoachingogvaner has moved off it (1.15.1 signed by v8.0.0). wedding-app already pins v8.0.0 but has cut no release since, and none is forced. Re-entry: once wedding-app deploys a release not signed by v7.23.0, replace 0c7b6c35 in this PR with the newest reviewed publisher (now v19.0.3, bd24a3e1) rather than adding a third revision.

devantler and others added 2 commits November 1, 2026 17:17
Takes main's content for every file the earlier third-revision approach changed; the replacement follows in its own commit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Wedding-app 1.15.24 now runs under the v8.0.0 signer, so v7.23.0 signs nothing deployed. The generic boundaries, wedding-app and ascoachingogvaner take v19.0.5 in its place, still at most two revisions.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@devantler devantler changed the title fix(supply-chain): admit the reviewed v13.2.15 app publisher at the generic boundaries fix(supply-chain): replace the retired v7.23.0 publisher with v19.0.5 Nov 1, 2026
@devantler

Copy link
Copy Markdown
Contributor Author

🤖 Generated by the Agentic Engineer

@codex review

@devantler

Copy link
Copy Markdown
Contributor Author

🤖 Generated by the Agentic Engineer

@coderabbitai review

@devantler devantler removed the blocked label Nov 1, 2026
@coderabbitai

coderabbitai Bot commented Nov 1, 2026 •

Copy link
Copy Markdown
Contributor
Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 1, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-11-01T16:29:57.312484Z 3ddd2c4 Manual request
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. 👍

Reviewed commit: 1830154a62

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

The two findings hash the whole nested source, which now names v19.0.5. Value reproduced by the same method that yields main's committed hash.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@devantler

Copy link
Copy Markdown
Contributor Author

🤖 Generated by the Agentic Engineer

@codex review

@coderabbitai

coderabbitai Bot commented Nov 1, 2026

Copy link
Copy Markdown
Contributor

Review in Change Stack →

No actionable comments were generated in the recent review.

Recent review info
Run configuration
Commits

Reviewing files that changed from the base of the PR and between e968573 and 1830154.

Files ignored due to path filters: 2
  • scripts/publish-workflow-canonical-approvals.tsv is excluded by !**/*.tsv
  • scripts/rgd-template-static-scan-baseline.tsv is excluded by !**/*.tsv
Files selected for processing: 13
  • k8s/bases/apps/ascoachingogvaner/oci-repository.yaml
  • k8s/bases/apps/wedding-app/oci-repository.yaml
  • k8s/bases/infrastructure/cluster-policies/best-practices/verify-app-images.yaml
  • k8s/bases/infrastructure/resource-graph-definitions/tenant/resource-graph-definition.yaml
  • k8s/providers/hetzner/apps/khoist-documentation/oci-repository.yaml
  • scripts/canonical-tenant-source-bindings.json
  • scripts/tenant-source-constructors.lib.sh
  • scripts/tests/test-publish-workflow-canonical-approvals.sh
  • scripts/tests/webapp-compiler/tenant_test.go
  • scripts/validate-eks-ci-role-policy/approved-surface-history.md
  • scripts/validate-eks-ci-role-policy/approved-surface.txt
  • scripts/validate-eks-ci-role-policy/main.go
  • talos/cluster/verify-first-party-images.yaml

Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.

Recent review details
Context from checks skipped due to timeout: 22
  • GitHub Check: CodeRabbit
  • GitHub Check: 🧪 Validate Manifests
  • GitHub Check: ⚖️ Validate Cluster Policies (tenant)
  • GitHub Check: ⚖️ Validate Cluster Policies (storage)
  • GitHub Check: 🔬 Validate Nested RGD Templates
  • GitHub Check: ⚖️ Validate Cluster Policies (observability)
  • GitHub Check: ⚖️ Validate Cluster Policies (placement)
  • GitHub Check: 🧪 Validate Independent Manifest Regressions (native)
  • GitHub Check: 🔐 Validate Flux Credential Bridge
  • GitHub Check: 🧩 Compile WebApp with pinned KRO
  • GitHub Check: ⚖️ Validate Cluster Policies (fixtures)
  • GitHub Check: ⚖️ Validate Cluster Policies (services)
  • GitHub Check: 🧩 Validate Helm Post-Renderers
  • GitHub Check: 🛟 Validate PodDisruptionBudget Selectors
  • GitHub Check: 🧪 Validate Independent Manifest Regressions (contracts)
  • GitHub Check: 🔐 Validate Publication Generator
  • GitHub Check: 🧪 Validate Complete Go Regressions
  • GitHub Check: 🔐 Validate Consumer Discovery Regressions
  • GitHub Check: 🔏 Validate Cosign Matcher Efficacy
  • GitHub Check: 🛡️ Validate Repository Guards
  • GitHub Check: Analyze (go)
  • GitHub Check: Analyze (go)
Additional context used
Code guidelines: 1
AGENTS.md — auto-discovered
Path-based instructions: 3
Source excerpt: Resources under `k8s/bases/infrastructure/` are **component-folder-first**: a component's HelmRelease/HelmRepository and its own CRs live together in a folder named after the component — `controllers//` in the con...

CodeRabbit inference engine (AGENTS.md)

Files:

  • k8s/bases/infrastructure/cluster-policies/best-practices/verify-app-images.yaml
  • k8s/bases/infrastructure/resource-graph-definitions/tenant/resource-graph-definition.yaml
Source excerpt: **Talos machine-config patches** (`talos/`, `talos-local/`) follow the same spirit: **one YAML document per file** and intent-describing `‹verb›-‹purpose›.yaml` names (e.g.

CodeRabbit inference engine (AGENTS.md)

Files:

  • talos/cluster/verify-first-party-images.yaml
Source excerpt: **Put a change in the layer that matches its scope** — edit `k8s/bases/` when it should hold for **every consumer of that resource**; add an overlay `patches/` fragment only for a genuine per-consumer difference.

CodeRabbit inference engine (AGENTS.md)

Files:

  • k8s/bases/infrastructure/cluster-policies/best-practices/verify-app-images.yaml
  • k8s/bases/apps/ascoachingogvaner/oci-repository.yaml
  • k8s/bases/apps/wedding-app/oci-repository.yaml
  • k8s/providers/hetzner/apps/khoist-documentation/oci-repository.yaml
  • k8s/bases/infrastructure/resource-graph-definitions/tenant/resource-graph-definition.yaml
Learnings: 1
Learning: 2026-07-03T03:44:11.507Z
Learnt from: devantler
Repo: devantler-tech/platform PR: 2399
File: k8s/bases/apps/ascoachingogvaner/oci-repository.yaml:25-26
Timestamp: 2026-07-03T03:44:11.507Z
Learning: In Flux `OCIRepository` manifests under `k8s/bases/**/oci-repository.yaml`, keep the existing house convention for `spec.serviceAccountRef.verify.matchOIDCIdentity` subject regexes to use an `@.+` ref suffix (i.e., match any ref) rather than tightening it to a specific SHA/tag pattern.

If a PR adds a transitional dual-subject entry for an ongoing migration (e.g., moving from `devantler-tech/reusable-workflows` to `devantler-tech/actions`), do not request tightening the ref matcher in that PR. Defer any ref-matcher tightening to a separate, focused follow-up PR that consistently tightens `matchOIDCIdentity` subject rules once each file returns to a single subject after migration cleanup.

Applied to files:

  • k8s/bases/apps/wedding-app/oci-repository.yaml
LanguageTool
scripts/validate-eks-ci-role-policy/approved-surface-history.md

[uncategorized] ~3988-~3988: Did you mean the adverb “anymore”?
Context: ...e625b(v7.23.0) signs nothing deployed any more: wedding-app 1.15.24 was published by...

(ANY_MORE)

Additional comments: 1
k8s/bases/infrastructure/cluster-policies/best-practices/verify-app-images.yaml: 1

77-77: Stability & Availability

Check the live wedding-app rollout before removing v7.23.0.

The policy now fails closed for new Pods and no longer accepts the v7.23.0 signer. If the Deployment still has a v1.15.23 Pod, its replacement can be denied. Source readiness and SourceVerified status do not establish Deployment rollout completion. Defer removing v7.23.0 until the Kustomization and Deployment report v1.15.24 with an accepted signer.

Walkthrough

Publisher subject rules and OCIRepository matchers replace revision 0c7b6c3509b73adbc7537e030935bb01987e625b with af042c540ce8db4d64add98c34b5c57691e0e812 in the applicable allowlists. Tests update the accepted and rejected identity cases. Approval history, rendered-surface digests, expected fingerprints, and the business-site constructor specification hash also change.

Merge Risk: Minimal · up to 18301

This change retires the v7.23.0 publisher revision and approves v19.0.5 across the tenant source rule, image-admission policy, node-pull rule and consumer matchers. No concrete defect was found. Before merging, confirm that the wedding-app Deployment has fully rolled out a release signed by an accepted publisher, and that the CI job for the rendered hashes passes.

Pre-merge checks: Passed 5
Check name Status Explanation
Title check Passed The title clearly and concisely identifies the main change: replacing the retired v7.23.0 publisher with v19.0.5 in supply-chain approvals.
Description check Passed The description directly explains the publisher revision replacement, affected policies and consumers, validation results, and post-merge actions.
Docstring Coverage Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentat…
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage

Explanation

Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentation-only edits and deletions within surviving functions are included; unchanged diff context and fully deleted functions are excluded. Analyzed 1 functions across 4 files. (9 skipped: 9 unsupported.)

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. More of your lovely PRs please.

Reviewed commit: 3ddd2c4586

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@devantler

Copy link
Copy Markdown
Contributor Author

🤖 Generated by the Agentic Engineer

Tried at head 3ddd2c458, as the tenant whose release must verify. I fed real publisher identities through the rules committed in this PR:

Publisher Admission rule Node-pull rule wedding-app ascoachingogvaner
467f0758 (v8.0.0, signs the deployed releases) accept accept accept accept
af042c54 (v19.0.5, the pending move) accept accept accept accept
0c7b6c35 (v7.23.0, retired) reject reject reject reject

The new rules keep accepting what is deployed, accept the next release, and refuse the retired signer.

Not exercised: a real release signed by v19.0.5, and the rules once deployed. Neither can exist before this merges, so the After merge steps in the description cover them.

@devantler
devantler marked this pull request as ready for review November 1, 2026 16:42
@devantler
devantler added this pull request to the merge queue Nov 1, 2026
Merged via the queue into main with commit 321998e Nov 1, 2026
55 checks passed
@devantler
devantler deleted the claude/platform-approve-publisher-f5d078cc-5404 branch November 1, 2026 21:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: ✅ Done

Development

Successfully merging this pull request may close these issues.

1 participant