Skip to content

release: promote demo-ready dev for v0.3.0-beta.5#317

Merged
gnanirahulnutakki merged 161 commits into
mainfrom
dev
Jul 23, 2026
Merged

release: promote demo-ready dev for v0.3.0-beta.5#317
gnanirahulnutakki merged 161 commits into
mainfrom
dev

Conversation

@gnanirahulnutakki

@gnanirahulnutakki gnanirahulnutakki commented Jul 23, 2026

Copy link
Copy Markdown
Member

Summary

Promote the current green dev tree to main as the source commit for the next immutable beta. This promotion includes the complete current Phase-L local client and the accumulated read/governance foundations since v0.3.0-beta.4, including the new one-command sith launch graphical entry point.

Demo outcome

  • sith launch opens the native desktop on macOS and the loopback browser UI elsewhere.
  • --kubeconfig-dir supports bounded, in-memory demo hydration without requiring a default kubeconfig.
  • CLI/TUI, fleet search and correlation, advisory investigation, local pod operations, browser/native IDE, and local MCP reads remain on the shared fleet model.
  • R2/R4 remain advisory-only; this promotion does not add mutation or dispatch.

Release boundary

  • This PR promotes code only; it does not create or move a tag.
  • v0.3.0-beta.5 must not be cut until P1 E9: Make released hub OCI package publicly pullable #172 is resolved by an explicit package-admin decision and the existing beta.4 Hub digest is anonymously pullable.
  • Preserve dev; do not delete the release source branch.

Verification

Exact dev merge c77176454d4fe66555f443f9625699ee56c53d5f:

Summary by CodeRabbit

  • New Features

    • Added sith launch for one-command UI or desktop startup, including kubeconfig-directory support.
    • Added offline audit verification commands for complete exports and paginated audit records.
    • Added a read-only Hub console with browser OIDC login, fleet, inventory, correlation, and CVE views.
    • Added optional loopback metrics plus /healthz and /readyz endpoints.
    • Expanded investigation insights with image-pull, Argo CD, GitHub workflow, and sanitized log-cause evidence.
    • Added bounded cost, GPU, alert, and cloud inventory evidence projections.
  • Bug Fixes

    • Improved workspace isolation, pagination limits, cancellation handling, and kubeconfig import race protection.
    • Strengthened fail-closed validation, audit integrity, approval expiry, and sensitive-data redaction.

Gnani Rahul and others added 30 commits July 15, 2026 01:04
Add a pinned authorization-code and PKCE browser boundary that keeps upstream proofs and Sith session JWTs out of browser payloads. The Hub stores only a bounded, single-use transaction and returns the successful session in a strict host-only cookie.

Keep the existing fleet API bearer-only, compose the optional provider through the hardened Hub runtime, and document the operator secret and Helm contract.

GSTACK-Checkpoint: 2026-07-15/e8-browser-oidc-session#1
Signed-off-by: Gnani Rahul <gnani.nutakki@gmail.com>
…r-oidc-session

feat(e8): broker browser-safe hub OIDC sessions
GSTACK-Checkpoint: 2026-07-15/e10-loopback-metrics#1
Signed-off-by: Gnani Rahul <gnani.nutakki@gmail.com>
…ack-metrics

feat(hub): add loopback operator metrics
GSTACK-Checkpoint: 2026-07-15/e10-process-audit-sink#1
Signed-off-by: Gnani Rahul <gnani.nutakki@gmail.com>
…ss-audit-sink

feat(hub): supervise auth audit delivery
Keep the common request-admission boundary as the only browser OIDC limiter debit. Add production-boundary coverage proving ten complete flows consume twenty requests and that rejection happens before transaction creation.

Fixes #180

GSTACK-Checkpoint: 2026-07-16/browser-oidc-rate-limit#1
Signed-off-by: Gnani Rahul <gnani.nutakki@gmail.com>
…dc-rate-limit

fix(hub): count browser OIDC requests once
GSTACK-Checkpoint: 2026-07-16/kubeconfig-timeout-bound#1
Signed-off-by: Gnani Rahul <gnani.nutakki@gmail.com>
…-timeout-bound

fix(kubeconfig): quarantine timed-out operations
GSTACK-Checkpoint: 2026-07-16/brain-image-evidence#1

Signed-off-by: Gnani Rahul <gnani.nutakki@gmail.com>
Co-authored-by: Gnani Rahul <gnani.nutakki@gmail.com>
GSTACK-Checkpoint: 2026-07-16/fleetcache-workspace-scope#1

Signed-off-by: Gnani Rahul <gnani.nutakki@gmail.com>
Co-authored-by: Gnani Rahul <gnani.nutakki@gmail.com>
GSTACK-Checkpoint: 2026-07-16/kubeconfig-query-pagination#1

Signed-off-by: Gnani Rahul <gnani.nutakki@gmail.com>
Co-authored-by: Gnani Rahul <gnani.nutakki@gmail.com>
Qualify record identity, aliases, coverage, operational state, and change notifications by validated workspace boundaries. Reject mixed replace and watch inputs before mutation while preserving scoped query defense.

Add race, fuzz, PostgreSQL isolation, and real two-cluster Kind proof for identical resource identities and independent failure paths.

GSTACK-Checkpoint: 2026-07-16/fleetcache-workspace-mutations#2
Signed-off-by: Gnani Rahul <gnani.nutakki@gmail.com>
…-workspace-mutations

fix(fleet): isolate workspace cache mutations
Bind directory traversal and reads to one validated os.Root, verify walked and opened identities, and reject replacement symlinks before parsing.

Refuse deferred local credential and path-based exec references after the root closes, with deterministic root, file, symlink, and ancestor replacement coverage.

GSTACK-Checkpoint: 2026-07-16/kubeconfig-directory-race#2
Signed-off-by: Gnani Rahul <gnani.nutakki@gmail.com>
…-directory-race

fix(kubeconfig): anchor directory imports
Read cluster coverage state and persisted facts in one workspace-scoped repeatable-read, read-only transaction while preserving existing write semantics.

Add deterministic PostgreSQL interleaving coverage that commits ReplaceSnapshot between reads, verifies transaction-local RLS, and rejects mixed freshness and fact generations.

GSTACK-Checkpoint: 2026-07-16/hubdb-repeatable-read#2

Signed-off-by: Gnani Rahul <gnani.nutakki@gmail.com>
Authorize every caller before joining one active refresh per workspace, then run shared collection on a detached internal trace so caller cancellation and request values cannot cross boundaries.

Add deterministic race coverage for tenant isolation, cancellation, shared failures, panic cleanup, and defensive results.

GSTACK-Checkpoint: 2026-07-16/hub-refresh-coalescing#2
Signed-off-by: Gnani Rahul <gnani.nutakki@gmail.com>
…atable-read

fix(hubdb): keep fleet reads in one snapshot
…h-coalescing

fix(hubfleet): coalesce workspace refreshes
Use one absolute deadline for current-object availability checks, tolerate delete/recreate transitions, and fail closed on terminal or malformed state without logging response bodies.

GSTACK-Checkpoint: 2026-07-16/ocm-addon-wait-lifecycle#2
Signed-off-by: Gnani Rahul <gnani.nutakki@gmail.com>
…wait-lifecycle

fix(ocm): make addon wait lifecycle-safe
Parallelize transport and validation behind a finite worker pool while serializing persistence and joining every worker on cancellation, store failure, or panic.

GSTACK-Checkpoint: 2026-07-16/hub-spoke-worker-pool#2
Signed-off-by: Gnani Rahul <gnani.nutakki@gmail.com>
…worker-pool

fix(hubfleet): bound spoke snapshot workers
Signed-off-by: Gnani Rahul <gnani.nutakki@gmail.com>
…lignment

fix(ci): align pinned Helm tooling
Paginate server-side Table lists with opaque continuation tokens,
row and byte budgets, and retain only display fields for selected
facts. Sanitize non-success bodies at the reviewed kubeconfig HTTP
boundary without losing status classification.

GSTACK-Checkpoint: 2026-07-16/table-materialization#1
Signed-off-by: Gnani Rahul <gnani.nutakki@gmail.com>
…rialization

fix(fleet): bound generic table materialization
Signed-off-by: Gnani Rahul <gnani.nutakki@gmail.com>
gnanirahulnutakki and others added 23 commits July 21, 2026 13:14
…-20260721

fix(deps): remediate x/text normalization loop
Align the desktop CLI gate with the Wails module, reject lookalike or failed version probes, and exercise the policy in the standard script suite.

GSTACK-Checkpoint: 2026-07-21/wails-policy#1
Signed-off-by: Gnani Rahul Nutakki <gnani.nutakki@gmail.com>
…0260721

fix(desktop): enforce exact Wails tool version
Upgrade Syft and Cosign to current stable fixes, synchronize CI and release pins with operator documentation, and enforce the compatibility contract in the standard policy suite.

GSTACK-Checkpoint: 2026-07-21/release-tooling#1
Signed-off-by: Gnani Rahul Nutakki <gnani.nutakki@gmail.com>
…g-20260721

fix(release): refresh supply-chain tooling
Mint one immutable database-clock expiry for every new approval, enforce the half-open lifetime in the single-use consume update, and bind expiry into versioned audit evidence.

Retain legacy rows fail closed, preserve mixed-format offline verification, and document the transactional migration and rolling-upgrade contract.

GSTACK-Checkpoint: 2026-07-21/approval-grant-expiry#1
Signed-off-by: Gnani Rahul Nutakki <gnani.nutakki@gmail.com>
…y-20260721

feat(approvals): expire grants after ten minutes
Add an immutable GitOps provenance bundle and pure fail-closed resolver for confirmed entity-local R2/R4 candidates. Bind readiness to one fresh source claim and the exact live GitHub handler adapter and schema.

Reuse handler-owned canonicalization, preserve every source-owned Git precondition, close descriptor/freshness/cancellation drift windows, and keep PEP, credentials, network, mutation, and execution structurally absent.

GSTACK-Checkpoint: 2026-07-22/e14-gitops-provenance#1
Signed-off-by: Gnani Rahul Nutakki <gnani.nutakki@gmail.com>
…nce-20260722

feat(remediation): resolve source-owned GitOps provenance
Add the observed-only git-source-snapshot/v1 contract for one canonical repository file observation. Bind exact current bytes to their Git blob identity, one object format, stable source and subject identity, attached evidence, and a bounded validity interval.

Keep DesiredChange, Brain and resolver wiring, authority, credentials, I/O, persistence, mutation, and execution structurally absent so R2/R4 remain advisory-only.

GSTACK-Checkpoint: 2026-07-22/e14-git-source-snapshot#1
Signed-off-by: Gnani Rahul Nutakki <gnani.nutakki@gmail.com>
…pshot-20260722

feat(remediation): define immutable Git source snapshot
Seed temporal approval controls from PostgreSQL statement time with safe future and expired margins. Assert the database-observed sides and exact ten-minute lifetimes before refusal checks without changing production behavior.

GSTACK-Checkpoint: 2026-07-22/approval-expiry-clock#1
Signed-off-by: Gnani Rahul Nutakki <gnani.nutakki@gmail.com>
…xpiry-clock-20260722

test(hubdb): eliminate approval-expiry clock-boundary flake
Add desired-change/v1 as an opaque exact binding between one validated Git source snapshot, one canonical transformer version, cited evidence, and exact proposed bytes. Reject forged, ambiguous, oversized, and no-op claims while preserving deterministic mutation-isolated state.

Keep construction package-private and leave R2/R4, renderer policy, resolver wiring, authority, credentials, I/O, persistence, mutation, and execution structurally absent.

GSTACK-Checkpoint: 2026-07-22/e14-desired-change#1

Signed-off-by: Gnani Rahul Nutakki <gnani.nutakki@gmail.com>
…-20260722

feat(remediation): bind immutable desired changes
Use an explicit Lax final session cookie so the safe console redirect receives the newly issued session after the cross-site IdP callback. Retain the host-only Secure and HttpOnly boundary, reject unsafe methods, and document the exact CSRF trade-off.

GSTACK-Checkpoint: 2026-07-22/e8-oidc-session-handoff#1

Signed-off-by: Gnani Rahul Nutakki <gnani.nutakki@gmail.com>
…on-handoff-20260722

fix(hub): preserve browser OIDC session handoff
Copy the validated Ed25519 key into runtime-owned memory, then clear the parser-owned allocation before returning. Lock the ownership transfer with a focused non-aliasing and signing regression.

GSTACK-Checkpoint: 2026-07-22/e3-session-key-lifetime#1

Signed-off-by: Gnani Rahul Nutakki <gnani.nutakki@gmail.com>
…key-copy-20260722

fix(hub): clear parser-owned session key bytes
Align operator, architecture, ADR, specification, alert annotation, and session records with implemented bounds and live landing proof. Clarify evidence semantics without changing alert evaluation, connector-wave scope, IAM, or runtime behavior.

GSTACK-Checkpoint: 2026-07-22/deep-audit-contract-drift#1

Signed-off-by: Gnani Rahul Nutakki <gnani.nutakki@gmail.com>
…tract-drift-20260722

docs: reconcile deep-audit evidence contracts
Route auto mode to the native desktop on macOS and the loopback-only UI elsewhere. Reuse the bounded directory importer, reject UI-only flags in desktop mode, and allow an explicit demo directory without a default kubeconfig backend.

Document the first-run path and cover platform selection, command registration, safe dependency failures, loopback startup, and explicit-directory bootstrap.

GSTACK-Checkpoint: 2026-07-23/demo-launch#1
Signed-off-by: Gnani Rahul Nutakki <gnani.nutakki@gmail.com>
feat(cli): add one-command local demo launcher
@coderabbitai

coderabbitai Bot commented Jul 23, 2026

Copy link
Copy Markdown

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 1ba1489a-52dd-4ad7-a5db-e915527ca3fe

📥 Commits

Reviewing files that changed from the base of the PR and between 368b3a5 and c771764.

⛔ Files ignored due to path filters (1)
  • go.sum is excluded by !**/*.sum
📒 Files selected for processing (293)
  • .github/workflows/ci.yml
  • .github/workflows/release.yml
  • Makefile
  • README.md
  • charts/sith-hub/README.md
  • charts/sith-hub/templates/deployment.yaml
  • charts/sith-hub/values.schema.json
  • charts/sith-hub/values.yaml
  • docs/ARCHITECTURE.md
  • docs/EPICS.md
  • docs/ROADMAP.md
  • docs/SITH-NOTION.md
  • docs/adr/0005-ai-mcp-ardur-pdp.md
  • docs/adr/0008-deterministic-advisory-brain.md
  • docs/adr/0009-release-supply-chain.md
  • docs/adr/0011-opencost-namespace-cost-facts.md
  • docs/adr/0012-opencost-coverage-aware-workspace-rollup.md
  • docs/adr/0013-dcgm-gpu-utilization-facts.md
  • docs/adr/0014-connector-wire-adapter-version-split.md
  • docs/adr/README.md
  • docs/experiments/M0-ocm-falsification.md
  • docs/runbooks/hub-alerts.md
  • docs/specs/E2-readfed-brain-integrations.md
  • docs/specs/F2.1-source-adapter-contract.md
  • go.mod
  • hack/experiments/m0-ocm-falsification.sh
  • hack/verify-release-hub-image.sh
  • hack/verify-wails-version.sh
  • internal/auditdelivery/process.go
  • internal/auditdelivery/process_test.go
  • internal/auditrecord/export.go
  • internal/auditrecord/export_test.go
  • internal/auditrecord/page.go
  • internal/auditrecord/page_test.go
  • internal/brain/boundary_test.go
  • internal/brain/cache.go
  • internal/brain/cache_test.go
  • internal/brain/evaluate.go
  • internal/brain/evaluate_test.go
  • internal/brain/graph.go
  • internal/brain/graph_elasticsearch_test.go
  • internal/brain/graph_test.go
  • internal/brain/model.go
  • internal/brain/remediation.go
  • internal/brain/remediation_test.go
  • internal/brain/replay_test.go
  • internal/brain/rules.go
  • internal/brain/testdata/replays/README.md
  • internal/brain/testdata/replays/r1-bad-deploy-causes-crashloop.json
  • internal/brain/testdata/replays/r1-stale-timeline-unconfirmed.json
  • internal/brain/testdata/replays/r2-oomkilled.json
  • internal/brain/testdata/replays/r3-elasticsearch-log-cause.json
  • internal/brain/testdata/replays/r3-fleet-image-correlation.json
  • internal/brain/testdata/replays/r4-config-drift.json
  • internal/brain/testdata/replays/r7-image-pull-backoff.json
  • internal/brain/testdata/replays/r8-argocd-sync-failed.json
  • internal/brain/testdata/replays/r9-github-actions-workflow-failed.json
  • internal/cli/audit.go
  • internal/cli/audit_test.go
  • internal/cli/audit_unix_test.go
  • internal/cli/cached_test.go
  • internal/cli/desktop.go
  • internal/cli/investigate_test.go
  • internal/cli/launch.go
  • internal/cli/launch_test.go
  • internal/cli/root.go
  • internal/cli/ui.go
  • internal/connector/argocd/boundary_test.go
  • internal/connector/argocd/project.go
  • internal/connector/argocd/project_test.go
  • internal/connector/awseks/boundary_test.go
  • internal/connector/awseks/project.go
  • internal/connector/awseks/project_test.go
  • internal/connector/contract.go
  • internal/connector/dcgm/boundary_test.go
  • internal/connector/dcgm/project.go
  • internal/connector/dcgm/project_test.go
  • internal/connector/elasticsearch/boundary_test.go
  • internal/connector/elasticsearch/project.go
  • internal/connector/elasticsearch/project_test.go
  • internal/connector/github/action_plan.go
  • internal/connector/github/action_plan_test.go
  • internal/connector/github/boundary_test.go
  • internal/connector/github/project.go
  • internal/connector/github/project_test.go
  • internal/connector/github/workflow_run.go
  • internal/connector/github/workflow_run_test.go
  • internal/connector/kubeconfig/adapter.go
  • internal/connector/kubeconfig/adapter_test.go
  • internal/connector/kubeconfig/directory.go
  • internal/connector/kubeconfig/directory_test.go
  • internal/connector/kubeconfig/local_objects.go
  • internal/connector/kubeconfig/local_streams.go
  • internal/connector/kubeconfig/resources.go
  • internal/connector/kubeconfig/table.go
  • internal/connector/kubeconfig/table_test.go
  • internal/connector/kubeconfig/watch.go
  • internal/connector/kubeconfig/watch_bootstrap_test.go
  • internal/connector/opencost/boundary_test.go
  • internal/connector/opencost/project.go
  • internal/connector/opencost/project_test.go
  • internal/connector/opencost/rollup.go
  • internal/connector/opencost/rollup_test.go
  • internal/connector/prometheus/boundary_test.go
  • internal/connector/prometheus/project.go
  • internal/connector/prometheus/project_test.go
  • internal/connector/registry.go
  • internal/connector/registry_test.go
  • internal/connector/source.go
  • internal/connector/source_test.go
  • internal/connector/version.go
  • internal/connector/version_boundary_test.go
  • internal/connector/version_test.go
  • internal/fleet/coverage_test.go
  • internal/fleet/model.go
  • internal/fleet/resource.go
  • internal/fleetcache/scoped_test.go
  • internal/fleetcache/store.go
  • internal/fleetcache/store_test.go
  • internal/fleetcache/workspace_mutation_test.go
  • internal/fleetrender/table.go
  • internal/fleetrender/table_test.go
  • internal/hubauth/oidc.go
  • internal/hubauth/oidc_browser_test.go
  • internal/hubauth/oidc_test.go
  • internal/hubdb/app.go
  • internal/hubdb/app_test.go
  • internal/hubdb/approvals.go
  • internal/hubdb/approvals_test.go
  • internal/hubdb/audit.go
  • internal/hubdb/doc.go
  • internal/hubdb/fleet.go
  • internal/hubdb/migrate.go
  • internal/hubdb/migrations/0009_policy_audit_chain.sql
  • internal/hubdb/migrations/0010_approval_grants.sql
  • internal/hubdb/migrations/0011_approval_lifecycle_audit.sql
  • internal/hubdb/migrations/0012_audit_export_action.sql
  • internal/hubdb/migrations/0013_approval_grant_expiry.sql
  • internal/hubdb/policy_audit.go
  • internal/hubdb/policy_audit_test.go
  • internal/hubdb/postgres_integration_test.go
  • internal/hubfleet/collector.go
  • internal/hubfleet/collector_concurrency_test.go
  • internal/hubfleet/collector_test.go
  • internal/hubfleet/correlation.go
  • internal/hubfleet/inventory_search.go
  • internal/hubfleet/inventory_search_test.go
  • internal/hubfleet/metrics_test.go
  • internal/hubfleet/policy_test.go
  • internal/hubfleet/refresh_coordinator.go
  • internal/hubfleet/refresh_coordinator_test.go
  • internal/hubfleet/source.go
  • internal/hubfleet/source_observability_test.go
  • internal/hubfleet/tracing_test.go
  • internal/hubruntime/config.go
  • internal/hubruntime/metrics.go
  • internal/hubruntime/metrics_test.go
  • internal/hubruntime/ocm_integration_test.go
  • internal/hubruntime/policy_audit.go
  • internal/hubruntime/policy_audit_test.go
  • internal/hubruntime/runtime_test.go
  • internal/hubserver/audit_export.go
  • internal/hubserver/audit_export_test.go
  • internal/hubserver/auth.go
  • internal/hubserver/auth_observability.go
  • internal/hubserver/auth_observability_test.go
  • internal/hubserver/browser_oidc.go
  • internal/hubserver/browser_oidc_test.go
  • internal/hubserver/console.go
  • internal/hubserver/console_assets/console.css
  • internal/hubserver/console_assets/console.html
  • internal/hubserver/console_assets/console.js
  • internal/hubserver/console_boundary_test.go
  • internal/hubserver/console_correlation_test.go
  • internal/hubserver/console_cve_test.go
  • internal/hubserver/console_inventory_test.go
  • internal/hubserver/console_test.go
  • internal/hubserver/fleet.go
  • internal/hubserver/fleet_test.go
  • internal/hubserver/probes.go
  • internal/hubserver/probes_test.go
  • internal/hydrate/hydrator.go
  • internal/hydrate/hydrator_test.go
  • internal/intent/boundary_test.go
  • internal/intent/verb.go
  • internal/intent/verb_test.go
  • internal/intentargs/boundary_test.go
  • internal/intentargs/schema.go
  • internal/intentargs/schema_test.go
  • internal/mcpserver/server_test.go
  • internal/observability/alert_rules_contract_test.go
  • internal/observability/auth.go
  • internal/observability/auth_test.go
  • internal/observability/metrics.go
  • internal/observability/metrics_test.go
  • internal/pep/approval_test.go
  • internal/pep/audit.go
  • internal/pep/audit_metrics.go
  • internal/pep/audit_metrics_test.go
  • internal/pep/audit_test.go
  • internal/pep/boundary_test.go
  • internal/pep/metrics.go
  • internal/pep/metrics_test.go
  • internal/pep/pep.go
  • internal/pep/pep_test.go
  • internal/pep/proposal_test.go
  • internal/privacy/boundary_test.go
  • internal/remediation/boundary_test.go
  • internal/remediation/desired_change.go
  • internal/remediation/desired_change_test.go
  • internal/remediation/git_snapshot.go
  • internal/remediation/git_snapshot_test.go
  • internal/remediation/gitops.go
  • internal/remediation/gitops_test.go
  • internal/tenancy/model.go
  • internal/tenancy/model_test.go
  • internal/tui/model.go
  • internal/tui/model_test.go
  • internal/webui/server_test.go
  • monitoring/sith-hub.rules.test.yml
  • monitoring/sith-hub.rules.yml
  • sessions/2026-07-15-e10-loopback-metrics.md
  • sessions/2026-07-15-e10-process-audit-sink.md
  • sessions/2026-07-15-e8-browser-oidc-session.md
  • sessions/2026-07-16-argocd-application-facts.md
  • sessions/2026-07-16-brain-image-evidence.md
  • sessions/2026-07-16-browser-oidc-rate-limit.md
  • sessions/2026-07-16-fleetcache-workspace-mutations.md
  • sessions/2026-07-16-fleetcache-workspace-scope.md
  • sessions/2026-07-16-github-merged-pr-facts.md
  • sessions/2026-07-16-helm-pin-alignment.md
  • sessions/2026-07-16-hub-refresh-coalescing.md
  • sessions/2026-07-16-hub-spoke-worker-pool.md
  • sessions/2026-07-16-hubdb-repeatable-read.md
  • sessions/2026-07-16-kubeconfig-directory-race.md
  • sessions/2026-07-16-kubeconfig-query-pagination.md
  • sessions/2026-07-16-kubeconfig-timeout-bound.md
  • sessions/2026-07-16-ocm-addon-wait-lifecycle.md
  • sessions/2026-07-16-prometheus-alert-facts.md
  • sessions/2026-07-16-table-materialization.md
  • sessions/2026-07-16-watch-bootstrap.md
  • sessions/2026-07-17-e10-database-readiness.md
  • sessions/2026-07-17-e10-fleet-read-coverage-alert.md
  • sessions/2026-07-17-e10-fleet-read-outcomes.md
  • sessions/2026-07-17-e10-policy-audit-metrics.md
  • sessions/2026-07-17-e10-portable-alert-rules.md
  • sessions/2026-07-17-e10-readiness-alert.md
  • sessions/2026-07-17-e10-readiness-metrics.md
  • sessions/2026-07-17-e5-single-use-approvals.md
  • sessions/2026-07-17-elasticsearch-log-causes.md
  • sessions/2026-07-17-hub-cve-evidence-console.md
  • sessions/2026-07-17-hub-fleet-console.md
  • sessions/2026-07-17-hub-health-correlation.md
  • sessions/2026-07-18-approval-lifecycle-audit.md
  • sessions/2026-07-18-e10-auth-outcome-counter.md
  • sessions/2026-07-18-e10-auth-refusal-metric.md
  • sessions/2026-07-18-e10-auth-refusal-only-alert.md
  • sessions/2026-07-18-e10-fleet-read-freshness.md
  • sessions/2026-07-18-e10-missing-telemetry-alert.md
  • sessions/2026-07-18-e10-policy-error-alert.md
  • sessions/2026-07-18-e10-stale-read-alert.md
  • sessions/2026-07-18-e13-dcgm-gpu-utilization.md
  • sessions/2026-07-18-e13-opencost-namespace-costs.md
  • sessions/2026-07-18-e13-opencost-workspace-rollup.md
  • sessions/2026-07-18-e14-argocd-sync-failure-rule.md
  • sessions/2026-07-18-e14-elasticsearch-r3-bridge.md
  • sessions/2026-07-18-e14-github-actions-failure-rule.md
  • sessions/2026-07-18-e14-image-pull-rule.md
  • sessions/2026-07-18-e6-bounded-audit-export.md
  • sessions/2026-07-18-e6-offline-audit-verifier.md
  • sessions/2026-07-18-e6-snapshot-audit-pages.md
  • sessions/2026-07-19-e12-wire-adapter-version-split.md
  • sessions/2026-07-20-e14-remediation-candidate-contract.md
  • sessions/2026-07-21-approval-grant-expiry.md
  • sessions/2026-07-21-ci-release-policy-sync.md
  • sessions/2026-07-21-deep-quality-audit.md
  • sessions/2026-07-21-release-tooling.md
  • sessions/2026-07-21-wails-version-policy.md
  • sessions/2026-07-21-xtext-security.md
  • sessions/2026-07-22-e14-desired-change.md
  • sessions/2026-07-22-e14-git-source-snapshot.md
  • sessions/2026-07-22-e14-gitops-provenance-resolver.md
  • sessions/2026-07-23-demo-launch.md
  • tests/e2e/helm_chart_test.go
  • tests/e2e/kind_argocd_projection_test.go
  • tests/e2e/kind_fanout_test.go
  • tests/e2e/kind_read_federation_test.go
  • tests/scripts/helm_tooling_policy_test.sh
  • tests/scripts/m0_ocm_falsification_safety_test.sh
  • tests/scripts/prometheus_tooling_policy_test.sh
  • tests/scripts/release_hub_image_policy_test.sh
  • tests/scripts/release_tooling_policy_test.sh
  • tests/scripts/wails_tooling_policy_test.sh

Disabled knowledge base sources:

  • Linear integration is disabled

You can enable these sources in your CodeRabbit configuration.


📝 Walkthrough

Walkthrough

This large PR spans CI/release tooling updates, Helm chart/runtime enhancements (browser OIDC, metrics, health probes), new Investigation Brain rules (R7–R9) with graph facts and remediation candidates, connector wire-version negotiation with several new adapters, hardened kubeconfig pagination, hub audit-chain/approval-grant persistence, a new hub console/browser-OIDC/audit-export/probes surface, hubfleet concurrency/observability, PEP proposal binding, remediation GitOps contracts, extensive documentation, monitoring rules, and e2e/script tests.

Changes

Sith platform hardening release

Layer / File(s) Summary
CI/release tooling & Makefile
.github/workflows/*, Makefile, go.mod, hack/*.sh
Pins updated Helm/Prometheus/Syft/Cosign/GoReleaser versions, adds promtool install and test-alert-rules, adds Wails version verifier.
Documentation & Helm chart docs
README.md, charts/sith-hub/*, docs/**
Documents browser OIDC, loopback metrics, audit export/approval lifecycle, connector wire versioning, and updates ADRs/roadmap/epics.
Audit delivery & portable audit records
internal/auditdelivery/*, internal/auditrecord/*
Adds a supervised child process for auth-refusal delivery and a chain/page export+verify contract.
Investigation Brain rules R7–R9
internal/brain/*
Adds image-pull, Argo sync-fail, workflow-run rules, graph-fact ingestion, and remediation candidates.
Connector framework & adapters
internal/connector/**
Adds wire-version negotiation, typed-action registry, and normalization projectors (argocd, awseks, dcgm, elasticsearch, github, opencost, prometheus) plus kubeconfig pagination hardening.
Fleet model & fleetcache
internal/fleet/*, internal/fleetcache/*, internal/fleetrender/*
Adds truncated-coverage tracking and workspace-scoped cache store.
Hub DB persistence
internal/hubauth/*, internal/hubdb/**
Adds browser OIDC exchange, approval grants, and hash-chained policy audit with migrations.
HubFleet concurrency & observability
internal/hubfleet/*
Bounds spoke concurrency, coalesces refreshes, and adds freshness/outcome observation.
HubRuntime composition
internal/hubruntime/*
Wires metrics server, ordered auditors, and browser OIDC into runtime.
Hub server surfaces
internal/hubserver/**
Adds console, browser OIDC, audit export, and probe handlers.
CLI commands
internal/cli/*
Adds audit verify/verify-pages, launch, and root child dispatch.
Hydrate & intent vocabulary
internal/hydrate/*, internal/intent/*, internal/intentargs/*
Workspace-scopes hydration and adds closed verb vocabulary with schema validation.
Observability & MCP store
internal/mcpserver/*, internal/observability/*
Workspace-scopes MCP test store and expands metrics.
PEP proposal binding
internal/pep/*
Adds ProposalInput/ApprovalBinding and audit-export authorization.
Remediation GitOps contracts
internal/remediation/*
Adds GitSourceSnapshot, DesiredChange, GitOpsResolver.
Tenancy/TUI/WebUI
internal/tenancy/*, internal/tui/*, internal/webui/*
Adds audit-export action and workspace-scopes store calls.
Monitoring alert rules
monitoring/*
Adds sith-hub Prometheus alert group and tests.
E2E and shell tests
tests/e2e/*, tests/scripts/*
Adds Helm/kind/Argo e2e tests and shell policy tests.
Session journals
sessions/*.md
Adds dated decision-record documentation for delivered slices.

Estimated code review effort: 5 (Critical) | ~180+ minutes

Possibly related issues

Possibly related PRs

  • ArdurAI/sith#233: Extends the same tenant-scoped PEP policy-audit persistence mechanism in internal/hubdb/internal/hubruntime.
  • ArdurAI/sith#277: Overlaps directly with the audit-record page model and verify-pages implementation.
  • ArdurAI/sith#215: Coupled to the Elasticsearch ProjectLogCauses projector contract used by the R3 bridge.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch dev

Comment @coderabbitai help to get the list of available commands.

@gnanirahulnutakki

Copy link
Copy Markdown
Member Author

Release-gate checkpoint before merge:

  • exact head c77176454d4fe66555f443f9625699ee56c53d5f, exact base 368b3a53c36d46e8ac84828c8e6e8d55954e6960; mergeable with no conflict;
  • fresh aggregate CI and all CodeQL analyses passed, including race, vulnerability, real two-cluster, immutable OCI, reproducible archives, SPDX SBOM, and Homebrew formula gates;
  • Dependabot / code-scanning / secret-scanning queues are 0 / 0 / 0;
  • this promotion contains 72 previously merged review PRs and introduces no separate code patch;
  • CodeRabbit produced zero review or inline findings, then reset from processing to queued after 30 minutes over the 293-file aggregate diff.

Proceeding with the merge-only promotion. Any late automated finding will be triaged before the beta tag is created; tagging remains separately fail-closed on anonymous GHCR digest access.

@gnanirahulnutakki
gnanirahulnutakki merged commit 8e30a6e into main Jul 23, 2026
11 of 12 checks passed

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 7

🧹 Nitpick comments (4)
internal/connector/argocd/boundary_test.go (1)

30-39: 🔒 Security & Privacy | 🔵 Trivial | ⚡ Quick win

Weaker import denylist than sibling projectors.

This guard only rejects two exact k8s.io/client-go subpackages (dynamic, rest) and net/http/os/exec. The equivalent prometheus/boundary_test.go denies any k8s.io/client-go/* (prefix), plus syscall, plugin, net, net/*, and gRPC. As written, an argocd projector could import k8s.io/client-go/kubernetes, tools/clientcmd, syscall, etc. and still pass this boundary gate. Consider aligning with the prometheus prefix-based denylist (or an allowlist as in github/dcgm) for consistent seam protection.

♻️ Suggested alignment with prometheus denylist
 		for _, imported := range file.Imports {
 			path, err := strconv.Unquote(imported.Path.Value)
 			if err != nil {
 				t.Fatalf("unquote import: %v", err)
 			}
-			switch path {
-			case "net/http", "os/exec", "k8s.io/client-go/dynamic", "k8s.io/client-go/rest":
-				t.Fatalf("projector imports network or execution package %q", path)
-			}
+			if path == "os/exec" || path == "syscall" || path == "plugin" || path == "net" ||
+				strings.HasPrefix(path, "net/") || strings.HasPrefix(path, "google.golang.org/grpc") ||
+				strings.HasPrefix(path, "k8s.io/client-go") {
+				t.Fatalf("projector imports network or execution package %q", path)
+			}
 		}
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@internal/connector/argocd/boundary_test.go` around lines 30 - 39, Strengthen
the import validation in the boundary test’s loop over file.Imports to match the
sibling prometheus projector denylist: reject any k8s.io/client-go/ subpackage,
syscall, plugin, net, net/*, and gRPC imports rather than only the current exact
paths. Preserve the existing fatal reporting and unquote error handling while
applying prefix matching where required.
internal/hubdb/migrations/0011_approval_lifecycle_audit.sql (1)

10-40: 🧹 Nitpick | 🔵 Trivial

Migration may lock the audit log during rollout.

sith.policy_audit_entries is an append-only audit table that can grow large. Setting event_kind/evidence_digest NOT NULL and adding the new validating CHECK constraints in-line forces full-table scans that block writes for the duration on a populated table. If zero-write-downtime matters here, prefer adding the columns nullable, backfilling in batches, and adding constraints as NOT VALID followed by a separate VALIDATE CONSTRAINT.

The backfill/constraint logic itself is correct; this is purely about lock duration on large deployments.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@internal/hubdb/migrations/0011_approval_lifecycle_audit.sql` around lines 10
- 40, Update the migration’s ALTER TABLE for sith.policy_audit_entries to avoid
long blocking scans: add or retain event_kind and evidence_digest as nullable
during rollout, backfill existing rows in batches, and add the validating CHECK
constraints with NOT VALID before validating them separately via VALIDATE
CONSTRAINT. Apply NOT NULL only after the backfill is complete, preserving the
existing validation rules and append-only write availability.

Source: Linters/SAST tools

internal/brain/graph.go (1)

410-425: 🔒 Security & Privacy | 🔵 Trivial | ⚡ Quick win

Reject duplicate JSON members in the Argo payload decoder. decodeArgoChangePayload only disallows unknown fields; adding rejectDuplicateGraphJSON(raw) here would match the GitHub and Elasticsearch paths and avoid last-write-wins ambiguity on duplicate keys.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@internal/brain/graph.go` around lines 410 - 425, Update
decodeArgoChangePayload to call rejectDuplicateGraphJSON(raw) before decoding
the payload, returning any validation error through the existing error-wrapping
pattern. Preserve the current unknown-field and single-JSON-value checks.
internal/brain/rules.go (1)

74-79: 🎯 Functional Correctness | 🔵 Trivial | 💤 Low value

R7 lacks the sourceKind/resourceKind allowlist applied to R8/R9.

RuleArgoSyncFail and RuleWorkflowFail deliberately pin sourceKind/resourceKind/exactTrigger to prevent ambiguous cross-source matches (per the adversarial "fails closed" tests in graph_test.go). RuleImagePull triggers on any live/pod.reason observation with no such restriction, relying implicitly on today's fact that only the kubeconfig connector emits this key. If a future connector reuses this key/lens, R7 could fire on unintended sources.

Consider adding sourceKind: "kubeconfig", resourceKind: "Pod" for defense-in-depth consistency with the pattern just introduced for R8/R9.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@internal/brain/rules.go` around lines 74 - 79, The RuleImagePull trigger is
missing source and resource restrictions, allowing unintended connectors to
match it. Update RuleImagePull’s predicate to require sourceKind “kubeconfig”
and resourceKind “Pod”, preserving its existing live lens, pod.reason key, and
trigger values.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/SITH-NOTION.md`:
- Around line 2551-2552: Update the F10.1 federation metrics description and
adjacent diagram to describe unlabeled, request-time aggregate outcomes—fresh,
stale, unknown, empty, and error—instead of per-spoke freshness metrics. Ensure
the text does not imply per-spoke labels or nonexistent per-spoke alert
dimensions.

In `@docs/specs/E2-readfed-brain-integrations.md`:
- Around line 710-713: The GitHub row must not present gitops.open-pr as
shipped: update its pl/ex capability and description to explicitly mark the
governed write as planned/future P2, or remove ex until the resolver is wired
through the Brain, PEP, and Hub. Keep the existing read capabilities unchanged.

In `@internal/connector/argocd/project.go`:
- Around line 340-367: Update the history projection loop so HistoryTruncated is
assigned to the first emitted projectedChange, not based on raw history index ==
0. Preserve skipping entries without deployedAt, and track whether a change has
already been emitted so truncated remains true when the oldest retained entry is
skipped.

In `@internal/hubserver/console_assets/console.css`:
- Around line 497-499: Resolve the Stylelint violations in the console
stylesheet: change all currentColor values at the referenced declarations to
lowercase currentcolor, remove quotes from SFMono-Regular in each listed
font-family declaration while preserving quotes for names that require them, and
handle the deprecated clip declaration by adding a narrowly scoped Stylelint
disable comment if it remains necessary for the visually-hidden pattern.

In `@sessions/2026-07-15-e10-loopback-metrics.md`:
- Line 4: Update the status metadata at
sessions/2026-07-15-e10-loopback-metrics.md:4 to the repository’s
completed/ready-for-commit status; update
sessions/2026-07-15-e10-process-audit-sink.md:4 to indicate implementation and
local validation are complete with only fresh PR CI pending; and update
sessions/2026-07-15-e8-browser-oidc-session.md:4 to match its completed
checkpoint and ready-for-review close.

In `@sessions/2026-07-16-fleetcache-workspace-scope.md`:
- Around line 23-26: Make the verification commands environment-neutral in
sessions/2026-07-16-fleetcache-workspace-scope.md lines 23-26 by removing
developer-specific PATH, GOPATH, and tool locations, using repository-relative
commands or clearly marked placeholders. Apply the same cleanup to
sessions/2026-07-16-brain-image-evidence.md lines 26-27, replacing hard-coded
GOPATH and tool paths with portable commands or placeholders.

In `@sessions/2026-07-21-deep-quality-audit.md`:
- Around line 18-28: Update the audit summary’s API-surface statement to say
there are no externally visible API changes, while acknowledging the mandatory
collector lifecycle context contract change within internal/hubfleet. Keep the
qualification limited to clarifying scope and leave the listed implementation
changes unchanged.

---

Nitpick comments:
In `@internal/brain/graph.go`:
- Around line 410-425: Update decodeArgoChangePayload to call
rejectDuplicateGraphJSON(raw) before decoding the payload, returning any
validation error through the existing error-wrapping pattern. Preserve the
current unknown-field and single-JSON-value checks.

In `@internal/brain/rules.go`:
- Around line 74-79: The RuleImagePull trigger is missing source and resource
restrictions, allowing unintended connectors to match it. Update RuleImagePull’s
predicate to require sourceKind “kubeconfig” and resourceKind “Pod”, preserving
its existing live lens, pod.reason key, and trigger values.

In `@internal/connector/argocd/boundary_test.go`:
- Around line 30-39: Strengthen the import validation in the boundary test’s
loop over file.Imports to match the sibling prometheus projector denylist:
reject any k8s.io/client-go/ subpackage, syscall, plugin, net, net/*, and gRPC
imports rather than only the current exact paths. Preserve the existing fatal
reporting and unquote error handling while applying prefix matching where
required.

In `@internal/hubdb/migrations/0011_approval_lifecycle_audit.sql`:
- Around line 10-40: Update the migration’s ALTER TABLE for
sith.policy_audit_entries to avoid long blocking scans: add or retain event_kind
and evidence_digest as nullable during rollout, backfill existing rows in
batches, and add the validating CHECK constraints with NOT VALID before
validating them separately via VALIDATE CONSTRAINT. Apply NOT NULL only after
the backfill is complete, preserving the existing validation rules and
append-only write availability.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 1ba1489a-52dd-4ad7-a5db-e915527ca3fe

📥 Commits

Reviewing files that changed from the base of the PR and between 368b3a5 and c771764.

⛔ Files ignored due to path filters (1)
  • go.sum is excluded by !**/*.sum
📒 Files selected for processing (293)
  • .github/workflows/ci.yml
  • .github/workflows/release.yml
  • Makefile
  • README.md
  • charts/sith-hub/README.md
  • charts/sith-hub/templates/deployment.yaml
  • charts/sith-hub/values.schema.json
  • charts/sith-hub/values.yaml
  • docs/ARCHITECTURE.md
  • docs/EPICS.md
  • docs/ROADMAP.md
  • docs/SITH-NOTION.md
  • docs/adr/0005-ai-mcp-ardur-pdp.md
  • docs/adr/0008-deterministic-advisory-brain.md
  • docs/adr/0009-release-supply-chain.md
  • docs/adr/0011-opencost-namespace-cost-facts.md
  • docs/adr/0012-opencost-coverage-aware-workspace-rollup.md
  • docs/adr/0013-dcgm-gpu-utilization-facts.md
  • docs/adr/0014-connector-wire-adapter-version-split.md
  • docs/adr/README.md
  • docs/experiments/M0-ocm-falsification.md
  • docs/runbooks/hub-alerts.md
  • docs/specs/E2-readfed-brain-integrations.md
  • docs/specs/F2.1-source-adapter-contract.md
  • go.mod
  • hack/experiments/m0-ocm-falsification.sh
  • hack/verify-release-hub-image.sh
  • hack/verify-wails-version.sh
  • internal/auditdelivery/process.go
  • internal/auditdelivery/process_test.go
  • internal/auditrecord/export.go
  • internal/auditrecord/export_test.go
  • internal/auditrecord/page.go
  • internal/auditrecord/page_test.go
  • internal/brain/boundary_test.go
  • internal/brain/cache.go
  • internal/brain/cache_test.go
  • internal/brain/evaluate.go
  • internal/brain/evaluate_test.go
  • internal/brain/graph.go
  • internal/brain/graph_elasticsearch_test.go
  • internal/brain/graph_test.go
  • internal/brain/model.go
  • internal/brain/remediation.go
  • internal/brain/remediation_test.go
  • internal/brain/replay_test.go
  • internal/brain/rules.go
  • internal/brain/testdata/replays/README.md
  • internal/brain/testdata/replays/r1-bad-deploy-causes-crashloop.json
  • internal/brain/testdata/replays/r1-stale-timeline-unconfirmed.json
  • internal/brain/testdata/replays/r2-oomkilled.json
  • internal/brain/testdata/replays/r3-elasticsearch-log-cause.json
  • internal/brain/testdata/replays/r3-fleet-image-correlation.json
  • internal/brain/testdata/replays/r4-config-drift.json
  • internal/brain/testdata/replays/r7-image-pull-backoff.json
  • internal/brain/testdata/replays/r8-argocd-sync-failed.json
  • internal/brain/testdata/replays/r9-github-actions-workflow-failed.json
  • internal/cli/audit.go
  • internal/cli/audit_test.go
  • internal/cli/audit_unix_test.go
  • internal/cli/cached_test.go
  • internal/cli/desktop.go
  • internal/cli/investigate_test.go
  • internal/cli/launch.go
  • internal/cli/launch_test.go
  • internal/cli/root.go
  • internal/cli/ui.go
  • internal/connector/argocd/boundary_test.go
  • internal/connector/argocd/project.go
  • internal/connector/argocd/project_test.go
  • internal/connector/awseks/boundary_test.go
  • internal/connector/awseks/project.go
  • internal/connector/awseks/project_test.go
  • internal/connector/contract.go
  • internal/connector/dcgm/boundary_test.go
  • internal/connector/dcgm/project.go
  • internal/connector/dcgm/project_test.go
  • internal/connector/elasticsearch/boundary_test.go
  • internal/connector/elasticsearch/project.go
  • internal/connector/elasticsearch/project_test.go
  • internal/connector/github/action_plan.go
  • internal/connector/github/action_plan_test.go
  • internal/connector/github/boundary_test.go
  • internal/connector/github/project.go
  • internal/connector/github/project_test.go
  • internal/connector/github/workflow_run.go
  • internal/connector/github/workflow_run_test.go
  • internal/connector/kubeconfig/adapter.go
  • internal/connector/kubeconfig/adapter_test.go
  • internal/connector/kubeconfig/directory.go
  • internal/connector/kubeconfig/directory_test.go
  • internal/connector/kubeconfig/local_objects.go
  • internal/connector/kubeconfig/local_streams.go
  • internal/connector/kubeconfig/resources.go
  • internal/connector/kubeconfig/table.go
  • internal/connector/kubeconfig/table_test.go
  • internal/connector/kubeconfig/watch.go
  • internal/connector/kubeconfig/watch_bootstrap_test.go
  • internal/connector/opencost/boundary_test.go
  • internal/connector/opencost/project.go
  • internal/connector/opencost/project_test.go
  • internal/connector/opencost/rollup.go
  • internal/connector/opencost/rollup_test.go
  • internal/connector/prometheus/boundary_test.go
  • internal/connector/prometheus/project.go
  • internal/connector/prometheus/project_test.go
  • internal/connector/registry.go
  • internal/connector/registry_test.go
  • internal/connector/source.go
  • internal/connector/source_test.go
  • internal/connector/version.go
  • internal/connector/version_boundary_test.go
  • internal/connector/version_test.go
  • internal/fleet/coverage_test.go
  • internal/fleet/model.go
  • internal/fleet/resource.go
  • internal/fleetcache/scoped_test.go
  • internal/fleetcache/store.go
  • internal/fleetcache/store_test.go
  • internal/fleetcache/workspace_mutation_test.go
  • internal/fleetrender/table.go
  • internal/fleetrender/table_test.go
  • internal/hubauth/oidc.go
  • internal/hubauth/oidc_browser_test.go
  • internal/hubauth/oidc_test.go
  • internal/hubdb/app.go
  • internal/hubdb/app_test.go
  • internal/hubdb/approvals.go
  • internal/hubdb/approvals_test.go
  • internal/hubdb/audit.go
  • internal/hubdb/doc.go
  • internal/hubdb/fleet.go
  • internal/hubdb/migrate.go
  • internal/hubdb/migrations/0009_policy_audit_chain.sql
  • internal/hubdb/migrations/0010_approval_grants.sql
  • internal/hubdb/migrations/0011_approval_lifecycle_audit.sql
  • internal/hubdb/migrations/0012_audit_export_action.sql
  • internal/hubdb/migrations/0013_approval_grant_expiry.sql
  • internal/hubdb/policy_audit.go
  • internal/hubdb/policy_audit_test.go
  • internal/hubdb/postgres_integration_test.go
  • internal/hubfleet/collector.go
  • internal/hubfleet/collector_concurrency_test.go
  • internal/hubfleet/collector_test.go
  • internal/hubfleet/correlation.go
  • internal/hubfleet/inventory_search.go
  • internal/hubfleet/inventory_search_test.go
  • internal/hubfleet/metrics_test.go
  • internal/hubfleet/policy_test.go
  • internal/hubfleet/refresh_coordinator.go
  • internal/hubfleet/refresh_coordinator_test.go
  • internal/hubfleet/source.go
  • internal/hubfleet/source_observability_test.go
  • internal/hubfleet/tracing_test.go
  • internal/hubruntime/config.go
  • internal/hubruntime/metrics.go
  • internal/hubruntime/metrics_test.go
  • internal/hubruntime/ocm_integration_test.go
  • internal/hubruntime/policy_audit.go
  • internal/hubruntime/policy_audit_test.go
  • internal/hubruntime/runtime_test.go
  • internal/hubserver/audit_export.go
  • internal/hubserver/audit_export_test.go
  • internal/hubserver/auth.go
  • internal/hubserver/auth_observability.go
  • internal/hubserver/auth_observability_test.go
  • internal/hubserver/browser_oidc.go
  • internal/hubserver/browser_oidc_test.go
  • internal/hubserver/console.go
  • internal/hubserver/console_assets/console.css
  • internal/hubserver/console_assets/console.html
  • internal/hubserver/console_assets/console.js
  • internal/hubserver/console_boundary_test.go
  • internal/hubserver/console_correlation_test.go
  • internal/hubserver/console_cve_test.go
  • internal/hubserver/console_inventory_test.go
  • internal/hubserver/console_test.go
  • internal/hubserver/fleet.go
  • internal/hubserver/fleet_test.go
  • internal/hubserver/probes.go
  • internal/hubserver/probes_test.go
  • internal/hydrate/hydrator.go
  • internal/hydrate/hydrator_test.go
  • internal/intent/boundary_test.go
  • internal/intent/verb.go
  • internal/intent/verb_test.go
  • internal/intentargs/boundary_test.go
  • internal/intentargs/schema.go
  • internal/intentargs/schema_test.go
  • internal/mcpserver/server_test.go
  • internal/observability/alert_rules_contract_test.go
  • internal/observability/auth.go
  • internal/observability/auth_test.go
  • internal/observability/metrics.go
  • internal/observability/metrics_test.go
  • internal/pep/approval_test.go
  • internal/pep/audit.go
  • internal/pep/audit_metrics.go
  • internal/pep/audit_metrics_test.go
  • internal/pep/audit_test.go
  • internal/pep/boundary_test.go
  • internal/pep/metrics.go
  • internal/pep/metrics_test.go
  • internal/pep/pep.go
  • internal/pep/pep_test.go
  • internal/pep/proposal_test.go
  • internal/privacy/boundary_test.go
  • internal/remediation/boundary_test.go
  • internal/remediation/desired_change.go
  • internal/remediation/desired_change_test.go
  • internal/remediation/git_snapshot.go
  • internal/remediation/git_snapshot_test.go
  • internal/remediation/gitops.go
  • internal/remediation/gitops_test.go
  • internal/tenancy/model.go
  • internal/tenancy/model_test.go
  • internal/tui/model.go
  • internal/tui/model_test.go
  • internal/webui/server_test.go
  • monitoring/sith-hub.rules.test.yml
  • monitoring/sith-hub.rules.yml
  • sessions/2026-07-15-e10-loopback-metrics.md
  • sessions/2026-07-15-e10-process-audit-sink.md
  • sessions/2026-07-15-e8-browser-oidc-session.md
  • sessions/2026-07-16-argocd-application-facts.md
  • sessions/2026-07-16-brain-image-evidence.md
  • sessions/2026-07-16-browser-oidc-rate-limit.md
  • sessions/2026-07-16-fleetcache-workspace-mutations.md
  • sessions/2026-07-16-fleetcache-workspace-scope.md
  • sessions/2026-07-16-github-merged-pr-facts.md
  • sessions/2026-07-16-helm-pin-alignment.md
  • sessions/2026-07-16-hub-refresh-coalescing.md
  • sessions/2026-07-16-hub-spoke-worker-pool.md
  • sessions/2026-07-16-hubdb-repeatable-read.md
  • sessions/2026-07-16-kubeconfig-directory-race.md
  • sessions/2026-07-16-kubeconfig-query-pagination.md
  • sessions/2026-07-16-kubeconfig-timeout-bound.md
  • sessions/2026-07-16-ocm-addon-wait-lifecycle.md
  • sessions/2026-07-16-prometheus-alert-facts.md
  • sessions/2026-07-16-table-materialization.md
  • sessions/2026-07-16-watch-bootstrap.md
  • sessions/2026-07-17-e10-database-readiness.md
  • sessions/2026-07-17-e10-fleet-read-coverage-alert.md
  • sessions/2026-07-17-e10-fleet-read-outcomes.md
  • sessions/2026-07-17-e10-policy-audit-metrics.md
  • sessions/2026-07-17-e10-portable-alert-rules.md
  • sessions/2026-07-17-e10-readiness-alert.md
  • sessions/2026-07-17-e10-readiness-metrics.md
  • sessions/2026-07-17-e5-single-use-approvals.md
  • sessions/2026-07-17-elasticsearch-log-causes.md
  • sessions/2026-07-17-hub-cve-evidence-console.md
  • sessions/2026-07-17-hub-fleet-console.md
  • sessions/2026-07-17-hub-health-correlation.md
  • sessions/2026-07-18-approval-lifecycle-audit.md
  • sessions/2026-07-18-e10-auth-outcome-counter.md
  • sessions/2026-07-18-e10-auth-refusal-metric.md
  • sessions/2026-07-18-e10-auth-refusal-only-alert.md
  • sessions/2026-07-18-e10-fleet-read-freshness.md
  • sessions/2026-07-18-e10-missing-telemetry-alert.md
  • sessions/2026-07-18-e10-policy-error-alert.md
  • sessions/2026-07-18-e10-stale-read-alert.md
  • sessions/2026-07-18-e13-dcgm-gpu-utilization.md
  • sessions/2026-07-18-e13-opencost-namespace-costs.md
  • sessions/2026-07-18-e13-opencost-workspace-rollup.md
  • sessions/2026-07-18-e14-argocd-sync-failure-rule.md
  • sessions/2026-07-18-e14-elasticsearch-r3-bridge.md
  • sessions/2026-07-18-e14-github-actions-failure-rule.md
  • sessions/2026-07-18-e14-image-pull-rule.md
  • sessions/2026-07-18-e6-bounded-audit-export.md
  • sessions/2026-07-18-e6-offline-audit-verifier.md
  • sessions/2026-07-18-e6-snapshot-audit-pages.md
  • sessions/2026-07-19-e12-wire-adapter-version-split.md
  • sessions/2026-07-20-e14-remediation-candidate-contract.md
  • sessions/2026-07-21-approval-grant-expiry.md
  • sessions/2026-07-21-ci-release-policy-sync.md
  • sessions/2026-07-21-deep-quality-audit.md
  • sessions/2026-07-21-release-tooling.md
  • sessions/2026-07-21-wails-version-policy.md
  • sessions/2026-07-21-xtext-security.md
  • sessions/2026-07-22-e14-desired-change.md
  • sessions/2026-07-22-e14-git-source-snapshot.md
  • sessions/2026-07-22-e14-gitops-provenance-resolver.md
  • sessions/2026-07-23-demo-launch.md
  • tests/e2e/helm_chart_test.go
  • tests/e2e/kind_argocd_projection_test.go
  • tests/e2e/kind_fanout_test.go
  • tests/e2e/kind_read_federation_test.go
  • tests/scripts/helm_tooling_policy_test.sh
  • tests/scripts/m0_ocm_falsification_safety_test.sh
  • tests/scripts/prometheus_tooling_policy_test.sh
  • tests/scripts/release_hub_image_policy_test.sh
  • tests/scripts/release_tooling_policy_test.sh
  • tests/scripts/wails_tooling_policy_test.sh

Comment thread docs/SITH-NOTION.md
Comment thread docs/specs/E2-readfed-brain-integrations.md
Comment thread internal/connector/argocd/project.go
Comment thread internal/hubserver/console_assets/console.css
Comment thread sessions/2026-07-15-e10-loopback-metrics.md
Comment thread sessions/2026-07-16-fleetcache-workspace-scope.md
Comment thread sessions/2026-07-21-deep-quality-audit.md
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