Prepare authenticated lifecycle runtime and production release candidate
Assistant: codex Assistant-Model: gpt-6-astra Assistant-Session: 01a10780-6d41-7952-9718-dfbc1f41236f
This commit is contained in:
parent
f3b71b1521
commit
4f546ae3b1
41 changed files with 2598 additions and 52 deletions
|
|
@ -119,6 +119,7 @@ class Runtime:
|
|||
controller: ReviewController
|
||||
pump: AuditPump
|
||||
lifecycle: object | None = None
|
||||
workload: object | None = None
|
||||
|
||||
@classmethod
|
||||
def from_file(cls, filename):
|
||||
|
|
@ -129,7 +130,7 @@ class Runtime:
|
|||
or info.st_size > 16384):
|
||||
raise ValueError("runtime configuration must be an owned private 0600 file")
|
||||
data = json.loads(path.read_text())
|
||||
if ((set(data) - {"ordinary_approval_ids", "intake_delivery", "lifecycle_policy", "lifecycle_delivery"}) != {"schema", "evidence_db", "policy", "approval_origin", "audit"}
|
||||
if ((set(data) - {"ordinary_approval_ids", "intake_delivery", "lifecycle_policy", "lifecycle_delivery", "workload_api", "intake_attributes"}) != {"schema", "evidence_db", "policy", "approval_origin", "audit"}
|
||||
or data["schema"] != "informed-decision.review-runtime.v1"
|
||||
or set(data["policy"]) != {"origin", "package", "version", "package_digest", "caller_token_file"}
|
||||
or set(data["audit"]) != {"origin", "sender_token_file"}):
|
||||
|
|
@ -137,6 +138,9 @@ class Runtime:
|
|||
lifecycle_delivery = data.get("lifecycle_delivery", False)
|
||||
if type(lifecycle_delivery) is not bool:
|
||||
raise ValueError("invalid lifecycle delivery setting")
|
||||
intake_attributes = data.get('intake_attributes', False)
|
||||
if type(intake_attributes) is not bool:
|
||||
raise ValueError('invalid intake attributes setting')
|
||||
ordinary = ordinary_review_ids(data.get("ordinary_approval_ids", []))
|
||||
if not Path(data["evidence_db"]).is_absolute():
|
||||
raise ValueError("absolute evidence database path required")
|
||||
|
|
@ -168,7 +172,8 @@ class Runtime:
|
|||
package_digest=configuration["package_digest"], allow_internal_http=True)
|
||||
store = Store(data["evidence_db"])
|
||||
controller = ReviewController(store, client, lambda session: ApprovalHTTPClient(
|
||||
approval_origin, session, allow_internal_http=True, ordinary_approval_ids=tuple(ordinary)))
|
||||
approval_origin, session, allow_internal_http=True, ordinary_approval_ids=tuple(ordinary)),
|
||||
intake_attributes=intake_attributes)
|
||||
worker = None
|
||||
if hub:
|
||||
from .intake_delivery import IntakeDeliveryWorker
|
||||
|
|
@ -179,5 +184,9 @@ class Runtime:
|
|||
from .lifecycle import LifecycleRepository
|
||||
from .lifecycle_service import LifecycleService
|
||||
lifecycle = LifecycleService(LifecycleRepository(store), lifecycle_policy)
|
||||
workload = None
|
||||
if 'workload_api' in data:
|
||||
from .workload import compose_workload
|
||||
workload = compose_workload(data['workload_api'], store, lifecycle, approval_origin, token_file)
|
||||
return cls(controller, AuditPump(store, sink, intake_worker=worker,
|
||||
lifecycle_delivery=lifecycle_delivery), lifecycle)
|
||||
lifecycle_delivery=lifecycle_delivery), lifecycle, workload)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue