Skip to content

feat(sre): register privileged authority and isolate Kubernetes credentials - #551

Draft
Pal Lakatos-Toth (pallakatos) wants to merge 33 commits into
kars-bridgefrom
public/pr7-sre-authority
Draft

feat(sre): register privileged authority and isolate Kubernetes credentials#551
Pal Lakatos-Toth (pallakatos) wants to merge 33 commits into
kars-bridgefrom
public/pr7-sre-authority

Conversation

@pallakatos

@pallakatos Pal Lakatos-Toth (pallakatos) commented Sep 8, 2026

Copy link
Copy Markdown
Collaborator

Current control-plane compatibility repair

Current head: 4e012ec7f9cece155c19a8f272f976a7ae2ff469. The bootstrap failure was not a rejected controller Pod: Kubernetes v1.31.0's controller-manager crashed in CEL OpenAPI type checking when the new policy inspected KarsSREAction.spec.action.params represented by boolean additionalProperties: true.

The repair preserves type: object and arbitrary nested JSON using field-local x-kubernetes-preserve-unknown-fields: true, consistently in Rust schema generation and Helm. No admission policy, approval requirement or namespace restriction is removed. Hosted A/B evidence recovered controller-manager and real Deployment/ReplicaSet/Pod creation, with all nine ordinary/private admission and JSON round-trip cases matching: https://github.com/Azure/kars/actions/runs/34262068112/job/102182569705 . That diagnostic job intentionally retained the original baseline failure; it was not reported green.

The repaired shipped-schema probe now executes those cases too. Parent corrected the diagnostic test imports for the actual full-harness discovery command; all 35 Python cases, Helm lint and Rust syntax/format checks pass locally. Shared Cargo was not taken from another owner: Rust/build/Clippy/schema-drift and full fatal migration qualification remain required from the new hosted run, https://github.com/Azure/kars/actions/runs/34265939336 .

This PR remains draft, outside the three completed author-waived foundation landings. No application readiness, customer-cluster change, main promotion or full SRE privacy closure is claimed yet. Older bootstrap hypotheses and failures below are historical and superseded by this evidence.


Current integration candidate and staged acceptance

Current head: ee24037189eff7beb96e1ba7d1961f5569e93ee8, now directly based on assembled foundations 365483a1 in kars-bridge. The ancestry refresh carried only predecessor audit records; all SRE repairs remain intact.

The preceding full Kind run confirmed real authority-stage preview/apply succeeds after the Helm 3/4 discovery fix. It then exposed a harness sequencing conflict: Helm 4's default watcher waited for SRE inference-policy acknowledgements before the required explicit enrollment phase could run.

Repair 7f7a4ac4 changes only prepared-legacy test setup to Helm 4's built-in-resource (--wait=legacy) readiness strategy, preserving Helm 3's existing wait. The immediately following real SRE migration remains mandatory/fatal before unrelated tests. No production readiness, policy, admission check or migration requirement is relaxed.

Fresh full qualification: https://github.com/Azure/kars/actions/runs/34252594680 . This PR remains draft and technically unqualified until that lifecycle completes. It is not covered by the author waiver used for #547-#549. Earlier failed-run details below are historical.


Current lifecycle follow-up: Helm 3/4 release discovery

Current head: 86162297a2ee6f6044c9487b3a978a8c2fe47a46. The corrected CRD was accepted in the full Kind run, which then exposed a separate real CLI compatibility defect: Helm 4.2.4 rejects the removed helm list --all flag during authority staging.

The shared install/stage discovery helper preserves Helm 3 behavior. It retries without --all only after that exact flag error and a confirmed Helm 4 version, whose default includes all release statuses. Authorization, malformed inventory, namespace/context, ownership and other error paths stay fail-closed; an error never becomes an absent release or permission to adopt. No dependencies or Rust implementation changed.

Targeted command/helper/authority coverage and the actual installed Helm flag parser passed locally. Full hosted lifecycle qualification is running at https://github.com/Azure/kars/actions/runs/34247989763 . This PR remains draft and outside the three author-waived foundation landings. Earlier schema repair and failure evidence below are retained as history.


Current schema repair and remaining qualification

Current head: 447312d1afb0a77ccbd2d144d74a4a293a6ceedd. The real Kubernetes v1.31 API rejected the SRE registration CRD with HTTP 422 because both custom namespace CEL accesses were undefined. The repair uses __namespace__ in CEL while preserving the JSON field names, namespace equality and singleton-name constraints.

Actual shipped-schema gate now passes: https://github.com/Azure/kars/actions/runs/34241285988/job/102112345148 . The prior controlled API comparison demonstrated corrected CRD/canonical acceptance (201) and the intended foreign-namespace/noncanonical rejections (422): https://github.com/Azure/kars/actions/runs/34239442081/job/102106020705 .

Full SRE migration/lifecycle qualification remains pending, and this PR remains draft. This is not closure of the downstream credential-privacy blocker and is not covered by the author's signature waiver for #547-#549. No source constraints, required gates or customer deployment safeguards were weakened. Earlier preparation/failed-run details below are historical.


Publication order

This is the security prerequisite between #549 and #550. It targets the qualified credential-source branch; the governed-service layer must incorporate this prerequisite and its privacy-epoch guard before its remaining HIGH finding can close. Do not merge into the intermediate feature branch. After preceding slices land, retarget to protected kars-bridge, refresh exact-head qualification and obtain genuine approval. Final promotion to main remains separate.

Why this prerequisite is required

The existing SRE agent holds a Kubernetes credential with cluster-wide Secret access. Merely mounting the new governed-service control token only in the router does not protect it from that API credential. Safe replacement requires operator-authorized UID enrollment, reviewed retirement of legacy grants, and a real compatible diagnostic path—not a permission drop that leaves SRE broken.

Scope

  • Add cluster-scoped KarsSRERegistration/canonical, pinned to exact controller/release, source Sandbox and runtime Namespace identities. Registrar permission is unbound by default; occupancy, names, labels and Helm-looking metadata do not delegate privilege.
  • Stage only unprivileged sources; atomically create genuinely new sources or require explicit reviewed UIDs for existing sources, consumers and legacy grants. Retire only approved legacy subjects with UID/resourceVersion fencing, preserve unrelated resources, and require live GET/LIST/WATCH denial before private issuance.
  • Keep the Pod Azure identity/federated subject. Give the diagnostic proxy a separate, renewable, router-private Kubernetes identity. Old Hermes clients retain their standard token/CA/namespace file interface through loopback HTTPS and an opaque non-Kubernetes agent credential.
  • Preserve bounded diagnostic reads, logs, metrics and Pending-only proposals. Secret key names remain visible; values, annotations/labels and copied credential material do not. Token requests, exec/proxy, unsafe paths/media and arbitrary writes are blocked.
  • Protect reserved sources, identities, private material and workload/connect paths with retained admission policies. Ban legacy ServiceAccount-token Secret aliases for the private identity, detect prestaged/current/prior-UID aliases, quarantine owned authority and reject watch-only legacy grants. Unknown Secrets and replacement identities are not adopted or deleted.
  • Add CLI stage/preview/enroll/migrate/retire and installation, upgrade, push, rollback and removal safeguards. Preserve unrelated core behavior and pinned images; refuse insecure migration or rollback before mutation.
  • Add real Kind acceptance phases for legacy fixtures, delegated and tenant callers, token-controller/watch bypass attempts, migration ordering, unchanged Hermes TLS behavior and retirement/fresh re-enrollment.

Documentation: docs/how-to/sre-authority.md. Shared privacy logic is covered by audit, no-stub, crypto and runtime-affecting Kind guards. Dependencies add standard TLS support only; unrelated lockfile resolution changes were removed.

Initial CLI compatibility correction

The first hosted CLI run caught four external-mesh rejection regressions: SRE preflight ran before an already-invalid external mesh target was rejected. Repair 05b3a77c restores that no-probe rejection order while keeping authority preflight before artifact resolution and every deployment write. The existing assertions remain intact, and a valid-core/preflight-failure regression proves no writes occur. New exact-head qualification is required.

Confirmed request-boundary evidence and approved alert triage

The initial full run found registration display/status conventions missing; these are now implemented with real standard conditions and shared transition-time helpers. The existing 17-criterion conformance suite passes. Secret-type mutations now require the specific Kubernetes immutable-field 422 cause, while schema-valid CREATE/annotation probes still require the intended VAP 403.

For CodeQL alerts 780/781/782/783, independent source/SARIF review confirmed that the reported flows originate in Axum server-injected State rather than HTTP input. Eight hostile header/query/body scenarios exercised fixed-file rereads, renewal and inventory; operations stayed on the selected backend. Flagged production blobs and authentication were not rewritten. All 50 focused SRE tests and strict combined Clippy passed.

The user explicitly approved false-positive dispositions for ONLY those four alerts, each with its own evidence comment. CodeQL queries and source coverage remain enabled. This assumes trusted controller/kubelet configuration and private-volume integrity; it is not a declaration that privileged configuration tampering is harmless, and it is not audit sign-off or merge/deployment approval. The separate CLI fixture alert was addressed in code by exact resource-argument matching, not dismissed. Real Kubernetes migration qualification and genuine author/reviewer signatures remain required.

Isolated TLS regression setup correction

The full 941d6c2b run passed 2,572 of 2,573 cases; the new boundary case failed before executing its inputs because isolated nextest execution had no Rustls CryptoProvider selected. The longer step included test-binary compilation, not a hanging boundary request. Commit 99787682 initializes the existing AWS-LC provider within that test. It now passes alone, without relying on another test initializing process-global state. Production proxy code and the reviewed CodeQL input boundaries are unchanged. The real Kubernetes migration gate has not yet run successfully and remains required.

Current held acceptance issue

The 99787682 run clears Rust and CodeQL, but Kind stops during legacy-fixture preparation before the authority/migration proof. The sanitized failure identifies a kubectl command after the old source/consumer were created; bounded diagnosis is in progress. The migration gate is not considered passed. This later draft remains outside the foundation integration queue and must not block assembling already-qualified earlier slices.

Evidence and remaining gates

Current candidate: 997876825aa54cded225b2ef4a82050b2e5bc8c8, based on #549 head 8b206065.

  • Local repair qualification: 46 focused Rust tests, 116 affected CLI/Helm tests, typecheck and strict combined controller/router Clippy passed. Earlier unchanged-Hermes TLS/proposal compatibility cases are retained.
  • Parent re-enrollment fix replaces the complete reviewed specification with JSON Patch after UID/resourceVersion tests, preventing stale retired consumer data from surviving. Targeted regressions and the real persisted-spec assertion remain strict.
  • Ten pure acceptance-harness tests, Bash syntax, shared security-guard regressions and committed-diff gates passed. These are not live Kubernetes proof.
  • Whole source review and both additional HIGH alias/watch repairs have bounded source-level closure. Final harness/re-enrollment review and hosted API/CEL/authorization/migration acceptance remain pending.
  • Capability audit: docs/security-audits/2026-09-08-sre-authority-prerequisite.md. Genuine author and independent reviewer sign-offs are pending; no signatures or human approvals have been fabricated.

This draft does not yet close #550 until actual API qualification and integration are complete. It is not full Bridge publication, arbitrary-credential integration, a task runtime or a shared budget broker. No customer/H100 deployment, Azure mutation, public image release, integration merge or main merge is performed by preparing it.

Latest acceptance-fixture correction (3c9523e8)

The previous hosted Kind run stopped during fixture preparation: the legacy control consumer omitted required spec.inferenceRef. This test-only correction supplies that field in both the consumer fixture and the reserved-source admission probe, with regression coverage against the actual Helm schema. Command failures now identify harness source coordinates, exit status and an allowlisted error category without printing argv, credentials or response bodies.

Thirteen pure harness regressions pass. Fresh hosted CI/Kind is pending; this does not claim completed real-API migration qualification or closure of the downstream governed-services privacy blocker. No production behavior, permissions, dependencies or audit requirements changed. The PR remains draft and outside the qualified foundation assembly queue.

…tials

Introduce operator-controlled UID enrollment, reviewed legacy-grant migration, renewable router-private Kubernetes identity and a filtered HTTPS compatibility proxy. Preserve Azure identity and pinned Hermes interfaces; block legacy token aliases and Secret-watch authority. Add lifecycle preflights, retained admission gates and real Kind acceptance coverage. Live API qualification and genuine sign-offs remain pending.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown

Dependency Review

✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.

OpenSSF Scorecard

PackageVersionScoreDetails
cargo/rcgen 0.13.2 UnknownUnknown
cargo/yasna 0.5.2 🟢 4.1
Details
CheckScoreReason
Maintained⚠️ 00 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Binary-Artifacts🟢 10no binaries found in the repo
Code-Review🟢 6Found 7/11 approved changesets -- score normalized to 6
Packaging⚠️ -1packaging workflow not detected
Token-Permissions⚠️ 0detected GitHub workflow tokens with excessive permissions
Pinned-Dependencies⚠️ 0dependency not pinned by hash detected -- score normalized to 0
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Security-Policy⚠️ 0security policy file not detected
Fuzzing🟢 10project is fuzzed
Signed-Releases⚠️ -1no releases found
Branch-Protection⚠️ 0branch protection not enabled on development/release branches
License🟢 10license file detected
SAST⚠️ 0SAST tool is not run on all commits -- score normalized to 0
npm/js-yaml 4.3.2 🟢 6
Details
CheckScoreReason
Code-Review⚠️ 0Found 1/30 approved changesets -- score normalized to 0
Maintained🟢 1030 commit(s) and 28 issue activity found in the last 90 days -- score normalized to 10
Packaging⚠️ -1packaging workflow not detected
Token-Permissions🟢 10GitHub workflow tokens follow principle of least privilege
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Binary-Artifacts🟢 10no binaries found in the repo
Pinned-Dependencies🟢 3dependency not pinned by hash detected -- score normalized to 3
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
License🟢 10license file detected
Fuzzing🟢 10project is fuzzed
Branch-Protection⚠️ 0branch protection not enabled on development/release branches
Signed-Releases⚠️ -1no releases found
SAST⚠️ 0SAST tool is not run on all commits -- score normalized to 0
Security-Policy🟢 4security policy file detected
npm/js-yaml 4.3.2 🟢 6
Details
CheckScoreReason
Code-Review⚠️ 0Found 1/30 approved changesets -- score normalized to 0
Maintained🟢 1030 commit(s) and 28 issue activity found in the last 90 days -- score normalized to 10
Packaging⚠️ -1packaging workflow not detected
Token-Permissions🟢 10GitHub workflow tokens follow principle of least privilege
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Binary-Artifacts🟢 10no binaries found in the repo
Pinned-Dependencies🟢 3dependency not pinned by hash detected -- score normalized to 3
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
License🟢 10license file detected
Fuzzing🟢 10project is fuzzed
Branch-Protection⚠️ 0branch protection not enabled on development/release branches
Signed-Releases⚠️ -1no releases found
SAST⚠️ 0SAST tool is not run on all commits -- score normalized to 0
Security-Policy🟢 4security policy file detected
npm/js-yaml 4.3.2 🟢 6
Details
CheckScoreReason
Code-Review⚠️ 0Found 1/30 approved changesets -- score normalized to 0
Maintained🟢 1030 commit(s) and 28 issue activity found in the last 90 days -- score normalized to 10
Packaging⚠️ -1packaging workflow not detected
Token-Permissions🟢 10GitHub workflow tokens follow principle of least privilege
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Binary-Artifacts🟢 10no binaries found in the repo
Pinned-Dependencies🟢 3dependency not pinned by hash detected -- score normalized to 3
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
License🟢 10license file detected
Fuzzing🟢 10project is fuzzed
Branch-Protection⚠️ 0branch protection not enabled on development/release branches
Signed-Releases⚠️ -1no releases found
SAST⚠️ 0SAST tool is not run on all commits -- score normalized to 0
Security-Policy🟢 4security policy file detected

Scanned Files

  • Cargo.lock
  • mesh-plugin/package-lock.json
  • runtimes/openclaw/package-lock.json
  • tools/headlamp-plugin/package-lock.json

Comment thread cli/src/commands/sre.test.ts Fixed
Restore the external-mesh no-probe rejection contract while keeping authority preflight ahead of artifact resolution and every deployment write. Cover a valid core target whose SRE preflight fails without mutation.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
Comment thread inference-router/src/sre_proxy/backend.rs Dismissed
Comment thread inference-router/src/sre_proxy/backend.rs Dismissed
Comment thread inference-router/src/sre_proxy/backend.rs Dismissed
Comment thread inference-router/src/sre_proxy/backend.rs Dismissed
Publish real standard conditions and CRD metadata, distinguish immutable Secret type rejection from admission-policy denial, and make CLI fixture resource matching exact. Add hostile-input regressions for the CodeQL-reported readiness flows without changing flagged production paths, destinations or authentication. Specific false-positive dispositions still require approval.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
Select the existing AWS-LC provider before this test creates TLS clients or servers, so nextest isolation does not rely on another test initializing process state. Record the user-approved dispositions for the four specific CodeQL HTTP-flow false positives; production proxy paths and destinations remain unchanged.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
Supply the required inference reference in both legacy control-consumer and reserved-source admission fixtures so real API tests reach their intended policy boundary. Report only harness source coordinates, exit code and an allowlisted category when commands fail; keep credentials and response bodies out of diagnostics.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
…ests

Use the existing pinned Kind/kubectl/Helm tools and identical node configuration for a fast independent API-server dry-run. Preserve only allowlisted 422 causes for the exact public SRE CRD, retain generic command privacy, and classify native kubectl CRD Invalid errors. No production or schema change; root cause remains to be established by hosted API evidence.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
Hosted Kubernetes v1.31.0 rejected the public CRD with HTTP 422: both custom namespace field accesses are undefined. Add a diagnostic-only escaped-accessor candidate and real positive/negative instance checks in the disposable schema job. The unchanged production schema must still pass its own gate; candidate success cannot turn that failure green. Production/schema files remain unchanged pending parent review.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
Kubernetes v1.31 rejects the custom namespace accesses as undefined fields. Use the schema's CEL-escaped accessors while keeping the wire fields, namespace equality and singleton checks unchanged. Disposable API evidence accepts the corrected CRD and canonical instance and rejects foreign-namespace and noncanonical instances. Full SRE migration qualification remains required.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
Helm 4.2.4 in real Kind acceptance rejects the removed list --all flag before staging. Retain Helm 3 behavior; retry only its exact unsupported-flag error after confirming Helm 4, whose default inventory includes all statuses. Share this bounded compatibility path across SRE install and authority stage. Propagate all other discovery errors and preserve context, existing releases, ownership checks and staging semantics.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
The staged legacy fixtures cannot acknowledge inference policies before enrollment. During this setup only, use Helm 4 legacy built-in readiness waits, retaining Helm 3 behavior. The immediately following real SRE migration gate remains mandatory and fatal before unrelated tests; no production readiness or policy is relaxed.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
Retarget the next prerequisite to kars-bridge. Carry only predecessor audit records and merge ancestry; retain all SRE schema, CLI and acceptance repairs.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
@pallakatos
Pal Lakatos-Toth (pallakatos) changed the base branch from public/pr6-credential-sources to kars-bridge September 8, 2026 16:41
Add a disposable image-free controller Pod admission proof and bounded policy/ReplicaSet diagnostics. Preserve migration/readiness gates and publish no workload specs, credentials, argv or generic API bodies.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
Handle adjacent JSON objects as well as Lists and expose only fixed diagnostic stages before parsing. No policy or runtime behavior changes.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
A missing observation on an unrelated resource policy must not suppress controller Pod creation diagnostics. Wait first, collect actual admission evidence, and still fail the observation gate.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
The actual API admits the public Pod and Deployment but the Deployment remains unobserved. Record controller-manager restart/exit metadata and only fixed panic categories plus public Go frame names, stripping all log contents and arguments.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
After the unchanged production probe fails, test only the API-evidenced additionalProperties:true adapter candidate in disposable Kind. Preserve all admission policies, require actual controller Pod creation and exact tenant/private denials, and verify arbitrary JSON params survive. Production schemas and readiness gates remain unchanged.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
Use a field-local preserved-unknown object schema in both Rust generation and Helm instead of boolean additionalProperties. Actual Kubernetes 1.31 A/B evidence restores controller-manager and Pod creation while preserving nine ordinary/private admission and JSON round-trip outcomes; no policy is relaxed. Run the admission cases against the successful shipped schema and fix test imports for real harness discovery. Rust, schema drift and full migration qualification remain required in hosted CI before readiness.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
Bind synthetic token Secrets to real fixture ServiceAccount UIDs with complete public CA and namespace data, preventing healthy TokenController garbage collection or JWT generation. Preserve precise admission and immutable-type denials, prove unowned same-name identity quarantine and replacement, and retain primary failures during fenced cleanup.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
The real token fixture lifecycle now passes on hosted Kind, but a later reviewed migration is Blocked. Identify exact checked-in controller rejection sites and numeric Kubernetes statuses before teardown without printing status detail, API bodies or credentials; keep the fatal acceptance gate unchanged.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
Do not delete a fixture ServiceAccount if Secret cleanup fails: native TokenController could otherwise garbage-collect a foreign token Secret replacement. Independent cleanup continues and the original acceptance failure remains primary.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
Run a bearer-only actual controller ServiceAccount UID proof against the unchanged chart policies and roles, using pinned historical reader bindings with unrelated survivors. Compare exact UID/RV-fenced retirement dry-runs before, during and after a disposable exact-named reader bind grant. Preserve custom-role denials, pending-only admission and all persistent reviewed resources; never execute images or publish credentials.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
The hosted proof found that the immutable legacy chart has no helpers template. Render only its three actual required files, and report sanitized public diagnostic source coordinates without exception text or request data.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
Hosted Kind proved the same controller-principal retirement PATCH is denied by RBAC without named reader bind and accepted with only that bind, while the custom role remains denied. The wrong-UID control is Kubernetes 422 immutable-field validation, not resourceVersion Conflict; require that exact metadata.uid cause without counting arbitrary 422s as proof.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
Actual Kubernetes proof requires the named default reader bind permission even for subtractive updates. Add only that name; never grant wildcard bind, escalation, cluster-admin or custom-role authority. Prepare identical UID/RV-fenced patches and dry-run every retirement before any real mutation, preserving unrelated subjects and the legacy consumer on preflight failure. Keep API races fail-closed without claiming multi-resource rollback. Full hosted Rust and migration qualification remain required before readiness.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
Create only the 18 CRDs rendered from the exact historical archive after validating inventory, schema content and absence. Attach legitimate release ownership and wait for Established plus API discovery before the unchanged historical post-install hook. Reject adoption, conflicting creates and unrelated API errors; preserve migration ordering and production guards.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
Use Helm's field manager for create-only legacy CRD setup, in addition to its release labels and annotations. Add a disposable same-Kind API A/B proof of kubectl-create versus Helm ownership through unchanged apply and a dry-run current-schema upgrade, with UID-fenced cleanup and allowlisted conflict reporting. Never force conflicts or adopt existing objects.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
The same-Kind A/B demonstrated FieldManagerConflict for POST-created historical CRDs with both kubectl-create and helm managers. Keep archive identity/absence validation read-only and use the existing versioned legacy waiter for initial Helm install; Helm waits on templated CRDs before post-install hooks and retains native Apply ownership. Prove the actual historical install, hook and current-authority server dry-run in the disposable API job, then reset its cluster before existing policy qualification.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
Real legacy migration now reaches Ready with denial-before-issuance and rotation proof, but subsequent SRE install times out with ReplicaSetCreateError. Capture only allowlisted policy facts from runtime status and add same-Kind dry-run ordinary/private ReplicaSet cases under the existing Deployment controller principal, paired with actual cluster-scope authorization reviews. Preserve all production policies and RBAC unchanged.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
Pin the three affected consumers to the GHSA-2883-xcg3-v3hh patch. Use temporary hosted lock-only generation against the public registry because the configured local feed exposes proxy URLs and SHA-1 metadata. Require matching public SHA-512 integrity and unchanged versions/tree for every other package before capturing generated locks for review. No audit waiver or policy changes.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
Import byte-identical npm-generated public-registry locks from hosted run 34348098105, artifact 10102603454. Independently verify official SHA-512 integrity and unchanged versions/tree for all non-js-yaml packages. Runtime OpenClaw passes 250 tests; mesh passes 68 with three existing skips; both bulk audits report zero blocking advisories. Remove temporary lock-generation CI steps, leaving only the six manifest/lock files changed for the shared patch.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
Actual Kubernetes 1.31 evidence shows the built-in Deployment controller can create ReplicaSets cluster-wide but cannot create Pods or use SRE registrar authority. Permit that existing cluster-wide capability only for apps/replicasets admission, retaining all other predicates and granting no RBAC privileges. Add real UID-linked private Deployment-to-ReplicaSet-to-unscheduled-Pod acceptance, alongside unchanged tenant denials. Python regressions: 67 passed; Helm lint and exact rendered-policy preservation checks passed.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
Full Kind now creates the private SRE Pod but the running router remains NotReady. Add allowlisted bare/absolute command and verified loopback-TLS diagnostics. A temporary hosted smoke probe reuses SHA256-verified binaries from run 34350195081 only after proving unchanged production sources, without Cargo or private credentials. Preserve the actual readiness gate and all production code.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
Verified-image and real Pod evidence rule out executable lookup; certificate-verified loopback readiness requests time out while registration remains Ready. Log only fixed authority stages/categories, HTTP status, timeout/connect booleans and slow-check duration. Never log URLs, response bodies, errors or credentials; retain every authorization decision and timeout. Add log-boundary regressions and remove the completed temporary image probe. Python: 69 passed; changed Rust files formatted, with all compilation/tests delegated to existing hosted CI and no local Cargo.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
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