Skip to content

feat(ingress): prepare a recoverable gateway peer boundary - #5547

Merged
devantler merged 18 commits into
mainfrom
codex/email-ingress-boundary-5448-23e2
Oct 29, 2026
Merged

devantler merged 18 commits into
mainfrom
codex/email-ingress-boundary-5448-23e2

Conversation

@devantler

@devantler devantler commented Oct 29, 2026 •

Copy link
Copy Markdown
Contributor

🤖 Generated by the Agentic Engineer

Why

Email needs reliable client identity before its public administration and account rollout can complete. The gateway first needs a recoverable boundary that distinguishes its provider connection from client-supplied metadata.

What

Prepares that boundary in a disabled state, keeps its encrypted configuration on the normal bootstrap recovery path, and adds checks and recovery. Traffic forwarding stays on its existing baseline; activation and real connection tests remain part of the wider Email work.

Part of #5448

📦 New dependency: Kubernetes policy evaluator — checks the planned protection before activation.

@devantler

Copy link
Copy Markdown
Contributor Author

🤖 Generated by the Agentic Engineer

The initial CI failures are addressed at 54feb3ba6 (including current main). The encrypted Secret now uses the required filename prefix; the receiver policy has its own Kustomize directory so the existing metadata-egress policy keeps its path.

The approved-render delta contains exactly two identities: one changed infrastructure Kustomization, whose only new setting requires the encrypted receiver substitution source, and that one new Secret with three encrypted string fields and the existing production recovery recipient. The infrastructure object fingerprint is b57d4628072b0fd25ef25663fb2070f0ccedb9812efb7ebc47f719f93b39904d; its ledger entry is 0404e22df806844ac03bdeb8cc51f2d7434c10754877c2d3c15cbc623b05b671. The new Secret ledger entry is b020f1466f1849694c2d15a9577e1923192a780f15eaac45c206d8495faa0deb. No grant-bearing object changes. The validator still requires exact membership, multiplicity, content and encryption-recipient agreement.

With the approved renderer, the actual authorization validator passed. Race-enabled authorization, receiver-binding and ARC staging regression packages passed. Full CI is rerunning; the PR remains a draft. Deployment must also prove the positive public paths. Denied direct paths and forged client claims still require native acceptance before client-identity forwarding can be enabled.

@devantler devantler changed the title fix(network): bind the application gateway receiver to its provider feat(ingress): prepare a recoverable gateway peer boundary Oct 29, 2026
@devantler

Copy link
Copy Markdown
Contributor Author

🤖 Generated by the Agentic Engineer

Reshaped at d6911d0381aedfbe0064b4d848faedbba4ba3f01: this draft now prepares unbound native admission policies and the protected disabled-state restoration path. The physical-peer binding component remains unselected, and both forwarding protocol settings remain disabled. This baseline must land before a later activation revision so ordinary recovery can restore it.

The native Kubernetes 1.36.4 CEL and JSONPatch engine exercised the actual policy files: every TLS chain gets the fixed physical peer, the existing plain HTTP chain is preserved, repeat mutation is stable, and unrelated Gateways are excluded. Unsafe peers, broader prefixes, fallback chains, alternate matchers and protobuf field aliases were rejected. The alias controls have observed RED/GREEN evidence.

Rollback tests also have RED/GREEN evidence: a foreign second binding no longer permits partial removal, and an active PROXY listener is checked before any write. Conditional deletion and patching use observed object identities and versions; readback resolves lost acknowledgements and refuses replacements. Production schema validation, race tests, lint and the approved-render authorization validator passed locally; CI is running at this head.

The approval delta from main now contains four identities: the required infrastructure substitution source, its encrypted Secret, and the two unbound policy definitions. No binding is selected and no existing admission scope is widened. Native allowed/denied peer probes, controller stability, the real Email client path and observed recovery remain required before activation; this preparation does not claim those outcomes.

@devantler

Copy link
Copy Markdown
Contributor Author

🤖 Generated by the Agentic Engineer

The publication and conservation failures are addressed at caadb3c91e258325893891bf29334fd57403dde5, including current main. The guard recognizes only the complete reviewed API/kind/spec surface of this native mutation policy. The actual source policy preserves discovery; all eleven altered-scope/expression controls are refused, and the complete conservation fixture suite reports zero failures. The actual production render still agrees on all six consumers.

The policy expressions now use a stable literal-block format. Real Kustomize output and deployed-spec readback agree exactly; the regression exercises both actual policy files. Only their two authorization fingerprints moved. Approved-render validation, race tests, lint, source bootstrap and canonical upgrade checks passed locally. CI is running again; the PR remains a draft with forwarding and the physical fence disabled.

@devantler

Copy link
Copy Markdown
Contributor Author

🤖 Generated by the Agentic Engineer

@codex review

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 29, 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-10-29T12:46:23.225231Z d726717 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. More of your lovely PRs please.

Reviewed commit: caadb3c91e

ℹ️ 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

Ready at caadb3c91e258325893891bf29334fd57403dde5 for this disabled preparation phase.

  • Validation: CI 40816451590 passed at this head, including the real native admission evaluator and the complete repository gates. Local schema, race, lint, exact authorization, conservation and canonical publication checks passed. The readable required-gate set passes; the helper still reports the configured code-quality rule as unqueryable, while GitHub reports native CLEAN.
  • Review: Codex's current-head clean receipt is present, and all thread and non-thread surfaces are clear.
  • User evaluation: the actual receiver-binding implementation read the live scoped production metadata and reached Homepage and OpenBao directly through the declared provider with normal hostname/TLS verification. Both requests passed and the source identities remained stable. The native Kubernetes 1.36.4 engine exercised the actual policy mutation and rejection behavior; real Kustomize/readback tests agree on the intended unbound state.

The fresh base was checked for clean integration, the template passed, and no foreign worktree holder was found. This lands unbound definitions and the disabled-state recovery path. Actual physical-peer denials, protocol activation and the full Email administration path remain acceptance gates under #5448; this PR does not claim them.

@devantler
devantler marked this pull request as ready for review October 29, 2026 04:53
@devantler
devantler added this pull request to the merge queue Oct 29, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Oct 29, 2026
@devantler

devantler commented Oct 29, 2026 •

Copy link
Copy Markdown
Contributor Author

🤖 Generated by the Agentic Engineer

Prior hold: #5170 — merge-group 40895798668 and its main restoration failed a public HTTP check without recording the status. That historical cause remains unknown.

The maintainer explicitly approved one fresh protected, instrumented trial at d726717576f76b76d43ebf07516fa2796f2b8e15 on 2026-10-29. Current main includes the verified numeric diagnostics from #5585. The refreshed readable required gates pass, the native merge state is CLEAN, the current-head Codex review is clean, both review threads are resolved, and the ownership check finds no foreign holder.

Resuming for that single trial under the normal protected queue. Transport and the physical fence remain disabled. No historical-cause, production-recovery or long-term reliability success is claimed; #5170 stays open. Any new failure must be diagnosed before another attempt.

@devantler

Copy link
Copy Markdown
Contributor Author

🤖 Generated by the Agentic Engineer

Readiness at 7c4af4480d9d25ff5d0a5875c8c22310000d6ebd: current CI passed, including native admission-engine tests and the native mail/gateway boundary proofs. The two affected local Go packages pass. Codex reviewed this commit without findings. Both earlier threads have disclosed fix/refutation replies and are resolved; current direct reads show no new finding. Every readable required gate passed, with GitHub CLEAN and its configured code-quality gate opaque to the API.

The evaluated behavior is preparation and verification of the disabled receiver baseline: native tests reject unbound sources and inappropriate policy changes, while the physical-peer binding remains unselected. This does not enable forwarded identity or move Email data. Production verification remains part of the protected deployment; later transport activation and client-identity acceptance remain in #5448.

@devantler
devantler marked this pull request as ready for review October 29, 2026 10:59
@devantler
devantler added this pull request to the merge queue Oct 29, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Oct 29, 2026
@devantler
devantler marked this pull request as draft October 29, 2026 12:41
@devantler

Copy link
Copy Markdown
Contributor Author

🤖 Generated by the Agentic Engineer

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Oct 29, 2026 •

Copy link
Copy Markdown
Contributor
⚠️ Action not completed

Review rate limited.

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.

@devantler

Copy link
Copy Markdown
Contributor Author

🤖 Generated by the Agentic Engineer

CodeRabbit declined this request because of its included review limit; no review of this head was delivered. Continuing with the next permitted reviewer.

@devantler

Copy link
Copy Markdown
Contributor Author

🤖 Generated by the Agentic Engineer

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Keep it up!

Reviewed commit: d726717576

ℹ️ 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

Readiness at d726717576f76b76d43ebf07516fa2796f2b8e15: current CI passed, with the native admission-engine coverage and mail/gateway regression family. Both platform validations and the native policy fixture passed locally. The new regression first reproduced the configuration-delivery failure, then passed with the bootstrap correction. The encrypted input is unchanged. Codex reviewed this commit without findings; complete current reads show no unresolved threads or comment-form findings.

The evaluated behavior remains the disabled receiver preparation. Its encrypted configuration now follows the existing decrypting bootstrap path; the physical-peer binding remains unselected. Production readback remains a protected-deployment gate and is not claimed here. The refreshed base differs only in the vulnerability-scanning action pin. All readable required gates passed and GitHub reports CLEAN; the configured code-quality gate remains opaque to the API and is enforced by the protected queue. Broader transport activation and real client-identity acceptance remain in #5448.

@devantler
devantler marked this pull request as ready for review October 29, 2026 12:59
@devantler
devantler added this pull request to the merge queue Oct 29, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Oct 29, 2026
@devantler devantler removed the blocked label Oct 29, 2026
@devantler
devantler added this pull request to the merge queue Oct 29, 2026
Merged via the queue into main with commit ef04350 Oct 29, 2026
53 checks passed
@devantler
devantler deleted the codex/email-ingress-boundary-5448-23e2 branch October 29, 2026 23:49
@github-project-automation github-project-automation Bot moved this from 🫴 Ready to ✅ Done in 🌊 Project Board Oct 29, 2026
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