Skip to content

Verify business-site release evidence before staging registration #5248

Description

@devantler

🤖 Generated by the Agentic Engineer

Summary

Verify the business site's signed manifest publication through Platform's existing first-consumer tooling, without granting deployment authority.

Motivation

The public-only staging registration in #5247 needs verifiable first-publication evidence before Flux can supply an observed binding. Platform main 32e5761d3c2e785edb8bc62d58b6fdedc63420f7 currently binds its bootstrap verifier to the existing documentation consumer, the legacy publisher identity, a push event and a different caller. The actual business-site v1.0.2 publication uses a release event and its source-owned runtime caller. Copying a bare signer revision into the legacy approval format would misinterpret its authority.

Proposed Solution

Extend the existing tooling with one explicit, non-activating business-site verification profile. Bind the repository, caller, event, maintained publisher, source identity and manifest package to the reviewed consumer. Preserve the existing documentation-consumer path unchanged. Produce a distinct manifest-publication evidence receipt that is not accepted as a bootstrap approval, observed Flux binding or active consumer record.

The expected immutable inputs come from the independently verified v1.0.2 release recorded on #5247. This increment re-verifies manifest publication; it must not claim that it independently repeats paired-image/provenance verification or deploys the tenant.

Acceptance Criteria

  • An explicit opt-in invokes only the named business-site profile; ordinary bootstrap behavior and existing refusal controls remain unchanged.
  • The actual caller, successful release publication, immutable source/tag/digest and exact fully qualified maintained publisher are independently bound. Wrong or ambiguous product, event, caller, publisher, tag, source or digest refuses.
  • Incomplete, malformed, trailing or failed dependency reads, including plausible output followed by failure, emit no success receipt.
  • Verification writes no approval, matcher, tenant registration, policy, routing or cluster state. It cannot accidentally populate the legacy approval schema.
  • Retained documentation-consumer tests and new behavioral controls pass. Exercise the real v1.0.2 manifest signature/publication path and record its boundary separately from static fixtures.
  • Documentation explains the explicit command, receipt limitations and remaining Register the public-only business-site staging tenant #5247 registration/private-input/live-acceptance work.

Alternatives Considered

Do not add a guessed approval row, broaden a signer matcher, copy the legacy workload skeleton, or introduce a parallel publication system. Actual tenant registration and private-input ownership remain separate acceptance under #5247.

Planning

Priority High; Effort Medium; Standard service class. The outcome is a repeatable Platform-side verification path for the existing signed business artifact. Success is the real verified receipt plus retained negative controls during this delivery, with no runtime authority change. WIP capacity is explicitly waived by the maintainer for this session. This non-activating child does not require or claim the parent's private configuration value.

Part of #5247.

Activity

  1. moved this to 🫴 Ready in 🌊 Project Boardon Oct 22, 2026
  2. self-assigned this
    on Oct 22, 2026
  3. updated Effort Medium and Priority High on Oct 22, 2026
  4. moved this from 🫴 Ready to 🏃🏻‍♂️ In Progress in 🌊 Project Boardon Oct 22, 2026
  5. added a commit that references this issue on Oct 22, 2026
  6. moved this from 🏃🏻‍♂️ In Progress to 👀 In Review in 🌊 Project Boardon Oct 22, 2026
  7. moved this from 👀 In Review to 🏃🏻‍♂️ In Progress in 🌊 Project Boardon Oct 23, 2026
  8. moved this from 🏃🏻‍♂️ In Progress to 👀 In Review in 🌊 Project Boardon Oct 23, 2026
  9. moved this from 👀 In Review to 🚀 Ready to Merge in 🌊 Project Boardon Oct 23, 2026
  10. moved this from 🚀 Ready to Merge to ✅ Done in 🌊 Project Boardon Oct 23, 2026
  11. devantler commented on Oct 23, 2026

    @devantler
    ContributorAuthor

    🤖 Generated by the Agentic Engineer

    Post-merge verification, 23 October: #5249 is MERGED as GitHub-valid signed 6e35658ee7d25aa45564d6331112d086bd6cd0e8. Fresh main 840972ba426ed11e6ad5bf328335995464667af1 retains byte-identical publication-reader code. From an atomically owned, clean isolated checkout of that merged descendant, the real documented business-site verify-only command completed successfully against the existing immutable v1.0.2 manifest publication.

    The actual receipt is kind=manifest-publication-evidence, deploymentAuthorized=false, source e5eb256dcb5dbf3857257e9072937ab95f1ea6c3, manifest digest sha256:6adcb1794ebdf5de4e1b03f758d44d6f9061eee43b863b1b1f4955a1e1d2615e, exact maintained publisher 467f07582436a26b62cf4aa756423512f85ba0c0, source-owned release caller and successful publication run 39869859801 attempt 1. The checkout remains clean. This repeats the real manifest-signature/publication path, not only fixtures; it does not independently repeat the paired-image verification or authorize an approval, tenant, route or cluster change.

    The complete scripts/tests/test-bootstrap-tenant-source.sh regression suite also passes on that merged descendant, retaining the ordinary bootstrap and business-publication refusal boundaries. The checkout remains clean after both executions.

    This closes the merged-reader verification checkpoint. #5247 remains OPEN for actual consumer/private-input/controller acceptance. Business-site #300/#301 add new input declarations and will require their own newly verified publication before consumption; the existing v1.0.2 evidence cannot be relabeled as containing them. No deployment, provider or portal activation is claimed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Fields

Priority

High

Start date

None yet

Target date

None yet

Effort

Medium

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions