Skip to content

feat(credentials): add governed grants and purpose-limited observations - #554

Draft
Pal Lakatos-Toth (pallakatos) wants to merge 55 commits into
kars-bridgefrom
public/pr10-credential-grants
Draft

feat(credentials): add governed grants and purpose-limited observations#554
Pal Lakatos-Toth (pallakatos) wants to merge 55 commits into
kars-bridgefrom
public/pr10-credential-grants

Conversation

@pallakatos

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

Copy link
Copy Markdown
Collaborator

Governed credential grants — current integration candidate

Draft; not release-ready. Target: kars-bridge.
Head: ef7b2d85ce31c8bb2cca69fd762052751b014372.
Actual integration ancestor: d1535e53b99604dcaca11b44e6b3e99dd8238eba.

This candidate brings the credential slice onto the current integration stack.
Core qualification runs in Azure/kars. All required technical, security,
review and native gates remain required; no failed result is waived.

The slice provides metadata-only credential grants, UID-bound sources and
operator stores, governed GitHub integration, and private read-only observations.
Bridge remains optional. No private application or SDK/probe ancestry is included.

Recent repairs preserve ordinary core bootstrap while enforcing private
capability consumption:

  • Namespace activation is evaluated in namespace-aware validation, not a match
    condition that lacks the namespace object. Missing metadata remains fail-closed.
  • Existing privileged consumers retire before replacement-key qualification.
    Reviewed replica intent survives retries; exposed keys are not accepted.
  • Controller-only source ownership changes carry an optional
    ownershipFromResourceVersion in grant status. It attests only the exact
    metadata-only UID/RV transition, not a data write or permission to adopt a
    replacement. Writer ownership restrictions remain unchanged.
  • Native fixtures cover ordinary/protected workloads, controller identities,
    workload connections and exact missing-metadata failures. Connection probes
    use only the owned namespaces and an absent Pod; unrelated proxy paths and
    writes stay blocked. Controller identities are initialized through inert
    workloads, not synthetic UIDs.

Qualification status

The namespace-phase source review and earlier credential security repair have
bounded review evidence. The newest source ownership handoff still requires its
paired review and native qualification. Source/static checks and focused
regressions are retained in the repository audit records; they do not substitute
for fresh exact-head Azure/kars CI.

Earlier failed fixture and runtime results remain failures. In particular,
native observer API access and full source-write/review/continuation acceptance
must pass before merge. No final full-stack readiness claim is made.

This PR does not authorize promotion to main, image publication, customer/H100
deployment, or changing the separate Bridge application's visibility.

Preserve optional standalone behavior and isolate GitHub App credentials by exact identity, installation and repository. Include governed Actions logs and reviewed gzip/permission repairs. Local Rust/runtime qualification and bounded automated closure are complete; operator materialization, SRE privacy-gate integration and full acceptance remain explicit blockers. This is a local checkpoint, not public readiness or deployment.

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

Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
Local, unpublished implementation checkpoint. Rust and real API qualification remain pending; the operator observation and GitHub issuer seams require the approved privacy integration. No release or security sign-off is implied.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
Forward merge 7dc7281 locally for downstream issuer integration. Candidate qualification is still pending; no public push or sign-off.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
Retain explicit unqualified lifecycle, UID and privacy blockers; this local checkpoint is not a publication or sign-off.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
Forward exact d3dc3ce and reuse its mount helper once. Existing privacy ancestor 7dc7281 remains intact. Combined issuer and observer Rust qualification and recorded authority/lifecycle closures remain pending; no publication or sign-off.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
Keep the reviewed runtime JSON schema unchanged. Rotate the private Secret and cached consumers for changed source/authority revisions even when material bytes are identical; preserve typed Pending privacy non-issuance. Add unrun Rust regressions and canonical App ID serialization. Combined Cargo qualification and recorded boundary closures remain pending.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
Forward exact 068ae16 while retaining GitHub d3dc3ce and issuer rotation repairs. The offered Cargo lease was released unused before this prerequisite merge. Eleven read-only bootstrap fixtures and nineteen credential CLI/schema tests pass; combined Rust qualification and documented boundary closures remain pending.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
Use read-only preflight before ordinary Ready without a self-bootstrap cycle. Preserve status lineage and pause UID-owned governed execution instead of deleting namespace/state. Keep optional observer availability independent of source readiness and prevent retired GitHub projections from returning through the legacy optional mount. Twenty fast tests and CLI types pass; new Rust regressions remain unrun. No Cargo lease held or publication approval claimed.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
Retain valid delivery after writer retirement, protect enrolled reader names, and add explicit observer egress and purpose boundaries. Active-SRE observation privacy remains an explicit architecture blocker; no rollout is authorized.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
Forward public 550 at 2d85d5a without copying private implementation. Keep credential candidate scope and standalone behavior intact; qualification is recorded separately.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
Record the public 550 forward, guarded Rust results, explicit lease release and remaining privacy/API qualification boundaries without claiming native Secret GET is UID-aware.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
Verify current canonical observation credentials and full privacy authority on every bounded TLS request. Bind proofs to target, grant, recipient identities, purpose, version, scope and nonce; pin live verifier identity, expire credentials and gate readiness on real capability. Retain name-hold lifecycle guards and standalone defaults. Core qualification passed; real Kind/CNI, private BFF Rust and independent review remain required.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
Repair ordered-mask attenuation, persistent import removal intent, local legacy discovery failures and referenced-credential rollout revisions. Replace Team credential unlaunch with owned pause/quiescence, current authority/receipt regeneration and fenced resume. Add focused API/full-reconcile regressions. Fast checks pass; core Rust qualification and bounded re-review remain required.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
Apply the three explicitly approved compile corrections: point to the rebind tests, expose the unchanged runtime hold function at intended module scope, and import ListParams. Reviewed behavioral bodies are unchanged; private BFF is untouched.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
Complete the approved test-module wiring correction without changing test or production behavior.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
Use a lexical MutexGuard scope instead of explicit drop and collapse the equivalent CAS predicate in the API fixture. No production or test assertions changed; no lint waivers.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
Record the approved mechanical corrections, passing targeted semantics and strict paired Clippy, immutable qualified code head, explicit Cargo lease release and remaining independent/private acceptance gates.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
Use the existing full SHA-256 provider boundary for controller revisions, GitHub connection names and shared observation proof digests. Preserve the full 64-hex proof/revision contract and 16-hex connection suffix; do not use the truncated content identifier. Add a fixed wire digest regression and update the fixture without adding dependencies or crypto waivers. 32 affected cases and strict paired Clippy pass under the 8.5 GiB floor.

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

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

github-actions Bot commented Sep 9, 2026

Copy link
Copy Markdown

Dependency Review

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

Scanned Files

None

Comment thread inference-router/src/github_services.rs Fixed
…urce gates

The production GitHub service now opens only its literal mounted configuration path; mutable path injection exists solely in test code, sharing the same bounded reader. No HTTP/configuration input can select another production file. Preserve credential rotation behavior and normal test fixtures. Extract the unchanged suspend/rebind replica decision into its owner module and cover all combinations, keeping the existing reconciler cap. Apply the full existing formatter instead of waiving CI. Affected tests, production binary checks, paired strict Clippy and the real cap/schema regression pass. No CodeQL alert is dismissed or query excluded.

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

Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
Comment thread inference-router/src/github_services_tests.rs Fixed
@pallakatos

Copy link
Copy Markdown
Collaborator Author

Owner-approved CodeQL disposition: alert 804 (rust/path-injection) is a test-only/framework-source false positive at head 80cffb63399aa945de680140683dd202252e947f, analysis merge 3ae018743f4c9f5ebc5f37f6bfa23ab9fcef9cfd. The owner explicitly selected false-positive-804 after reviewing this scope.

The sink at inference-router/src/github_services_tests.rs:9 is reachable only under cfg(test) and receives paths created by local tempfile fixtures. Production has no configurable path field and opens the literal /etc/kars/github/config.json. The reported source is server-owned Axum State<Service> initialized with with_state(service), not a path supplied by an HTTP caller.

Only alert 804 is dispositioned. No query exclusion, security-check removal, audit-signature waiver, or merge approval is implied. Native credential/ServiceAccount/CNI and combined active-SRE qualification remain outstanding; this PR stays draft.

Keep exact namespace UID checks using the actual Kubernetes JSON field despite the CEL NamespaceMetadata declaration mismatch. Add a native hosted positive/negative/positive probe using unchanged shipped predicates and owned fixtures, with precise denial assertions and bounded cleanup.

Preserve bounded credential/GitHub schemas in generated Task/Team CRDs, compare rendered Helm includes, and add canonical grant CEL and standard labels. Local qualification: 30 Helm drift, 17 CNCF, 84 controller credential, 16 CLI contract and 53 Python harness cases; strict paired Clippy/fmt. Native API execution and complete hosted qualification remain pending. No audit signature or gate waiver.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
…ures

Replace the controller probe bytes_stream dependency with Response::chunk, preserving bounded buffering and explicit transport/JSON failure. Full paired builds masked the missing reqwest stream feature in controller-only benchmark compilation (job102638710681 at f8d641f).

Add exact-limit, oversize, truncated-body-after-valid-JSON and invalid-JSON HTTP regressions. This is a LOCAL checkpoint: Rust execution and isolated-controller compilation are pending the exclusive composition qualification owner; no public push or benchmark waiver.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
Combine Secret key lists rather than heterogeneous byte/string value maps; compare the nullable paused envelope digest dynamically; and dynamically select kind-specific exposure fields behind unchanged kind guards. Keep every UID, purpose, current-generation, Ready=False, selector, resource, denial and Fail/Deny constraint.

The broader native API run against f8d641f exposed these type-check warnings; 17 CLI contract cases and Helm rendering pass for the repair. Native positive/negative cases are being added separately and remain required. No warning suppression or audit waiver; local checkpoint only.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
Use unchanged rendered predicates in uniquely scoped real API fixtures. Require current warning-free type checks, exact intended allow/deny outcomes for Secret wire representations, nullable paused Task authority and public exposure, and UID-safe cleanup without starting custom controllers or public workloads.

74 unit/harness cases pass; no native result is claimed until hosted execution. Preserve all existing SRE/full gates and diagnostic privacy; native policy failure does not skip the unchanged bootstrap gate. No authentication, quiescence or CNI claim from administrative expression fixtures.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
Kubernetes omits empty AdmissionRequest.subResource. Normalize only its absence to the primary-resource empty string across grant, reader-finalization and SRE token policies. Keep explicit status/token/finalize authority unchanged; no admission or permission bypass.

Extend native policy qualification to install the actual grant-authority policy before primary creation, metadata and status updates, plus a regression refusing to pre-seed around admission. 75 unit/harness cases, 17 CLI contracts and Helm lint pass; expanded native qualification remains pending.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
Reuse the existing minimal SRE fixture chart for the fresh-install case instead of rendering every unrelated template under the test deadline. Preserve all namespace/account ownership assertions and existing live-lookup upgrade cases. Make fresh rendering explicitly client-only and bound its child process below the unchanged test deadline.

All 24 related namespace, SRE-authority and credential-contract cases passed. No production changes, timeout increase or skipped assertions.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
Forward only the three match conditions from native-qualified SRE 3f20fac. Preserve protected oldObject names when collection DELETE omits request.name, without mixed string/dyn lists. Registrar/use/renew rules, bindings and existing optional-subresource repair remain intact.

All three match-condition blocks compared byte-identical to 3f20; its job102698405012 proved nine ordinary/protected/admin collection cases. Current target passed 25 related CLI contracts and Helm lint. Target lifecycle/full SRE acceptance remains pending; no forced namespace finalization or gate waiver.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
…ition

Forward exact c08465a policy and native regression repair. The composed API proof found ordinary ReplicaSet creation allowed but private creation denied for the built-in Deployment controller, which has cluster-wide ReplicaSet-create rather than Pod-create authority. Recognize that existing capability only for apps/replicasets; retain all other predicates and grant no RBAC.

The resulting consumer policy is byte-identical to native-qualified 203e232. All 67 Python regressions and Helm lint pass, and independent bounded source review found no significant issues. Include real private Deployment-to-ReplicaSet-to-unscheduled-Pod UID-chain assertions. Fresh composed readiness and genuine audit signoffs remain required; no private active-run pin change or customer deployment.

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

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

Actual native metadata-only audit showed the core controller receives 403 when existing observer verification gets its consumer ReplicaSet. Add only apps/replicasets GET to the existing credential-controller role, keeping its sole core ServiceAccount binding and all UID/Deployment-lineage checks. No list/watch/write permissions or other actor bindings are added.

Add a rendered-role contract regression and record the existing ephemeral workspace scope. Helm lint passes; the locked local Vitest version is unavailable and a mismatched cache was rejected, so the existing hosted CLI job must qualify that regression before merge. Native observer issuance/TLS/CNI remain mandatory. No H100/customer/main change.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
…ive diagnostics

Keep all authority, TLS, proof and readiness decisions unchanged. Record only fixed failing stages, HTTP status and transport classification, including cancelled checks. Add diagnostic regression tests and operator interpretation guidance.

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

Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
Match the existing serialized Status fixture pattern instead of the legacy unboxed ErrorResponse type. No production readiness or authority behavior changes.

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

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

Restack the existing credential PR on signed services source 6b34d5e while preserving the reviewed failure-only observer diagnostics. Retain v1/v2/GitHub and registered SRE refresh, full private workload/cleanup probes, and stronger current-epoch/control-version privacy semantics. No readiness, TLS, authority or egress policy is relaxed.

Rustfmt, Helm lint, 108 SRE Python cases and 46 credential-schema cases pass. Local Cargo remains blocked by the shared disk floor; hosted Rust/Clippy and the private native workflow must qualify the changes. Diagnostics export only fixed stages/status/transport categories, not secrets or bodies. No new public diagnostic branch or H100 deployment.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
…iter proof

Extend existing protected-scope SAR checks to ReplicationController, Job and CronJob create/update/patch. Reuse effective-permission verification in the shared writer identity path so both enrollment and uncached private observation RPC snapshots enforce it. Add per-permission and per-namespace SAR matrices, pinned RPC revocation regressions, and router fail-closed coverage without granting permissions or changing private proof bindings.

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

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

Add reviewed activation to the existing grant preview/apply flow, passive consumption admission, exact effective-bundle/root/namespace checks, retained namespace protection and scoped UID-fenced retirement. Fence private issuance and both privacy RPC snapshots; genuinely rotate private service/TLS material and compare App public keys before treating a key change as rotation. Preserve ordinary core and the separate agent-visible legacy token. Include native named-RBAC dry-run fixtures and unit coverage. Rust execution and native admission qualification remain pending a fresh parent-controlled lease/run.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
Preserve exact public budget/accounting and managed-MCP implementations while composing credential rebind, private-scope, shared Pod labels and API-egress wiring. Extend reviewed activation for the configured budget TLS input and private budget audience, retaining operator-owned rotation and waiting for old root consumers without rewriting ledger/cancellation logic. Correct tightly coupled activation source scoping found during composition. No private repository history, deployment, public push, or unleased Cargo execution.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
Preserve every production function body and the existing crate API while separating live verification, runtime/retirement, consumer inventory, and tests. Keep the canonical bundle include at its original facade path. No policy, authorization, lifecycle, or public ancestry changes; no LOC override or Cargo execution.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
Keep the extracted test modules at module scope. Rechecked all 20 production functions byte-for-byte against immutable463a3e44 and preserved the external activation API; no behavior or policy changes.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
…thority

Apply unchanged private metadata authorization/UID guards to namespaces/status and namespaces/finalize. Retire all actual credential/token/host consumers and captured old Pod UIDs before epochs, independent of budget TLS; stamp templates before restoring the reviewed root replica intent. Remove legacy consuming-Pod UID/spec grandfathering and retain truly non-consuming holders. Add named-subresource dry-run and bound-token authority fixtures plus budget-disabled retirement ordering regressions. No public push, native execution or unleased Cargo.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
Compose the actual public integration ancestry after the two activation security repairs. Preserve the credential diagnostic tests alongside the evaluator tests in CI, and retain public evaluator, MCP, budget and API-egress implementation unchanged. Core credential source guards still match cb386; the supplied CredentialSourceUnavailable evidence does not justify weakening predicates or attributing the failure to a model or pressure. No private history/tree changes, Cargo, deployment or native dispatch.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
Persist reviewed replica intent and UID-bound retirement attempts before pausing the root. Capture the TLS baseline only after complete old-consumer absence, retain it across retries, and require a fresh post-retirement public key before restoring qualified templates. Restrict retirement records to the credential operator and cover retry, CAS, named-subresource and publication failure paths.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
Retain the reviewed pre-retirement public-key digests with the protected attempt as well as its post-retirement baseline. Reject restoring an earlier exposed key even when its Secret resourceVersion advances, and cover that retry before accepting a genuinely different key.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
Keep the existing workspace dependency entries and lockfile unchanged.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
Use the equivalent Rust 2024 let-chain required by strict Clippy. Preserve all four namespace/Secret/version/key checks, short-circuit order and existing error propagation. Bootstrap runtime admission remains separately blocked pending the actual missing-key/expression evidence; no policy or readiness gate is changed.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
Extend the existing bounded collector with canonical-source-only missing-key and provided expression-site facts for kars-private-consumption. Preserve unknown or ambiguous evidence as unclassified, redact all request values, and retain the original 422/bootstrap failure. Cover the observed failure class, known fields and CEL bindings, redaction, attribution, drift and boundedness without changing policy or workflow behavior.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
Preserve the existing actor and UID predicates while moving namespace access out of match conditions. Add real ordinary/protected admission probes, missing-metadata fail-closed cases, and live namespace responses in credential API fixtures.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903

# Conflicts:
#	.github/workflows/ci.yml
Leave default proxy filters intact. Use a separate loopback proxy restricted to GET connection paths for the two owned namespaces and a nonexistent Pod, verified with the actual kubectl binary against a credential-free API fixture.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
Retain the Team owner on the principal instead of presenting a Team-owned child under an unrelated root. Keep budget and task identity enforcement unchanged.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
…ter ownership

Publish a controller-owned previous resourceVersion only for the exact UID/RV-fenced metadata ownership patch, and retain it only for that current source incarnation and version. Prime real controller identities with inert native fixtures.

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/pr7-governed-services to kars-bridge September 11, 2026 12:42
if (entry && typeof entry === "object" && !Array.isArray(entry)) {
value[name] ??= {};
merge(value[name], entry);
} else value[name] = entry;
Comment on lines +180 to +184
.get(format!(
"https://{}:{}/internal/observations/scope",
binding.server_name,
crate::service_observer::PORT
))
Use the same package-qualified import as the existing harness tests so direct discovery and named module execution both run the real kubectl fixture.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
Keep UID and resourceVersion preconditions intact. Exercise PATCH, POST, PUT and GET request construction without changing production admission or authority.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eb3654cd-f1e0-445a-8734-430800af1903
@pallakatos

Copy link
Copy Markdown
Collaborator Author

Published the bounded native-harness repair set at affa124d706616ae0cb06bc5b1df00e8d1b1eeff: package-qualified connection-proxy discovery and the Kubernetes merge-patch Content-Type for namespace fences. UID/resourceVersion preconditions and production authority/admission expressions are unchanged. The added transport regression fails on the previous media type and passes after correction; all 218 Python discovery cases pass locally. Fresh qualification is on Azure/kars. This is not a claim that the remaining budget, CodeQL, source-review or native runtime gates pass.

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