From a21a614eaed6bb4d65a6e3855e9bf98ed29ea85b Mon Sep 17 00:00:00 2001 From: tegwick Date: Sun, 27 Sep 2026 15:49:58 +0200 Subject: [PATCH] Record activity-core GitOps delivery and outstanding release gates Assistant: codex Assistant-Model: gpt-6-astra Assistant-Session: 01a0e241-8285-7a63-8c0c-51c9cb824dc3 --- docs/ActivityCoreLoop.md | 32 ++-- .../2026-09-27-activity-core-gitops.json | 166 ++++++++++++++++++ .../FEP-WP-0008-use-driven-improvement.md | 14 ++ 3 files changed, 200 insertions(+), 12 deletions(-) create mode 100644 docs/evidence/2026-09-27-activity-core-gitops.json diff --git a/docs/ActivityCoreLoop.md b/docs/ActivityCoreLoop.md index 2814bcb..37bd96b 100644 --- a/docs/ActivityCoreLoop.md +++ b/docs/ActivityCoreLoop.md @@ -52,19 +52,27 @@ October 1 at 09:00, respectively, in Europe/Berlin. All verified reports correct say `no_consumers`, zero model calls and automatic edits disabled. Reports are stored in State Hub under the frontend-patterns topic and the event types above. -The worker overlay changes only the resolver module and registration. API/router -images remain pinned. Rollback restores `activity-core:fi-publication-20260914` -and disables these three source definitions and their ConfigMap projections, -then syncs definitions and schedules after projected files have refreshed. +The reporting binaries are now deployed through Git and ArgoCD using immutable +registry digests. The user authorized this adoption separately on September 27 +(decision `78a4b859-dd00-4623-b95b-121b0e1c915d`). Nine runtime resources are +managed; secrets and infrastructure remain with their existing owners. The first +adoption changed tracking metadata only. The subsequent digest rollout preserved +the same binaries; all three deployments are ready and ArgoCD is Synced/Healthy. +A post-release Temporal scheduled smoke completed successfully at 13:39 UTC. -To remove future exceptions, [ACTIVITY-WP-0041](../../activity-core/workplans/ACTIVITY-WP-0041-gitops-adoption.md) -owns the concrete follow-up: reconcile manifests and publish immutable registry -images; adopt activity-core into railiance01 ArgoCD with a verified resource set; -and approve standing, bounded merge/sync authority after the adoption soak. -Existing policy requires separate authorization for adoption and automation. -ArgoCD adoption alone does not remove per-change human approval. Routine releases -must pass automated tests, scoped review, deployment-health checks and rollback; -policy/access/budget changes remain monthly decisions. +[Release evidence](evidence/2026-09-27-activity-core-gitops.json) records revisions, +digests, CI, health and registry retention protection. The conservative 24-hour +healthy observation window begins at 13:38:21 UTC; earliest eligibility is +September 28 at 15:38:21 Berlin, conditional on healthy evidence. Automatic sync +and pruning remain disabled. + +[ACTIVITY-WP-0041](../../activity-core/workplans/ACTIVITY-WP-0041-gitops-adoption.md) +retains authenticated review/health receipts, narrowly bound unattended release +identity and failed-health automatic rollback proof. RPF-WP-0048 owns platform +observation and digest-aware retention; current baseline tag aliases are already +protected. A tested image-only validator exists, but is not an authority grant. +These remaining gates prevent routine releases from needing fresh exceptions. +Policy/access/budget changes remain monthly decisions. The owner handoff is [ACTIVITY-WP-0040](../../activity-core/workplans/ACTIVITY-WP-0040-frontend-patterns-feedback.md). diff --git a/docs/evidence/2026-09-27-activity-core-gitops.json b/docs/evidence/2026-09-27-activity-core-gitops.json new file mode 100644 index 0000000..bc4e5d8 --- /dev/null +++ b/docs/evidence/2026-09-27-activity-core-gitops.json @@ -0,0 +1,166 @@ +{ + "date": "2026-09-27", + "workplan": "ACTIVITY-WP-0041", + "platform_workplan": "RPF-WP-0048", + "authorization_decision": "78a4b859-dd00-4623-b95b-121b0e1c915d", + "activity_revision": "12e08878d19e61ce41c534cc10ca56acd0c3efc1", + "platform_revision": "a01026535a1fb34d5e9561a26a02dc56b3e3bab4", + "initial_adoption": { + "revision": "c12a8fbcfbd0624e195a0183f8b7ca5ce2bc07d5", + "finished_at": "2026-09-27T12:07:35Z", + "diff": "nine tracking annotations only; deployment specs and pod templates unchanged" + }, + "digest_release": { + "finished_at": "2026-09-27T13:37:56Z", + "sync": "Synced", + "health": "Healthy", + "phase": "Succeeded", + "diff": "only three image references and Never to IfNotPresent; same published baseline binaries" + }, + "resources": [ + { + "kind": "ConfigMap", + "name": "actcore-external-activity-definitions", + "namespace": "activity-core", + "status": "Synced" + }, + { + "kind": "ConfigMap", + "name": "actcore-ops-service-inventory", + "namespace": "activity-core", + "status": "Synced" + }, + { + "kind": "ConfigMap", + "name": "actcore-report-schemas", + "namespace": "activity-core", + "status": "Synced" + }, + { + "kind": "ConfigMap", + "name": "actcore-runtime-config", + "namespace": "activity-core", + "status": "Synced" + }, + { + "kind": "Service", + "name": "actcore-api", + "namespace": "activity-core", + "status": "Synced" + }, + { + "kind": "Service", + "name": "actcore-worker-metrics", + "namespace": "activity-core", + "status": "Synced" + }, + { + "kind": "Deployment", + "name": "actcore-api", + "namespace": "activity-core", + "status": "Synced" + }, + { + "kind": "Deployment", + "name": "actcore-event-router", + "namespace": "activity-core", + "status": "Synced" + }, + { + "kind": "Deployment", + "name": "actcore-worker", + "namespace": "activity-core", + "status": "Synced" + } + ], + "deployments": [ + { + "name": "actcore-api", + "images": [ + "forgejo.coulomb.social/coulomb/activity-core@sha256:713bddad10a41950f446100a8b370fca8ccdd0b8969cccae751e3870c9c63ccd" + ], + "generation": 50, + "observed_generation": 50, + "ready": 1, + "updated": 1 + }, + { + "name": "actcore-worker", + "images": [ + "forgejo.coulomb.social/coulomb/activity-core@sha256:77244c3b6977a84888746d1fde5ec9fb5ed576f29df0e6dab2462e6f2ab0e0d7" + ], + "generation": 61, + "observed_generation": 61, + "ready": 1, + "updated": 1 + }, + { + "name": "actcore-event-router", + "images": [ + "forgejo.coulomb.social/coulomb/activity-core@sha256:cd4e924c2809f0d1d319e53a9ddd20db2e88a1b543d62e6442702c184b7842f4" + ], + "generation": 33, + "observed_generation": 33, + "ready": 1, + "updated": 1 + } + ], + "ci": { + "state": "success", + "image_run": "https://forgejo.coulomb.social/coulomb/activity-core/actions/runs/308", + "smoke_run": "https://forgejo.coulomb.social/coulomb/activity-core/actions/runs/307", + "checks": "pinned frontend projection; release guard; frontend resolver; external definitions; report sink" + }, + "scheduled_smoke": { + "activity_id": "99f02c4c-161e-515d-926d-9e5d11d8411e", + "activity_name": "Frontend Patterns Daily Review", + "mode": "live", + "recreate_recurring": false, + "recurring_schedule_id": "activity-schedule-99f02c4c-161e-515d-926d-9e5d11d8411e", + "smoke_fire_at": "2026-09-27T13:39:09.975262+00:00", + "smoke_schedule_id": "activity-smoke-test-99f02c4c-161e-515d-926d-9e5d11d8411e", + "smoke_workflow_id_prefix": "activity-99f02c4c-161e-515d-926d-9e5d11d8411e:smoke-20260927T133909Z", + "wait_result": { + "result": { + "run_id": "c81f656f-405e-5773-b4d2-73b8110ee55f", + "tasks_spawned": 0 + }, + "run_id": "01a0e317-48a8-72d8-98d9-e44cdedb9999", + "status": "completed", + "workflow_id": "activity-99f02c4c-161e-515d-926d-9e5d11d8411e:smoke-20260927T133909Z-2026-09-27T13:39:09Z" + } + }, + "schedules": { + "daily": "0 2 * * *", + "weekly": "0 3 * * 2", + "monthly": "0 9 1 * *", + "timezone": "Europe/Berlin", + "all_enabled_after_release": true + }, + "retention": { + "baseline_tags": [ + "baseline-api-713bddad10a4", + "baseline-worker-77244c3b6977", + "baseline-router-cd4e924c2809" + ], + "union_sha256": "f0560f5a5e0c8c52154fb5e4d1b04838191d51fcf026df49703d5f3503f61fda", + "protection_verified_with_owner_parser": true, + "gap": "digest-only refs are not mapped to registry versions; RPF-WP-0048-T03 retains general fix" + }, + "soak": { + "healthy_start": "2026-09-27T13:38:21Z", + "earliest_eligible": "2026-09-28T13:38:21Z", + "completed": false, + "requires": "continuous healthy observation, not elapsed time alone" + }, + "automated_sync": false, + "pruning": false, + "unattended_release_identity_admitted": false, + "failed_health_rollback_proven": false, + "remaining": [ + "24-hour healthy observation", + "authenticated CI/reviewer/health receipts and narrowly admitted release identity", + "automatic failed-health rollback proof", + "GLAS-WP-0012/HFACT-WP-0001 executor proof for pattern editing" + ] +} diff --git a/workplans/FEP-WP-0008-use-driven-improvement.md b/workplans/FEP-WP-0008-use-driven-improvement.md index 4740a84..e3af417 100644 --- a/workplans/FEP-WP-0008-use-driven-improvement.md +++ b/workplans/FEP-WP-0008-use-driven-improvement.md @@ -165,3 +165,17 @@ ACTIVITY-WP-0041 is the live follow-up for eliminating deployment exceptions through GitOps adoption and standing bounded release authority. The reference still has zero enrolled consumers, and no pattern-editing executor is enabled. T01/T02/T03 stay in progress against their original end-to-end acceptance. + +## Deployment exception follow-up implemented — 2026-09-27 + +ACTIVITY-WP-0041-T01 is complete: tested CI publication, pinned frontend projection, +registry digest deployment and readback. RPF-WP-0048-T01 adopted nine runtime +resources into scoped ArgoCD. All deployments are ready, all three definitions +remain enabled, and the post-release scheduled smoke passed. See +[release evidence](../docs/evidence/2026-09-27-activity-core-gitops.json). + +Healthy observation runs from 2026-09-27T13:38:21Z for at least 24 hours. Automated +sync remains off; authenticated receipt/identity and failed-health rollback proof +remain in ACTIVITY-WP-0041-T03. Digest-aware registry retention is tracked by +RPF-WP-0048-T03; current baseline tags are protected. Reporting is operational; +consumer enrollment and admitted pattern-editing execution remain unfinished.