7.0 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	
			7.0 KiB
		
	
	
	
	
	
	
	
Container Deployment Guide — AOC Update
Audience: DevOps Guild, platform operators deploying StellaOps services.
Scope: Deployment configuration changes required by the Aggregation-Only Contract (AOC), including schema validators, guard environment flags, and verifier identities.
This guide supplements existing deployment manuals with AOC-specific configuration. It assumes familiarity with the base Compose/Helm manifests described in ops/deployment/ and docs/modules/devops/architecture.md.
1 · Schema validator enablement
1.1 MongoDB validators
- Apply JSON schema validators to 
advisory_rawandvex_rawcollections before enabling AOC guards. - Before enabling validators or the idempotency index, run the duplicate audit helper to confirm no conflicting raw advisories remain:
Resolve any reported rows prior to rollout.
mongo concelier ops/devops/scripts/check-advisory-raw-duplicates.js --eval 'var LIMIT=200;' - Use the migration script provided in 
ops/devops/scripts/apply-aoc-validators.js: 
kubectl exec -n concelier deploy/concelier-mongo -- \
  mongo concelier ops/devops/scripts/apply-aoc-validators.js
kubectl exec -n excititor deploy/excititor-mongo -- \
  mongo excititor ops/devops/scripts/apply-aoc-validators.js
- Validators enforce required fields (
tenant,source,upstream,linkset) and reject forbidden keys at DB level. - Rollback plan: validators are applied with 
validationLevel: moderate—downgrade via the same script with--removeif required. 
1.2 Migration order
- Deploy validators in maintenance window.
 - Roll out Concelier/Excititor images with guard middleware enabled (
AOC_GUARD_ENABLED=true). - Run smoke tests (
stella sources ingest --dry-runfixtures) before resuming production ingestion. 
1.3 Supersedes backfill verification
- Duplicate audit: Confirm 
mongo concelier ops/devops/scripts/check-advisory-raw-duplicates.js --eval 'var LIMIT=200;'reports no conflicts before restarting Concelier with the new migrations. - Post-migration check: After the service restarts, validate that 
db.advisoryis a view pointing toadvisory_backup_20251028:Themongo concelier --quiet --eval 'db.getCollectionInfos({ name: "advisory" })[0]'typeshould be"view"andoptions.viewOnshould equal"advisory_backup_20251028". - Supersedes chain spot-check: Inspect a sample set to ensure deterministic chaining:
Each revision should reference the previous
mongo concelier --quiet --eval ' db.advisory_raw.aggregate([ { $match: { "upstream.upstream_id": { $exists: true } } }, { $sort: { "tenant": 1, "source.vendor": 1, "upstream.upstream_id": 1, "upstream.retrieved_at": 1 } }, { $limit: 5 }, { $project: { _id: 1, supersedes: 1 } } ]).forEach(printjson)'_id(ornullfor the first revision). Record findings in the change ticket before proceeding to production. 
2 · Container environment flags
Add the following environment variables to Concelier/Excititor deployments:
| Variable | Default | Description | 
|---|---|---|
AOC_GUARD_ENABLED | 
true | 
Enables AOCWriteGuard interception. Set false only for controlled rollback. | 
AOC_ALLOW_SUPERSEDES_RETROFIT | 
false | 
Allows temporary supersedes backfill during migration. Remove after cutover. | 
AOC_METRICS_ENABLED | 
true | 
Emits ingestion_write_total, aoc_violation_total, etc. | 
AOC_TENANT_HEADER | 
X-Stella-Tenant | 
Header name expected from Gateway. | 
AOC_VERIFIER_USER | 
stella-aoc-verify | 
Read-only service user used by UI/CLI verification. | 
Compose snippet:
environment:
  - AOC_GUARD_ENABLED=true
  - AOC_ALLOW_SUPERSEDES_RETROFIT=false
  - AOC_METRICS_ENABLED=true
  - AOC_TENANT_HEADER=X-Stella-Tenant
  - AOC_VERIFIER_USER=stella-aoc-verify
Ensure AOC_VERIFIER_USER exists in Authority with aoc:verify scope and no write permissions.
3 · Verifier identity
- Create a dedicated client (
stella-aoc-verify) via Authority bootstrap: 
clients:
  - clientId: stella-aoc-verify
    grantTypes: [client_credentials]
    scopes: [aoc:verify, advisory:read, vex:read]
    tenants: [default]
- Store credentials in secret store (
Kubernetes Secret,Docker swarm secret). - Bind credentials to 
stella aoc verifyCI jobs and Console verification service. - Rotate quarterly; document in 
ops/authority-key-rotation.md. 
4 · Deployment steps
- Pre-checks: Confirm database backups, alerting in maintenance mode, and staging environment validated.
 - Apply validators: Run scripts per § 1.1.
 - Update manifests: Inject environment variables (§ 2) and mount guard configuration configmaps.
 - Redeploy services: Rolling restart Concelier/Excititor pods. Monitor 
ingestion_write_totalfor steady throughput. - Seed verifier: Deploy read-only verifier user and store credentials.
 - Run verification: Execute 
stella aoc verify --since 24hand ensure exit code0. - Update dashboards: Point Grafana panels to new metrics (
aoc_violation_total). - Record handoff: Capture console screenshots and verification logs for release notes.
 
5 · Offline Kit updates
- Ship validator scripts with Offline Kit (
offline-kit/scripts/apply-aoc-validators.js). - Include pre-generated verification reports for air-gapped deployments.
 - Document offline CLI workflow in bundle README referencing 
docs/modules/cli/guides/cli-reference.md. - Ensure 
stella-aoc-verifycredentials are scoped to offline tenant and rotated during bundle refresh. 
6 · Rollback plan
- Disable guard via 
AOC_GUARD_ENABLED=falseon Concelier/Excititor and rollout. - Remove validators with the migration script (
--remove). - Pause verification jobs to prevent noise.
 - Investigate and remediate upstream issues before re-enabling guards.
 
7 · References
- Aggregation-Only Contract reference
 - Authority scopes & tenancy
 - Observability guide
 - CLI AOC commands
 - Concelier architecture
 - Excititor architecture
 
8 · Compliance checklist
- Validators documented and scripts referenced for online/offline deployments.
 - Environment variables cover guard enablement, metrics, and tenant header.
 - Read-only verifier user installation steps included.
 - Offline kit instructions align with validator/verification workflow.
 - Rollback procedure captured.
 - Cross-links to AOC docs, Authority scopes, and observability guides present.
 - DevOps Guild sign-off tracked (owner: @devops-guild, due 2025-10-29).
 
Last updated: 2025-10-26 (Sprint 19).