Skip to content

Complete the reviewed v19.0.5 application-publisher migration #5404

Open
2 of 2 issues completed
Open

Description

@devantler

🤖 Generated by the Agentic Engineer

Current migration

Complete the application-publisher migration to the reviewed v19.0.5 revision af042c540ce8db4d64add98c34b5c57691e0e812. This is the selected replacement recorded in the range review below and merged Platform #5422. The separate v12/v13 request #5275 and v17.1.1 request #5595 are superseded by this one migration; those abandoned revisions do not each need a new approval.

The protected-source change is not the complete rollout. Keep this issue open until the deployed approval and actual consumer results are verified. #5424 retains signer-retirement and applied-identity evidence, including the inventory refresh #5687.

Remaining acceptance

This consolidates tracking and preserves the outstanding work. It grants no additional publisher identity, permission or merge exception.

Original request and historical target

Evidence

  • Dependabot is moving application consumers to the shared application publisher v13.2.15 (devantler-tech/.github/.github/workflows/publish-app.yaml@f5d078cc4b04ecb15432ed4e34cba1142a6279d4). Open updates: build(deps): adopt the approved application publisher 19.0.5 business-site#370 and ci(deps): bump the devantler-tech-actions group across 1 directory with 5 updates platform-tenant-template#264. wedding-app, ascoachingogvaner and data-product-controller will get the same update.
  • Platform accepts only the earlier revisions. The business-site row in scripts/publish-workflow-canonical-approvals.tsv names 467f07582436a26b62cf4aa756423512f85ba0c0 (v8.0.0), and so does the business-site tenant's publisherRevision. On platform-tenant-template#264, the required Platform Admissibility check fails with "Platform KRO Tenant does not accept the starter's exact pinned publisher".
  • Measured in the range 467f0758…f5d078cc (52 commits): publish-app.yaml changes, and so do its checked-out prepare-prebuilt-webapp.sh helper and that helper's test. Between v13.2.13 (2df24600…, the revision Approve KHoist's current immutable application publisher #5377 reviewed for KHoist) and v13.2.15, the only change to publish-app.yaml adds timeout-minutes: 60 to the publish job.

Audience / problem

Tenant owners, plus the site and apps that publish through this workflow. Until Platform approves the exact revision, each update has to be held. Merging one anyway means its next release is signed by a workflow the cluster refuses to verify, and the app silently stops updating.

Hypothesis

If Platform reviews the publisher range and approves f5d078cc… through the existing approval path, the held updates can merge. That path is the approvals table, the generated consumer matchers, the tenant publisherRevision, and the admission and node-pull rules. Any other commit stays refused.

Success signal

The Platform Admissibility check on platform-tenant-template#264 passes after a re-run. A business-site release published from f5d078cc reaches Ready/SourceVerified on its live Flux source.

Smallest useful change

  1. Review the publisher range from the approved revisions to f5d078cc. That covers the workflow and the prebuilt-WebApp helper it checks out. Reuse Approve KHoist's current immutable application publisher #5377's review of v13.2.13 where it already covers the same files.
  2. Add f5d078cc… to the approvals for each consumer that is moving, then regenerate the derived matchers.

Acceptance criteria

  • Range review recorded on this issue.
  • The approval tests accept f5d078cc… and still reject unapproved, tag and branch identities.
  • platform-tenant-template#264 Platform Admissibility is green; business-site#370 can be promoted.

Rough size: S–M (same shape as #5214).

Activity

  1. moved this to 📥 Backlog in 🌊 Project Boardon Oct 26, 2026
  2. devantler commented on Oct 27, 2026

    @devantler
    ContributorAuthor

    🤖 Generated by the Agentic Engineer

    Range review: publisher 467f0758…f5d078cc (v8.0.0 → v13.2.15)

    The comparison covers 52 commits and 194 files. The list is complete, because GitHub's compare API stops at 300 files and this range has fewer.

    publish-app.yaml checks out the workflow repository at job.workflow_sha and copies three helpers from it: require-unpublished-version.sh, recover-app-version.sh and prepare-prebuilt-webapp.sh. Within this range, only the following run as part of publishing:

    • publish-app.yaml: the publish job gets timeout-minutes: 60 (chore(deps): update helm release open-webui to v5 #771), and step-security/harden-runner moves from v2.22.1 to v2.22.2, still pinned to a full commit (chore(deps): update helm release ollama to v1 #768). Permissions, the signing identity, inputs and outputs are unchanged.
    • prepare-prebuilt-webapp.sh (chore(deps): update all non-major dependencies #766): the CI-run read stays credential-free. It now retries a 403 or 429 rate-limit refusal up to three times, within 120 seconds in total. It honours retry-after and x-ratelimit-reset, rejects duplicated headers, and still validates the complete original CI identity afterwards. Any other failure still fails closed.
    • require-unpublished-version.sh and recover-app-version.sh are unchanged.

    None of the other 191 files is executed by the publisher.

    Verdict: safe to admit. Nothing in the range widens what the publisher may do or what it signs.

    First slice: the generic Tenant, admission and node-pull boundaries now accept f5d078cc (draft PR to follow). Per-consumer approval rows and the business-site tenant pin will move when each consumer adopts this revision.

  3. added a commit that references this issue on Oct 27, 2026
  4. devantler commented on Oct 27, 2026

    @devantler
    ContributorAuthor

    🤖 Generated by the Agentic Engineer

    Draft #5422 adds f5d078cc at the generic boundaries, but the repository guard refused it: those boundaries admit at most two exact maintained publisher revisions, and both current ones still sign deployed artifacts (v7.23.0 for wedding-app and ascoachingogvaner, v8.0.0 for business-site). The prerequisite is tracked in #5424. Once v7.23.0 no longer signs anything deployed, #5422 will replace it rather than add a third revision. The guard stays as it is. #5422 is parked on #5424.

  5. devantler commented on Oct 27, 2026

    @devantler
    ContributorAuthor

    🤖 Generated by the Agentic Engineer

    Fresh read-only range review for f5d078cc4b04ecb15432ed4e34cba1142a6279d4, while the existing business-site deliveries complete their final checks:

    • The complete approved-base comparison 467f07582436a26b62cf4aa756423512f85ba0c0…f5d078cc4b04ecb15432ed4e34cba1142a6279d4 returns all 52 commits and 194 changed files, below the comparison file bound. The executable publisher closure remains the workflow plus its three literal, same-revision checked-out helpers. require-unpublished-version.sh and recover-app-version.sh are unchanged. The changed closure is publish-app.yaml, prepare-prebuilt-webapp.sh and its maintained test.
    • The actual selected workflow uses job.workflow_repository / job.workflow_sha for the helper checkout and copies only those three helpers before removing the checkout. The approved-base workflow delta is the immutable harden-runner v2.22.2 pin and a 60-minute publish-job timeout. Permissions, signing, caller pinning, public/private build paths, other action pins and publication concurrency are unchanged.
    • The prebuilt helper adds bounded, credential-free recovery for public GitHub CI reads. It rejects ambiguous headers and malformed/over-budget waits, retains the shared 120-second wait budget and three-attempt bound, and keeps the complete original CI/source/signature joins. Its changed tests exercise transient and persistent primary/secondary refusals, malformed/duplicate delays, cumulative budget and unchanged-output refusal. This is static review, not a claim that I executed those tests here.
    • The complete 2df24600b1113e291b87e300b91e59c160446134…f5d078cc4b04ecb15432ed4e34cba1142a6279d4 comparison returns two commits / 22 changed files; its only publisher-closure change adds timeout-minutes: 60. Thus Approve KHoist's current immutable application publisher #5377's recorded range analysis applies to the same helper/action change. Approve KHoist's current immutable application publisher #5377 was closed not planned after its original caller withdrew the update; it did not deliver this approval.

    No approval row, generated matcher, tenant revision, admission rule or node-pull rule was changed. #5404 remains open for the normal owned implementation, refusal controls, substantive review, protected deployment and actual consumer acceptance. Business-site #370 remains held; this note is not permission to merge it first.

  6. devantler commented on Nov 1, 2026

    @devantler
    ContributorAuthor

    🤖 Generated by the Agentic Engineer

    Range review for f5d078cc…af042c54 (v19.0.5), on top of the earlier 467f0758…f5d078cc review. The comparison returned all 31 commits and 181 files, and only two files in the publisher's closure changed:

    • publish-app.yaml: docker/login-action moves from v4.6.0 to v4.7.0 by digest. No permission, signing or output change.
    • prepare-prebuilt-webapp.sh: adds an explicit job-token mode for reading public CI evidence. The default stays anonymous, and an anonymous run carrying a credential is refused. Runs on private repositories are now refused. publish-app.yaml does not set this mode.

    I read those two diffs. The other two helpers were not touched in this range. Using v19.0.5 instead of v13.2.15, because it is the revision the pending consumer updates are moving to: #5422 now carries it.

  7. changed the title [-]Approve the v13.2.15 application publisher before consumers move to it[/-] [+]Complete the reviewed v19.0.5 application-publisher migration[/+] on Nov 2, 2026
  8. devantler commented on Nov 2, 2026

    @devantler
    ContributorAuthor

    🤖 Generated by the Agentic Engineer

    Consolidated the superseded version-specific requests #5275 and #5595 into this migration and updated the current-plan section to the already selected v19.0.5 revision af042c540ce8db4d64add98c34b5c57691e0e812. Their complete-range review, bounded exact-identity approval, native consumer checks, protected delivery and actual publication/deployment criteria are retained. The earlier request remains collapsed for historical context.

    The current devantler-tech/ascoachingogvaner#354 and devantler-tech/platform-tenant-template#272 heads still propose v19.0.3; this update does not make them approved. Signer-inventory work #5424/#5687 and the consumer cutovers remain open. No source, running workload, approval set or dependency-bot branch changed.

  9. devantler commented on Nov 2, 2026

    @devantler
    ContributorAuthor

    🤖 Generated by the Agentic Engineer

    Consumer adoption, 2 November about 04:20Z. Dependabot now proposes v19.0.8, which is not approved, so publish-app.yaml was held at v19.0.5 by one signed commit on each update. Other pins were left where Dependabot put them.

    Consumer PR Publisher Result
    Starter devantler-tech/platform-tenant-template#273, replacing #272 v19.0.5 Merged. Platform Admissibility passed at a29e8d735
    AS Coaching devantler-tech/ascoachingogvaner#354 v19.0.5 Merged. Publish Pin Approved passed at 8e4658111
    Wedding app devantler-tech/wedding-app#450 v19.0.5 Merged by repository automation at about 04:23Z. Publish Pin Approved passed on the updated head

    Not done or not verified.

    • No release has been signed by v19.0.5 on any consumer. Ready and SourceVerified on the live sources remain open.
    • business-site#370 and KHoist are unchanged.
    • Dependabot will keep proposing newer revisions, which Platform refuses until approved. With two slots, the next approval needs v8.0.0 retired first, and that needs each consumer's deployed release signed by v19.0.5.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Fields

    No fields configured for Security.

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions