From 80dc3e5d8581124281ee8b8f3915dfe6c7abba1e Mon Sep 17 00:00:00 2001 From: tegwick Date: Mon, 28 Sep 2026 11:31:52 +0200 Subject: [PATCH] Verify live reporting repair and monthly review readiness Assistant: codex Assistant-Model: gpt-6-astra Assistant-Session: 01a0e738-9e15-7600-87e6-90dec3a7beef --- SCOPE.md | 3 +- docs/ActivityCoreLoop.md | 34 ++++++++-- .../2026-09-28-monthly-repair-smoke.json | 19 ++++++ docs/evidence/2026-09-28-reporting-live.json | 68 ++++++++++++++++++- ...-09-28-reporting-postrepair-schedules.json | 35 ++++++++++ .../evidence/2026-09-28-reporting-repair.json | 11 ++- .../2026-09-28-weekly-repair-smoke.json | 19 ++++++ feedback/monthly-review-input.json | 4 +- integrations/activity-core/README.md | 10 ++- integrations/activity-core/check_runtime.py | 7 ++ .../FEP-WP-0008-use-driven-improvement.md | 23 +++++++ 11 files changed, 217 insertions(+), 16 deletions(-) create mode 100644 docs/evidence/2026-09-28-monthly-repair-smoke.json create mode 100644 docs/evidence/2026-09-28-reporting-postrepair-schedules.json create mode 100644 docs/evidence/2026-09-28-weekly-repair-smoke.json create mode 100644 integrations/activity-core/check_runtime.py diff --git a/SCOPE.md b/SCOPE.md index d28f70f..01aa99a 100644 --- a/SCOPE.md +++ b/SCOPE.md @@ -103,7 +103,8 @@ improvement. It owns discovery, instrumentation and execution integration; month human review owns operating-policy decisions. The capability entry is prepared; automatic collection and three activity-core reporting schedules passed scheduled smoke checks; the first natural daily run failed after a worker image change removed -the domain resolver. A tested repair is staged pending release authorization. +the domain resolver. The approved grant-preserving repair is deployed and all three +scheduled sink smokes pass; natural recurrence and October 1 evidence remain due. Hosted consumer integration and admitted pattern-editing execution remain blocked; there are no enrolled consumers yet. This operational loop can improve draft guidance without claiming M1/M2/M3 or diff --git a/docs/ActivityCoreLoop.md b/docs/ActivityCoreLoop.md index 094047a..834229c 100644 --- a/docs/ActivityCoreLoop.md +++ b/docs/ActivityCoreLoop.md @@ -1,9 +1,10 @@ # Activity-core receipt loop -Current diagnosis (2026-09-28): the first natural daily run fired but failed because -the replacement worker image lacks the domain resolver. A tested repair image is -published and awaits the scoped attended-release exception; prior smoke success -is historical. See [repair evidence](evidence/2026-09-28-reporting-repair.json). +Current state (2026-09-28): repaired through the user-approved, scoped GitOps +exception. The grant-aware worker now includes the domain resolver; daily, weekly +and monthly scheduled smoke runs produced validated receipts. The first natural +daily failure remains historical evidence; subsequent natural cadence and the +October 1 packet remain due. See [live proof](evidence/2026-09-28-reporting-live.json). FEP-WP-0008 owns this integration. The initial delivery is deterministic collection and reporting. Automatic investigation and publication are a separate, outstanding @@ -170,3 +171,28 @@ Hosted discovery is still unregistered (404) and its routed write credential is unavailable to the current operator session. Public source publication passed. The [consumer hook](../feedback/ConsumerIntegration.md) is prepared, but no real consumer was fabricated or enrolled. These obligations remain WP-0008 T01/T02. + + +## Approved repair completed — 2026-09-28 + +User decision `abdea390-1039-4da1-b129-33aad00b4396` approved the exact attended +repair. Activity Core source `4bd07a4` and platform pin `986b002` were pushed; +ArgoCD root synced only the activity-core Application, then the child synced only +its worker Deployment. ArgoCD is Synced/Healthy at the intended revision. Live +Python source hashes, resolver registry and grant identity match the tested image. +All three Temporal scheduled smokes completed with no tasks or model calls, and +all three State Hub receipts validate. Temporary smoke schedules are removed; +recurring schedules remain active. [Live evidence](evidence/2026-09-28-reporting-live.json) +and [next fires](evidence/2026-09-28-reporting-postrepair-schedules.json). + +The monthly sink now carries review health, decisions/defaults and measured effort +with unknown-cycle counts. Today's actual monthly smoke covers August; the separately +labeled October fixture checks September data. October 1 09:00 Berlin remains the +first natural monthly packet, not completed early. Health fields are explicitly dated +owner snapshots, not independently sampled live attestations. The current input is +[versioned here](../feedback/monthly-review-input.json); stale snapshots are flagged. + +ACTIVITY-WP-0040 T02 retains natural cadence evidence; ACTIVITY-WP-0041 and +RPF-WP-0048 retain continuous-health observation and standing release authority. +Their old September 27 observation interval is invalidated by the reporting failure. +The scoped exception does not enable automatic pattern editing or routine releases. diff --git a/docs/evidence/2026-09-28-monthly-repair-smoke.json b/docs/evidence/2026-09-28-monthly-repair-smoke.json new file mode 100644 index 0000000..b0e4b7a --- /dev/null +++ b/docs/evidence/2026-09-28-monthly-repair-smoke.json @@ -0,0 +1,19 @@ +{ + "activity_id": "92e514a6-aeb8-5e22-9292-c62dd26dd757", + "activity_name": "Frontend Patterns Monthly Review", + "mode": "live", + "recreate_recurring": false, + "recurring_schedule_id": "activity-schedule-92e514a6-aeb8-5e22-9292-c62dd26dd757", + "smoke_fire_at": "2026-09-28T09:26:26.213347+00:00", + "smoke_schedule_id": "activity-smoke-test-92e514a6-aeb8-5e22-9292-c62dd26dd757", + "smoke_workflow_id_prefix": "activity-92e514a6-aeb8-5e22-9292-c62dd26dd757:smoke-20260928T092626Z", + "wait_result": { + "result": { + "run_id": "6bbcc7a1-0407-59af-a2f4-2437ce8c4f62", + "tasks_spawned": 0 + }, + "run_id": "01a0e756-4619-7898-a53e-8f26940dafe1", + "status": "completed", + "workflow_id": "activity-92e514a6-aeb8-5e22-9292-c62dd26dd757:smoke-20260928T092626Z-2026-09-28T09:26:26Z" + } +} diff --git a/docs/evidence/2026-09-28-reporting-live.json b/docs/evidence/2026-09-28-reporting-live.json index c121794..3d18182 100644 --- a/docs/evidence/2026-09-28-reporting-live.json +++ b/docs/evidence/2026-09-28-reporting-live.json @@ -1,5 +1,5 @@ { - "checked_at": "2026-09-28T09:25:41.617137+00:00", + "checked_at": "2026-09-28T09:27:28.340970+00:00", "authorization_decision": "abdea390-1039-4da1-b129-33aad00b4396", "activity_source_revision": "4bd07a4f44f38bb4f27cfb381cfe53d555c2c6fe", "platform_source_revision": "986b0023aaeca961dfcc5be1c7c5ec796d8f2d0a", @@ -40,8 +40,70 @@ "created_at": "2026-09-28T09:25:09.785868Z", "workstream_id": null }, - "weekly_monthly_verification": "pending at this checkpoint", + "weekly_monthly_verification": "passed; live report-only Temporal smokes, zero spawned tasks/model calls", "natural_daily_run_repaired_retroactively": false, "unattended_pattern_executor": false, - "healthy_observation": "Prior interval invalidated; post-repair observation may begin after complete smoke proof, not backdated." + "healthy_observation": "All three post-repair sink smokes passed by 2026-09-28T09:26:27.806413Z; continuous healthy observation and admitted release identity remain unproven.", + "weekly_receipt": { + "workplan_id": null, + "id": "d2d87cae-725f-4f85-b546-94a6506e152c", + "topic_id": "fe2aaa78-9c20-4feb-b3d2-4fe0529572a3", + "task_id": null, + "decision_id": null, + "event_type": "fep_improvement_review", + "summary": "Deterministic report for instruction frontend-patterns-weekly-report.", + "detail": { + "report": { + "status": "deterministic", + "summary": "Deterministic report for instruction frontend-patterns-weekly-report.", + "deterministic": true, + "digest_preview": "{\"decisions\":{},\"duplicates\":0,\"eligible_tasks\":null,\"errors\":{},\"execution_ready\":false,\"executor_dependency\":\"GLAS-WP-0012 / HFACT-WP-0001\",\"generated_at\":\"2026-09-28T09:25:53.235527+00:00\",\"instrumented_repositories\":0,\"limits\":[\"Producer outcomes are not independently verified.\",\"No admitted budget-enforced repository executor; automatic edits disabled.\",\"Missing consumer instrumentation means coverage is unknown.\"],\"mode\":\"weekly\",\"model_calls\":0,\"outcomes\":{},\"real_uses\":0,\"receipt_events\":0,\"repo\":\"frontend-patterns\",\"signals\":[],\"source_revisions\":[\"frontend-patterns@a18d83f74aa8cf0119125793ff24e9f10ff1b630\"],\"status\":\"no_consumers\",\"summary\":\"Frontend patterns weekly: no_consumers; 0 real uses, 0 unverified outcome signals. Automatic edits disabled.\",\"synthetic_uses\":0,\"unselected_signals\":0,\"workplan\":\"FEP-WP-0008\"}" + }, + "activity_id": "562005f8-ef43-5a9d-83e2-f09e00e62b81", + "scheduled_for": "2026-09-28T09:25:53.823131+00:00", + "instruction_id": "frontend-patterns-weekly-report", + "review_advisory": false, + "output_validated": true, + "validation_error": null, + "review_gate_applied": false, + "activity_core_run_id": "dd1ba4b1-bcbc-5c77-9d6a-270f55bb3416", + "llm_response_metadata": null + }, + "author": "activity-core", + "session_id": null, + "created_at": "2026-09-28T09:25:53.587534Z", + "workstream_id": null + }, + "monthly_receipt": { + "workplan_id": null, + "id": "f4fd73bf-ab4e-41c0-af9c-f8bf8759aa99", + "topic_id": "fe2aaa78-9c20-4feb-b3d2-4fe0529572a3", + "task_id": null, + "decision_id": null, + "event_type": "fep_monthly_review", + "summary": "Deterministic report for instruction frontend-patterns-monthly-report.", + "detail": { + "report": { + "status": "deterministic", + "summary": "Deterministic report for instruction frontend-patterns-monthly-report.", + "deterministic": true, + "digest_preview": "{\"decisions\":{},\"duplicates\":0,\"eligible_tasks\":null,\"errors\":{},\"execution_ready\":false,\"executor_dependency\":\"GLAS-WP-0012 / HFACT-WP-0001\",\"generated_at\":\"2026-09-28T09:26:26.428736+00:00\",\"instrumented_repositories\":0,\"limits\":[\"Producer outcomes are not independently verified.\",\"No admitted budget-enforced repository executor; automatic edits disabled.\",\"Missing consumer instrumentation means coverage is unknown.\"],\"mode\":\"monthly\",\"model_calls\":0,\"outcomes\":{},\"real_uses\":0,\"receipt_events\":0,\"repo\":\"frontend-patterns\",\"review\":{\"as_of\":\"2026-09-28T09:25:41.617137+00:00\",\"basis\":\"owner snapshot; not live attestation\",\"decisions\":[],\"default\":\"Retain current policy/budgets; no new authority or maturity claim.\",\"evidence_ref\":\"docs/evidence/2026-09-28-reporting-live.json\",\"health\":{\"collection\":\"daily scheduled smoke passed; natural repeat pending\",\"executor\":\"not admitted\",\"publication\":\"repair deployed; 0.1 reference unchanged\",\"rollback\":\"automatic proof pending\",\"schedule\":\"enabled; failed natural run, repair smoke passed\",\"verification\":\"no consumer outcomes verified\"},\"measured_effort\":{\"cost_usd\":{\"known\":0,\"unknown_cycles\":0},\"execution_minutes\":{\"known\":0,\"unknown_cycles\":0},\"reported_tokens\":{\"known\":0,\"unknown_cycles\":0},\"research_minutes\":{\"known\":0,\"unknown_cycles\":0}},\"research_cycles\":0,\"stale\":false},\"signals\":[],\"source_revisions\":[\"frontend-patterns@58e8ef675e9ba5a0de4e9d5ff8a43e8ea1e4c24f\"],\"status\":\"no_consumers\",\"summary\":\"Frontend patterns monthly: no_consumers; 0 real uses, 0 unverified outcome signals. Automatic edits disabled.\",\"synthetic_uses\":0,\"unselected_signals\":0,\"window\":{\"end_exclusive\":\"2026-09-01T00:00:00+02:00\",\"start\":\"2026-08-01T00:00:00+02:00\"},\"workplan\":\"FEP-WP-0008\"}" + }, + "activity_id": "92e514a6-aeb8-5e22-9292-c62dd26dd757", + "scheduled_for": "2026-09-28T09:26:26.213347+00:00", + "instruction_id": "frontend-patterns-monthly-report", + "review_advisory": false, + "output_validated": true, + "validation_error": null, + "review_gate_applied": false, + "activity_core_run_id": "6bbcc7a1-0407-59af-a2f4-2437ce8c4f62", + "llm_response_metadata": null + }, + "author": "activity-core", + "session_id": null, + "created_at": "2026-09-28T09:26:27.806413Z", + "workstream_id": null + }, + "recurring_schedules_preserved": true, + "smoke_schedules_removed": true } diff --git a/docs/evidence/2026-09-28-reporting-postrepair-schedules.json b/docs/evidence/2026-09-28-reporting-postrepair-schedules.json new file mode 100644 index 0000000..5c99c1a --- /dev/null +++ b/docs/evidence/2026-09-28-reporting-postrepair-schedules.json @@ -0,0 +1,35 @@ +[ + { + "mode": "daily", + "schedule_id": "activity-schedule-99f02c4c-161e-515d-926d-9e5d11d8411e", + "paused": false, + "next_fires": [ + "2026-09-29T00:00:00+00:00", + "2026-09-30T00:00:00+00:00", + "2026-10-01T00:00:00+00:00" + ], + "smoke_schedule_removed": true + }, + { + "mode": "weekly", + "schedule_id": "activity-schedule-562005f8-ef43-5a9d-83e2-f09e00e62b81", + "paused": false, + "next_fires": [ + "2026-09-29T01:00:00+00:00", + "2026-10-06T01:00:00+00:00", + "2026-10-13T01:00:00+00:00" + ], + "smoke_schedule_removed": true + }, + { + "mode": "monthly", + "schedule_id": "activity-schedule-92e514a6-aeb8-5e22-9292-c62dd26dd757", + "paused": false, + "next_fires": [ + "2026-10-01T07:00:00+00:00", + "2026-11-01T08:00:00+00:00", + "2026-12-01T08:00:00+00:00" + ], + "smoke_schedule_removed": true + } +] diff --git a/docs/evidence/2026-09-28-reporting-repair.json b/docs/evidence/2026-09-28-reporting-repair.json index df85ed1..dbd3f21 100644 --- a/docs/evidence/2026-09-28-reporting-repair.json +++ b/docs/evidence/2026-09-28-reporting-repair.json @@ -1,5 +1,5 @@ { - "status": "approved_candidate_not_yet_deployed", + "status": "deployed_verified", "base_image": "forgejo.coulomb.social/coulomb/activity-core@sha256:713bddad10a41950f446100a8b370fca8ccdd0b8969cccae751e3870c9c63ccd", "candidate_image": "forgejo.coulomb.social/coulomb/activity-core@sha256:afd8a7af73132becba432e7b315d70f88d66676020169d5d8811641304136437", "upstream_source_revision": "428f2d71b0f5ade11457e16d7b6341f571f6735f", @@ -14,12 +14,17 @@ "frontend-patterns" ], "monthly_fixture_ref": "docs/evidence/2026-09-28-monthly-packet-fixture.json", - "production_mutation": false, + "production_mutation": true, "deployment_gate": "Existing 24-hour healthy observation invalidated by required-context failure; attended exact repair exception or admitted owner release lane required.", "gitops_tests_passed": 17, "server_dry_run": "passed; nine existing managed resources", "registry_digest_readback": true, "worker_image_patch": "integrations/activity-core/worker-image.patch", "rollback_revision": "428f2d71b0f5ade11457e16d7b6341f571f6735f", - "authorization_decision": "abdea390-1039-4da1-b129-33aad00b4396" + "authorization_decision": "abdea390-1039-4da1-b129-33aad00b4396", + "live_evidence_ref": "docs/evidence/2026-09-28-reporting-live.json", + "base_source_manifest_sha256": "5ebffd3831fac0269c89ac76ca1badb94ae6228ea8980b8d09480d81d0d5af59", + "candidate_source_manifest_sha256": "b00897cc73bb56137d7569e57b39b341cc99aa1e7630d3d0862b56cf2e952a7d", + "live_source_manifest_sha256": "b00897cc73bb56137d7569e57b39b341cc99aa1e7630d3d0862b56cf2e952a7d", + "runtime_probe": "integrations/activity-core/check_runtime.py" } diff --git a/docs/evidence/2026-09-28-weekly-repair-smoke.json b/docs/evidence/2026-09-28-weekly-repair-smoke.json new file mode 100644 index 0000000..f81b35c --- /dev/null +++ b/docs/evidence/2026-09-28-weekly-repair-smoke.json @@ -0,0 +1,19 @@ +{ + "activity_id": "562005f8-ef43-5a9d-83e2-f09e00e62b81", + "activity_name": "Frontend Patterns Weekly Review", + "mode": "live", + "recreate_recurring": false, + "recurring_schedule_id": "activity-schedule-562005f8-ef43-5a9d-83e2-f09e00e62b81", + "smoke_fire_at": "2026-09-28T09:25:53.823131+00:00", + "smoke_schedule_id": "activity-smoke-test-562005f8-ef43-5a9d-83e2-f09e00e62b81", + "smoke_workflow_id_prefix": "activity-562005f8-ef43-5a9d-83e2-f09e00e62b81:smoke-20260928T092553Z", + "wait_result": { + "result": { + "run_id": "dd1ba4b1-bcbc-5c77-9d6a-270f55bb3416", + "tasks_spawned": 0 + }, + "run_id": "01a0e755-c514-71d8-88f1-889f028073d0", + "status": "completed", + "workflow_id": "activity-562005f8-ef43-5a9d-83e2-f09e00e62b81:smoke-20260928T092553Z-2026-09-28T09:25:53Z" + } +} diff --git a/feedback/monthly-review-input.json b/feedback/monthly-review-input.json index 28e9135..659d462 100644 --- a/feedback/monthly-review-input.json +++ b/feedback/monthly-review-input.json @@ -1,9 +1,9 @@ { "schema_version": 1, - "as_of": "2026-09-28T09:25:41.617137+00:00", + "as_of": "2026-09-28T09:30:25.018209+00:00", "health": { "schedule": "enabled; failed natural run, repair smoke passed", - "collection": "daily scheduled smoke passed; natural repeat pending", + "collection": "three scheduled sink smokes passed; natural cadence pending", "verification": "no consumer outcomes verified", "publication": "repair deployed; 0.1 reference unchanged", "rollback": "automatic proof pending", diff --git a/integrations/activity-core/README.md b/integrations/activity-core/README.md index ac28fde..8a1ea0a 100644 --- a/integrations/activity-core/README.md +++ b/integrations/activity-core/README.md @@ -24,6 +24,9 @@ The isolated checkout needs the owner's existing locked development environment. The Docker build itself needs no new dependency installation: it extends the pinned runtime and proves resolver registration plus typed grant support during construction. The review compares all Python source hashes against the base, not only image labels. +Run `check_runtime.py` with the image’s Python (via stdin) to capture those hashes, +registered resolver names and a synthetic typed-grant identity; it performs no network +requests or application mutations. The monthly extension reads this repository's `feedback/monthly-review-input.json`, its cited evidence and learning ledger at the same resolved Git revision. It reports @@ -49,6 +52,7 @@ rollout. Do not retry the failed historical run as though it had succeeded natur The owner's [release runbook](../../../activity-core/docs/gitops-release.md) requires 24 healthy hours and authenticated release authority. The domain failure invalidates -continuous-health claims; no admitted routine identity exists. An exact attended repair -exception is required before production promotion. Staging this artifact is not that -exception. No access/budget/policy expansion is part of the repair. +continuous-health claims; no admitted routine identity exists. The user granted exact attended repair +exception `abdea390-1039-4da1-b129-33aad00b4396`; promotion and all three live +scheduled sink smokes subsequently passed. See [live proof](../../docs/evidence/2026-09-28-reporting-live.json). +That exception does not establish standing release authority. No access/budget/policy expansion is part of the repair. diff --git a/integrations/activity-core/check_runtime.py b/integrations/activity-core/check_runtime.py new file mode 100644 index 0000000..69e20af --- /dev/null +++ b/integrations/activity-core/check_runtime.py @@ -0,0 +1,7 @@ +import hashlib,json +from pathlib import Path +import activity_core.context_resolvers +from activity_core.context_resolvers.base import CONTEXT_RESOLVER_REGISTRY +from activity_core.repository_grant import RepositoryGrant +root=Path('/app/src/activity_core') +print(json.dumps({'registered':sorted(CONTEXT_RESOLVER_REGISTRY),'source_hashes':{str(p.relative_to(root)):hashlib.sha256(p.read_bytes()).hexdigest() for p in root.rglob('*.py')},'grant_id':RepositoryGrant.model_validate({'version':'1','allowed_paths':['docs/'],'commit_count':{'min':1,'max':1},'publish':False}).grant_id})) diff --git a/workplans/FEP-WP-0008-use-driven-improvement.md b/workplans/FEP-WP-0008-use-driven-improvement.md index 0d1300d..9bb8595 100644 --- a/workplans/FEP-WP-0008-use-driven-improvement.md +++ b/workplans/FEP-WP-0008-use-driven-improvement.md @@ -244,3 +244,26 @@ or pattern-editing authority was introduced. The user subsequently approved the exact attended worker repair; State Hub decision `abdea390-1039-4da1-b129-33aad00b4396`. Promotion and post-rollout proof are now authorized; this is not standing authority or approval to restore the older grant-unaware image. + + +## Scoped worker repair verified — 2026-09-28 + +The approved repair is deployed: activity-core `4bd07a4`, platform pin `986b002`, +exact candidate digest `afd8a7af…`. ArgoCD root and child selectively synchronized +the Application pin and worker Deployment only. Live hashes preserve all other +Python source and the typed grant identity. Daily/weekly/monthly scheduled smokes +completed with validated State Hub receipts and zero model calls/spawned tasks. +[Live evidence](../docs/evidence/2026-09-28-reporting-live.json). + +All three recurring schedules remain enabled; temporary smoke schedules are gone. +The monthly sink now includes dated owner-snapshot health, bounded decision/default +fields and monthly measured effort with unknown counts. Today's monthly smoke covers +August; the future-clock October fixture covers September. The actual October 1 +packet and subsequent natural cadence are still required, owned with ACTIVITY-WP-0040 +T02. Healthy pod status did not prevent the missing-resolver regression; old observation +claims are invalidated. Standing authority remains ACTIVITY-WP-0041/RPF-WP-0048 work. + +T03 remains wait for real unassisted improvement, admitted executor, automatic +publication/rollback and natural monthly evidence. T01/T02 remain wait for hosted +registration access and actual eligible consumer integration/outcomes. No new tasks +or workplans, no manufactured use, and no new pattern-execution grant.