Connect lifecycle revisions to protected human review

Assistant: codex
Assistant-Model: gpt-6-astra
Assistant-Session: 01a10780-6d41-7952-9718-dfbc1f41236f
This commit is contained in:
tegwick 2026-10-04 20:33:24 +02:00
parent 0e79d69e27
commit f3b71b1521
16 changed files with 649 additions and 23 deletions

View file

@ -90,6 +90,7 @@ class LifecycleService:
"memo_version": payload.get("memo").version if payload.get("memo") is not None else payload.get("version"),
"record": state,
**({"publication_audience": payload["audience"]} if operation == "publish" else {}),
**({"review_routing": payload["options"]} if operation == "request_review" else {}),
"command_digest": "sha256:" + hashlib.sha256(command).hexdigest()},
"policy_version": self.policy.version}
observation = self.policy.check(request)
@ -167,6 +168,20 @@ class LifecycleService:
current()
return result
def request_review(self, caller, memo_id, version, *, options, key):
from .lifecycle_review import prepare
options = json.loads(dumps(options))
_, guard = self._authorize(caller, memo_id, "request_review",
{"version": version, "options": options, "key": key})
return prepare(self.repository, caller.attribution, memo_id, version, options, key=key, guard=guard)
def outcomes(self, caller, memo_id, version):
from .lifecycle_review import outcomes
current, _ = self._authorize(caller, memo_id, "outcomes", {"version": version})
result = outcomes(self.repository, caller.attribution.tenant, memo_id, version)
current()
return result
def search(self, caller, *, query="", cursor=None):
self._caller(caller)
if not isinstance(query, str) or len(query) > 200: