Verify live reporting repair and monthly review readiness

Assistant: codex
Assistant-Model: gpt-6-astra
Assistant-Session: 01a0e738-9e15-7600-87e6-90dec3a7beef
This commit is contained in:
tegwick 2026-09-28 11:31:52 +02:00
parent 58e8ef675e
commit 80dc3e5d85
11 changed files with 217 additions and 16 deletions

View file

@ -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.

View file

@ -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}))