Skip to content

chore: synchronize current dev into exact profile policy branch - #792

Draft
ORESoftware wants to merge 156 commits into
agent/build-server-exact-profile-policy-final-20260804from
dev
Draft

chore: synchronize current dev into exact profile policy branch#792
ORESoftware wants to merge 156 commits into
agent/build-server-exact-profile-policy-final-20260804from
dev

Conversation

@ORESoftware

Copy link
Copy Markdown
Owner

Temporary synchronization PR used to establish whether current dev@bcc682d77466ee16b4dd51209778225d6668f039 can merge cleanly into the final exact-profile branch. Merge only if GitHub reports a clean semantic union; otherwise close and reconcile the overlapping policy files explicitly.

ORESoftware and others added 30 commits August 1, 2026 12:43
)

Audit finding #1 (GitHub issue #30): remote/argocd/clusters/*/applications.yaml
were one-shot `kubectl apply` bootstrap state — later git edits to the
Application set never reached clusters and the Application CRs had no drift
detection.

Add a self-referencing root Application per cluster (dd-root-aws, dd-root-gcp,
dd-root-hetzner) that syncs its own remote/argocd/clusters/<cloud> path with
automated + prune + selfHeal, wired into each cluster kustomization so it
manages itself. The self-source path stays inside k8s-cluster (not a submodule
gitlink) so it renders (docs/app-deploy-contract.md render-trap); no app-level
cascade finalizer, matching every other Application here, so pruning a removed
child deletes only its Application CR (orphaning, never cascade-deleting, its
workloads).

Verified: `kubectl kustomize` renders all three overlays with the root app +
provider label; k8s-cluster-e2e 12/12 (render-trap + application-declaration
ratchets green).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…ncy, staleness, and browser auth tests

Resolves a contradiction between two committed suites that assert the SAME
deployment (remote/argocd/dd-next-runtime/dd-ai-agent-bridge.deployment.yaml):
cluster-hardening.test.ts still required the bearer to bind
dd-agent-secrets/SERVER_AUTH_SECRET (and doesNotMatch dd-ai-agent-bridge-secrets),
while the deployment, its ExternalSecret, the kind fixture, the CI kind script,
and the Rust config all moved to the dedicated dd-ai-agent-bridge-secrets/inbox_token.
That left repo-checks red. Updates the stale assertions to the dedicated secret and
forbids the shared credential from reappearing in the manifest.

Augments ai-agent-bridge-k8s-contract.test.mjs with three regression tests:
- secret cross-consistency: the deployment, ExternalSecret, kind fixture, and CI
  script must all name the same secret + key, closing the drift class that shipped
  a broken merge (deployment pointing at a key nothing provisioned).
- staleness guard: locks in the hostPath bin-name/Cargo.toml check and the
  post-build binary-existence guard that ended the 2026-07-31 CrashLoopBackOff.
- OTEL coherence: telemetry exports to the in-cluster otel-collector over http/protobuf.

Adds a Playwright + Puppeteer browser auth-enforcement smoke
(ai-agent-bridge-auth-smoke.mjs): drives a deployed bridge and asserts an
unauthenticated GET /agents is refused (401/403), the live counterpart to the
static manifest contract. Gated by AI_BRIDGE_HTTP_URL (skips cleanly when unset),
wired into test:all and a new ai-agent-bridge-auth-smoke GitHub Actions workflow
(manual + daily). Verified both engines PASS on 401 and FAIL on a simulated 200.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Add a bounded startup-validated repository-to-profile policy for dd-build-server. Canonical GitHub HTTPS and SSH aliases resolve to one exact identity; exact rules override broad prefix fallback and reject profile downgrades, malformed policy, unknown or disabled profiles, duplicate identities, ambiguous URLs, and oversized input.

The initial k8s-cluster binding allows only rust-verify. Dedicated exact-head CI passed complete build-server compilation, repository/profile policy tests, fixed-profile and idempotency/NATS suites, continuity Rust/router tests, actionlint, GitOps rendering, deployment contracts, secret scanning, no-PAT propagation, cluster E2E, OpenAPI, catalog, and generated-binding drift checks.

Refs DEN-1550, DEN-539, DEN-1606.
Add the independent Rust durable-execution control plane, JetStream-backed state and event contracts, worker lease/fencing protocol, DAG and one-off task scheduling, idempotency recovery, absolute run deadlines, OpenAPI, metrics, tests, documentation, and inert-by-default Kubernetes GitOps resources.

Validated with strict Rust linting, complete state-machine tests, deterministic OpenAPI generation, Kustomize rendering, live JetStream protocol and deadline smokes, production container build, secret scanning, and current-dev semantic reconciliation.
Replace runtime source cloning and compilation with reviewed digest-pinned, non-root bridge and Slack-command images. Preserve signed Slack identity, durable idempotency, probes, NetworkPolicies, secrets, observability, and dry-run mode. Exact Kubernetes, ephemeral kind, Slack GitOps, OpenAPI, catalog, no-PAT, E2E, and secret checks passed; remaining live activation evidence stays under DEN-845/DEN-1041.
Add the digest-pinned, non-root provider runner and its bounded network policy at replicas zero. Keep provider secrets required so premature activation fails visibly, preserve the bridge Service boundary, and defer all provider spend until DEN-391/DEN-847 authorize a one-replica canary. Focused smoke, GitOps, continuity, E2E, catalog, and secret checks passed.
Compose the merged zero-replica runner resources from #1115 with the current bridge and Slack-command release pin. Preserve the no-PAT, dry-run, immutable-image boundaries.
Keep the zero-replica provider runner in both the explicit exporter WATCH_APPS configuration and the embedded DEFAULT_WATCH_APPS fallback. Add focused regression coverage for replicas, canonical app identity, and both watch surfaces. The observability/static contract, E2E, overlay rendering, continuity, and secret checks pass; the unrelated private-backend installation-authority gate remains tracked separately.

Refs DEN-845, DEN-847.
Semantically reconcile PR #1119 with current dev after #1118: retain dev's exporter fallback and focused observability contract, while preserving only #1119's reviewed runner digest metadata, dedicated release contract, and credential-free CI workflow. No activation, secret, NetworkPolicy, or submodule changes beyond the reviewed feature branch.

Refs DEN-845, DEN-391, DEN-847.
Repin the held-zero provider runner to the current reviewed ai-agent-bridge release and add focused GitOps, observability, and immutable-runtime contracts. The unrelated private-backend credential gate remains documented; no PAT fallback or provider activation is introduced.
Compose merged runner PR #1119 and observability coverage with the current bridge/Slack image release. Preserve exact source/digest pins, dry-run Slack dispatch, and no-PAT boundaries.
Repin the bridge and signed Slack command ingress to the current reviewed ai-agent-bridge release, advance the source gitlink, and retain immutable-runtime, no-PAT, dry-run, and held-zero provider activation boundaries. The unrelated private-backend GitHub App credential gate remains documented.
Replace the stale in-pod-build and thirteen-binding instructions with the current immutable bridge, Slack-command, and held-zero runner release, including live-evidence and digest-only rollback gates.
Add a scheduled, credential-free DNS/TLS and unsigned Slack route probe with metadata-only evidence. Preserve signed dry-run, held-zero provider activation, no-PAT behavior, and strict fail-closed status expectations.
Align the dev public-ingress workflow with the default-branch dispatcher and trigger the first registered GitHub-hosted DNS/TLS and fail-closed Slack route measurement. Preserve credential-free, metadata-only, dry-run, held-zero, and no-PAT boundaries.
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.

1 participant