Zastava - Retired Kubernetes Runtime Direction
Status
Zastava’s Kubernetes admission-webhook and DaemonSet direction is retired for active Stella Ops product work.
Stella Ops does not support Kubernetes or Helm deployments. Runtime posture work has been re-scoped — first into RuntimeInstrumentation host agents for non-Kubernetes Linux and Windows container estates, and then unified into the deployment agent (StellaOps.Agent.Host). See “Replacement Direction” below.
The original StellaOps.Zastava.* source tree (Agent, Observer, Webhook, Core, tests, and the module solution) was archived on 2026-05-12 (SPRINT_20260512_018) to docs-archive/code-snapshots/zastava-2026-05-12-retired/. The zastava-webhook compose service and its Dockerfile stages are decommissioned. No live solution references StellaOps.Zastava.* projects. See architecture.mdfor the full retirement record, including the CRI digest-resolution design that was archived with the Observer.
Naming caveat — “Zastava” is reused for a live, non-Kubernetes concept
The Kubernetes Zastava product is retired, but the name survives in two unrelated places in src/. Do not confuse either with the retired admission-webhook product, and do not treat their presence as evidence the Kubernetes direction is alive.
1. Live: the registry-webhook SBOM source type (NOT Kubernetes)
SbomSourceType.Zastava = 0 is an active Scanner ingestion source type — a container-registry push-webhook source that triggers scans when images are pushed. It has nothing to do with Kubernetes admission. This is consistent with the non-Kubernetes product direction.
Ground-truth code (under src/Scanner/__Libraries/StellaOps.Scanner.Sources/):
Domain/SbomSourceEnums.cs—SbomSourceType.Zastava = 0, documented as “Registry webhook source (receives push events from container registries)”. (Sibling values:Docker = 1,Cli = 2,Git = 3.)Handlers/Zastava/ZastavaSourceHandler.cs— implementsISourceTypeHandlerandIWebhookCapableHandler;SupportsWebhooks = true,SupportsScheduling = true,MaxConcurrentTargets = 20. Parses Docker Hub, Harbor, and generic OCI-distribution webhook payloads (ParseWebhookPayload), verifies webhook signatures (VerifyWebhookSignature, via the auditedCryptoInteropHMAC-SHA256/HMAC-SHA1/shared-secret carve-outs), and discovers targets from the registry on scheduled/manual triggers.ConnectionTesters/ZastavaConnectionTester.cs— implementsISourceTypeConnectionTesterforSbomSourceType.Zastava; probes the registry’s Docker Registry V2 API (/v2/).Configuration/ZastavaSourceConfig.cs— config record withregistryType,registryUrl,filters(ZastavaFilters:repositories,tags,excludeRepositories,excludeTagsglob arrays),scanOptions(ScanOptions), and optionalpayloadMapping(PayloadMapping, JSONPath-based for generic webhooks). SupportedRegistryTypevalues:DockerHub,Harbor,Quay,Ecr,Gcr,Acr,Ghcr,Artifactory,GitLab,Nexus,JFrog,Custom,Generic.
Both the handler and the connection tester are DI-registered in StellaOps.Scanner.Sources/DependencyInjection/ServiceCollectionExtensions.cs (AddSbomSources):
services.AddScoped<ISourceTypeConnectionTester, ZastavaConnectionTester>();
services.AddScoped<ISourceTypeHandler, ZastavaSourceHandler>();
Authoritative dossier for this source type is the Scanner sources documentation, not this retirement record. This README only notes the name collision so a reader who greps for
Zastavain the code is not misled by the live source-type symbols.
2. REMOVED: the Kubernetes admission-webhook CLI stub
src/Cli/StellaOps.Cli/Commands/ZastavaCommandGroup.cs used to define a stella zastava command group (install, configure, status, logs, uninstall) targeting a Kubernetes admission webhook. It was never wired in — BuildZastavaCommand had no caller anywhere in src/, so the command never appeared in stella --help — yet it still compiled into the shipped CLI assembly, and every subcommand emitted hardcoded mock output: canned admission statistics (TotalRequests = 15847, Allowed = 15702, Denied = 143) presented as live telemetry, and simulated kubectl-style success lines (✓ Namespace created) for a cluster apply that never happened.
It was deleted in SPRINT_20260712_005 (DEAD-4) after a triple-check gate (build verified; stella --help confirmed to contain zero zastava entries before and after — it was unreachable either way). It is a remnant of the retired Kubernetes direction and must not be reintroduced into the CLI surface. Recoverable from git history if ever needed as a design reference.
Still present (out of the DEAD-4 gate’s scope, flagged for a follow-up):
ConfigCatalog.csretains fourzastava.*config entries (zastava.agent,zastava.observer,zastava.runtime,zastava.webhook), and threezastava:*scopes remain in the canonical catalog (below). These describe a retired module and are candidates for removal, but they were not part of the triple-checked candidate and were left untouched.
Scopes
Three Zastava scopes are defined in the canonical catalog (src/Authority/StellaOps.Authority/StellaOps.Auth.Abstractions/StellaOpsScopes.cs):
zastava:read(ZastavaRead) — read-only access to Zastava webhook observer state.zastava:trigger(ZastavaTrigger) — permission to trigger Zastava webhook processing.zastava:admin(ZastavaAdmin) — administrative control over Zastava configuration.
NOT ENFORCED. These constants are defined in the scope catalog but are not referenced by any endpoint, handler, or policy elsewhere in
src/(verified by source search). They are orphaned from the retired Kubernetes direction; the live registry-webhook source type above is administered through the Scanner source-management surface, not these scopes.
Replacement Direction
Runtime posture and workload observation were re-scoped into non-Kubernetes host agents and then unified into the deployment agent StellaOps.Agent.Host (Sprint 20260512_020), which carries the runtime.observe.container capability and emits RuntimeEvidenceEnvelope payloads. The standalone host-agent product is now partially superseded by that unification.
Reference docs (historical host-agent story, partially superseded):
docs/modules/runtime-instrumentation/host-agent-strategy.mddocs/modules/runtime-instrumentation/architecture.mddocs/modules/release-orchestrator/architecture.md— authoritative unified runtime-observation section.docs-archive/implplan/SPRINT_20260512_020_ReleaseOrchestrator_runtime_observation_unification.md— the unification decision (archived).docs-archive/implplan/SPRINT_20260501_050_RuntimeInstrumentation_host_agent_strategy.md— the earlier host-agent re-scope (archived).
Any future Zastava concepts that remain useful must be reintroduced through the host-agent / deployment-agent model and must not depend on Kubernetes admission resources, DaemonSets, Helm charts, or kubectl.
